Zhengshuai PENG

A Small Developer

Lovian Blog

27 Jul 2016

[JAVA] Java 中的 IO流 Stream

IO stream in Java I. IO 流 IO流: 用来进行设备间的数据传输问题 分类 按流向: 输入流: 数据流入程序,即读取数据 输出流: 数据流出程序,即写出数据 按数据类型:(同时他们分别也可以是输入流或者输出流) 字节流:如果不知道如何选择,那么就用字节流 字符流:为了方便操作文本数据; 如果操作的数据是文本数据,就用字符流 II....

24 Jul 2016

[JAVA] Java 中的 Map

Map in Java I. Map java.util.Map<K,V>: Map 是一个顶层的接口,不是 Collection 的子接口,用来存储键值对 (key - value) 将键 Key 映射到值的对象,一个映射不能包含重复的值,每个键最多只能映射到一个值 K: 此映射所维护的键 key 的类型...

24 Jul 2016

[JAVA] Java 中的 IO 之 File

IO in Java I. File 1. File类 java.io.File: 文件和目录(文件夹)路径名的抽象形式表示方式 如果我们想实现 IO 的操作,就必须知道硬盘上文件的表示形式,所以 Java 就提供了一个类 File 供我们使用 2. File类的构造方法 public File(String...

24 Jul 2016

[JAVA] Java 中的异常 Exception

Exception in Java I. 异常的由来 异常, Exception, 就是程序出现了不正常的情况。程序的异常,有下面几种 程序的异常: java.lang.Throwable: 是所有异常类的父类 错误:严重问题,Error 异常:问题, Exception 编译期的问题: 非 RuntimeException 的异常 运行期的问题: RuntimeException...

20 Jul 2016

[JAVA] Java 中的 Set

Set in Java I.Set 接口 java.util.Set: Set 接口是 Collection 接口的子接口,用法和 Collection 完全相同 Set 的某些实现类中的元素是 无序的, 比如HashSet (无指存储和取出的元素顺序不一致) Set 中元素 不可重复,...

20 Jul 2016

[JAVA] Java 中的可变参数的应用

可变参数 有时候我们写一个方法的时候,参数的数目可能是不确定的,比如 sum 函数, 可能我们需要计算两个数之和,也有可能要计算三个数之和,也有可能是好多个。如果我们重写 sum 方法去匹配多种参数的个数的化,这样是很麻烦的。于是 Java 提供了一个特性,可变参数。 我们直接来看代码: package org.lovian.multiargs; /* * 可变参数:定义方法的时候,不知道定义多少个参数 * 格式: * 修饰符 返回值类型...

20 Jul 2016

[JAVA] Java 中的泛型 Generics

Java 中的泛型 Generics I. 泛型的由来 在泛型出现之前,我们是用 Object 类来代表任意类型。在使用对象的时候存在一个向下转型的问题,所以就会存在转型失败的隐患。而这个隐患在编译的时候,是检查不出来的,所以就存在了安全问题。所以在 JDK5之后,Java 提供了泛型来解决这个问题 II. 泛型 泛型: 一种特殊的类型,把类型明确的工作推迟到到创建对象的时候或者使用方法的时候才去明确的类型。 也被称为参数化类型,就是说把类型当作参数一样传递 格式: <数据类型>, 此处的数据类型只能是引用类型,可以是 T, E,...

19 Jul 2016

[JAVA] Java 中的 列表 List

List In Java I. List 接口 java.util.List: List 接口是 Collection 接口的子接口,用法和 Collection 大致相同 List 中元素 有序 (有序指存储和取出的元素顺序一致) List 中元素 可重复...

19 Jul 2016

[Date Structure] 数据结构简介

数据结构简介 数据结构,是数据的组织方式 I. 栈 stack 特点: 先进后出 FILO first in last out(类似子弹夹) 存储: 压栈,将数据压入栈中,最后压进栈的元素在栈的最上层 取出: 弹栈,将数据从栈中取出,取出栈的最上层的元素,即最后一个压入栈中的元素 图示如下: II. 队列 特点:...

18 Jul 2016

[JAVA] Java 中的集合 Collection 和 迭代器 Itrator

Java 中的集合 Collection 和 迭代器 I. Collection 引用 由于对象数组 (比如 Student[] students = new Student[5]) 在使用的时候,长度是固定不可变的,当我们需要动态的添加更多的对象时,数组是十分不方便的, 所以为了方便多个对象的操作, Java 提供了另一种容器来存储一系列相同的对象,叫做集合, Collection...

17 Jul 2016

Regular Expression 正则表达式的使用

正则表达式的使用 I. 正则表达式 正则表达式(Regex): regular expression, 是指一个用来描述或者匹配一系列复合某个句法规则的字符串的单个字符串。其实就是一种规则,有自己特殊的应用。简而言之,就是复合一定规则的字符串 II. 正则表达式的组成规则 Java 中, 规则字符在 java.util.regex.Pattern 类中 常见的组成规则 字符: x : 表示字符 x...

17 Jul 2016

[JAVA] Java System 类的使用

Java 中 System 类的使用 I. System 类 java.lang.System :System 类包含一些有用的类字段和方法。它不能被实例化。 在 System 类提供的设施中,有标准输入、标准输出和错误输出流;对外部定义的属性和环境变量的访问;加载文件和库的方法;还有快速复制数组的一部分的实用方法。 II. System 类常见方法 public static void gc()...

17 Jul 2016

[JAVA] Java Math 类的使用

Java Math 类的使用 I. Java Math 类 java.lang.Math: Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。是Java提供的一个封装好各种函数的一个类 II. Math 类常用方法 package org.lovian.math; /** * Java Math class...

17 Jul 2016

[JAVA] Java 中的日期与时间

Java 中的日期与时间 I. Date 类 和 Calendar 类 1.Date类 Date 类 java.util.Date: 类 Date 表示特定的瞬间,精确到毫秒 由于 Date 类的格式化和解析字符串 API 不易于实现国际化,所以从...

17 Jul 2016

[JAVA] Java 里的 BigInteger & BigDecimal

Java 中的 BigInteger & BigDecimal I. BigInteger 1.Integer & int 我们直到,在 java 中, Integer 是 int 基本类型的包装类。但是,由于 int 类型在 java...

16 Jul 2016

[JAVA] StringBuffer的使用

Java 中 StringBuffer 的使用 I. StringBuffer StringBuffer 是线程安全的可变字符序列, 一个类似于 String 的字符串缓冲区,但不能修改。在任意时间点上它都包括某种特定的字符序列,但通过某些方法调用可以改变该序列的长度和内容。 所谓线程安全,意思是可以将 StringBuffer 安全的用于多个线程,可以在必要时对这些方法进行同步,从而任意特定实例上的所有操作就像是串行顺序发生的,该顺序和所涉及的每个线程进行的方法调用顺序一致。 II. StringBuffer 和 String 的区别 由于...

16 Jul 2016

[Sort] Selection Sort Java Implementation

选择排序的 java 实现(Selection Sort) I. 选择排序的原理 选择排序: 从 0 索引开始,依次和后面的元素比较,小的往前排,第一次扫描完毕,最小值就出现了最小索引处,然后重复以上步骤。简单点说就是,每一次扫描,都从待排序数组中拿出最小的一个排在最前面,然后排成一个新数组,这个数组就是从小到大排好序的了。 II. Java 代码 package org.lovian.sort; /** * Selection Sort *...

16 Jul 2016

[String] How many subStirngs

How many subStrings Java implenmentation I. Question Given a string s1 and another string substr, count how many substr in...

16 Jul 2016

[Sort] Bubble Sort Java Implementation

冒泡排序的 Java 实现 (Bubble Sort) I. Bubble Sort 原理 冒泡排序: 相邻元素两两比较,如果前一个元素比后一个元素大,则交换。第一次完毕后,最大的元素就出现在最大索引处,同理继续以上步骤,最后可得排好序的数组。 II. Java 代码 package org.lovian.sort; /** * Bubble Sort...

16 Jul 2016

[Search] Binary Search Java Implementation

二分查找法的 Java 实现(Binary Search) I. 二分查找法原理 首先说基本查找,基本查找是从一个无序的数组中,从头到位挨个查找,找到就返回,找不到就返回 -1; 不同于基本查找,基本查找当输入规模非常大的时候,挨个查找效率非常低,所以二分查找这里就是为了解决基本查找效率低下的问题而提出的。 二分查找: 也叫折半查找,首先要将数组排序,然后用待查找元素和待查找数组的中间元素相比较,看待查找元素在左右哪个范围里,然后丢弃掉不需要的那一半,这样,每次查找就相当于少了一半的范围。这样效率有着极大的提升,时间复杂度是 O(log n)。 简而言之,就是和中间值比较大小,缩小一半范围 II. Java 代码实现 package org.lovian.search; /**...