###Object equals方法:public boolean equals(Object obj),是比较对象与给定对象内容是否一致。内容相等取决于业务逻辑需要,可以自行定义比较规则。
直接将Object转为子类是存在风险的,不能保证Object和要比较的对象是同一个类型的,这可能会引起ClassCastException【类造型异常】重写equals时首先是进行安全验证,确保给定的对象不是null,若是空说明引用变量没有指向任何对象,会引起NullPointerException【空指针异常】;再次是要判断给定的对象是否和当前对象是否为同一类型,不是同类直接返回false,不具备可比性。
equals和“==”区别,equals比较两个对象的内容是否一样;“==”比较是否为同一个对象。
###String特性:
String是引用类型,String对象是保证该对象的内容自创建开始就不可变!对字符串的任何变化都会创建新的对象。
编程习惯:当一个字符串变量和一个字面量进行比较,应该使用字面量的.equals方法和变量进行比较,这样不会引起NullPointerException。
String的常用方法:
String toLowerCase()---返回字符串的小写形式
String toUpperCase()---返回字符串的大写形式
String trim()---返回字符串为原始字符串去掉前导和后继的空白(空格,\t,\n,\r...)
boolean startsWith(String prefix)---判断字符串是否以参数字符串开头
boolean endsWith(String suffix)---判断字符串是否以参数字符结尾
int length()---返回字符串字符序列的长度
char charAt(int index)---返回字符串中索引index位置的字符
String substring(int start,int end)---截取字符串从start位置到end(不包含end)
byte[] getBytes(String charsetName)---用于将字符串以指定的编码集转换字节数组
String[] split(String regex)---将字符串按照特定的分隔符拆分成字符串数组。
String replaceAll(String regex,String replacement)---将字符串中匹配正则表达式的字符串替换成replacement
编码:将数据以特定格式转换为字节
解码:将字节以特定格式转换为数据
###正则表达式
作用:约束字符串的格式
[abc]---匹配a,b,c中的其中一个
[^abc]---除了a,b,c的任意字符
[a-z]---a到z中的任意一个字符
x?---表示0个或1个x
x*---表示0个或任意多个x
x+---表示1个到任意多个x(>=1个x)
x{n,m}---表示n个到m个x(>=n个且<m个x)
+的作用代表前面描述的内容出现1次以上等同于{1,}
[]---描述一个字符;():将一组字符看为一个整体
.---任意一个字符
\d---任意一个数字字符,相当于[0-9]
\D---任意一个非数字字符,相当于[^0-9]
\s---空白字符,相当于[\t\n\x0B\f\r]
\S---非空白字符,相当于[^\s]
\w---任意一个单词字符,相当于[a-zA-Z_0-9]
\W---任意一个非单词字符,相当于[^\w]
^ ---表示字符串必须以其后面约束的内容开始
$ ---表示字符串必须以其前面约束的内容结尾
若正则表达式不书写^或者$,代表匹配部分内容,都加上则表示全匹配。
使用java的字符串去描述正则表达式的时候,会出现一个冲突。如何描述正则表达式的“.”
起因:在正则表达式中描述一个“.”,但其在正则表达式中有特殊的含义,代表任意字符,所以在正则表达式中想描述“.”的原意就要写成“\.”。但是用java的字符串去描述正则表达式的时候,因为“.”在java字符串中没有特殊含义,所以java认为我们书写String s = "\.";是语法错误,因为"."不需要转义,这就产生了冲突。
目的:是在java字符串中描述"\.",所以要转义\,正确的写法:String s = "\\.";
###Commons-lang简介
commons-lang是Apache Commons项目中的一个组建,commons-lang针对JDK官方的java.lang包中的类提供了一些使用的补充,在实用中应用广泛
StringUtils是commons-lang包中提供的,针对字符串操作的工具类,该类提供了一系列静态使用方法:
String repeat(String str,int repeat)---重复字符串若干次
String join(Object[] array,String separator)---将一个数组中的元素连接成字符串
String leftPad(String str,int size,char padChar)---向左边填充指定字符以达到指定长度
String rightPad(String str,int size,char padChar)
StringBuilder,该类用于对谋个字符串频繁的编辑操作,使用StringBuilder可以在大规模修改字符串时不开辟新的字符串对象,从而节约内存资源,所以,对以有着大量操作字符串的逻辑中,不应该使用String而应该使用StringBuilder。
StringBuilder append(str)---向字符串中追加内容,return this
StringBuilder insert(int offset,char c)---在offset的位置插入char c,原位置的内容依次往后移。
StringBuilder replace(int start,int end,String str)---替换start至end范围的内容为str,范围是>=start,<end
StringBuilder delete(int start,int end)---删除start到end范围的内容,范围是>=start,<end
##StringBuilder与StringBuffer---效果是一样的,
区别:StringBuilder不是线程安全的,效率高于StringBuffer;StringBuffer是线程安全的,但效率相比之下低于StringBuilder
###日期处理
Date类,描述一个日期
Calendar类,不存在千年虫问题,并且方便计算日期。封装了日历信息,其主要作用在于其方法可以对时间分量进行运算。Calendar是抽象类,其具体子类针对不同国家的日历系统,其中应用最广泛的是GregorianCalendar(格里高利历),是绝大多数国家/地区使用的标准日历系统。
通过Calendar的静态方法(getInstance())获取一个实例,该方法会自行决定时区,创建Calendar类型实例。
calendar.set()
calendar.add()
calendar.get()
SimpleDateFormat类,用于字符串和日期类型间的相互转换
parse方法用于按照特定格式将表示时间的字符串转换为Date对象。
format方法用于将Date对象转换为表示时间的字符串。
###基本类型的包装类
类型间转换及Bigdecimal的常用方法
Bigdecimal数学运算:add(加法)/subtract(减法)/multipl y(乘法)/divide(除法)<除法需要注意规定精确度,否则会进入无限循环直至报错>
.valueOf(Integer x)是将整数的基本数据类型转换为Bigdecimal的实例
###Collection框架及List集合
Collection是集合的顶级父类,是一个接口,其下有两个子类:List和Set
List:元素可重复,equals为true,有序;常见的子类实现:ArrayList和LinkedList
List的其他操作:取子集subList(int fromIndex,int toIndex),若对子集修改,原集合元素也会被修改。
Set:元素不可重复,equals为false,大部分是无序的
###java泛型机制:本质是参数化类型,在类,接口和方法的定义过程中,所操作的数据类型被传入的参数指定。
ArrayList<E>,E为泛型,在创建对象时,可以将类型作为参数传递,此时,类定义所有的E将被替换成传入的参数
泛型可以在使用某个类的时候向传递参数一样来向这个类中某些内容传递一个类型。动态的决定这个被创建出来的类的实例的方法参数和返回值,属性的类型,从而提高程序的灵活性。需要注意,泛型是java1.5以后提供的新特性
java1.5的另一个新特性:新循环(增强for循环),专为遍历数组和集合设计的。
for(ElementType element:ArrayOrCollection){……},遍历数组或集合(ArrayOrCollection),将每一个元素依次赋值给element后进入循环体,直到所有元素均被迭代完毕后退出循环。
###数据结构
Queue队列,先进先出。Queue接口:offer(将元素放入队列);poll(从队列中取元素,获取的是最早offer的元素,该元素会从队列中删除);peek(获取队首的元素,但不删除元素)。LinkedList是队列的子类。
栈(Deque),先进后出。Deque接口方法:push(向栈中存储数据);pop(从栈中取出数据);peek(获取栈顶位置的元素,但不取出),LinkedList是栈的子类。
Collection是集合的接口
Collections类是集合的工具类,提供了对集合操作的若干方法,sort():对集合中的元素做自然排序。
Comparator比较器,是一个接口,实现该接口的类需要实现一个抽象方法 int compareTo(E o1,E o2)。比较器可以用于比较集合中的元素。Collections提供了sort的重载方法,支持传入一个比较器对集合进行比较。