工具类:
Object:所有类的超类,唯一一个没有父类的类
常用方法:
1)equals();
2)hashCode();
3)toString();
String:不可变字符序列,造成内存浪费
StringBuffer:可变字符序列,节省内存开销
StringBuilder:可变字符序列,节省内存开销
StringBuffer和StringBuilder的区别:
1)StringBuffer:线程安全的,加锁同步,数据安全,效率比较低,jdk1.0出现
2)StringBuilder:线程不安全的,不同步,数据不安全,效率高,jdk1.5之后出现
判断StringBuffer和StringBuilder相等:
StringBuffer和StringBuilder用equals()方法比较的还是地址是否相等,想要判断两个StringBuffer和StringBuilder变量的内容是否相等,应先用toString()方法将他们转换成String对象,然后再用equals()方法进行比较
字符串常量池:共享的,唯一的
为了减少在JVM中创建的字符串的数量,字符串类维护了一个字符串池,每当代码创建字符串常量时,JVM会首先检查字符串常量池.如果字符串已经存在池中,就返回池中的实例引用.如果字符串不在池中,就会实例化一个字符串并放到池中
String str = new String("aaa");创建2个或者1个对象
包装类:
1)byte:Byte -127~128
2)short:Short -32768~32767
3)long:Long 0x8000000000000000L~0x7fffffffffffffffL
4)float:Float
5)double:Double
6)Boolean:Boolean
7)int:Integer
1)-128~127之间的数字会转成int型来进行操作,区间之外的是用new Integer()判断
8)char:Character
jdk1.5之后自动装箱,拆箱
装箱:将基本数据类型转成包装类
拆箱:将包装类转成基本数据类型
装箱和拆箱存在安全问题,用泛型可以解决
Math:所有的方法都是静态的,类是final的
abs():绝对值
max():比较两个数的最大值
min():比较两个数的最小值
ceil():返回大于所给参数的最小的整数值
floor():返回不大于所给参数的最大的整数值
random():返回在0.0~1.0之间的随机的double值
round():4舍5入
sin/cos/tan():返回给定的弧度值对应的三角函数值
sqrt():返回所给值的平方根,若所给值为负数则返回NaN
System:
日期相关:
Object: Object是层次结构的根类,唯一一个没有父类的类
方法:
toString():将对象转成字符串返回,默认
equals():只能判断引用类型是否相等
== :
判断基本数据类型和引用数据类型是否相等,判断引用数据类型时,判断的是两个变量(对象的地址)的引用是否相等
equals:方法,可以重写
判断引用数据类型是否相等,判断的是两个变量的引用是否相等;但是String/包装类/Date/File除外,判断的是对象的数据是否相等
hashCode():
重写equals方法,必须重写hashCode()方法
1)equals方法返回值为true,hashCode()的值必须相等
2)equals方法返回值为false,hashCode()的值有可能相同,也可能不同
3)hashCode()方法的值不相等,equals()方法的返回值必须为false
4)hashCode()方法的值相等,equals()方法的返回值可能相等,也可能不等
clone():
接口:Cloneable:标记接口(里面没有任何方法)
1)深拷贝:
对象以及该对象中的引用类型都进行拷贝
2)浅拷贝:
只对对象本身拷贝,不对该对象中的引用类型进行拷贝
String:不可变字符序列
数组的长度是属性length,字符串的长度是方法length();
可变长参数 ...类似于动态一维数组
1)一个方法中只能有一个可变长参数
2)可变长参数必须是最后一个参数
3)可变长参数的长度用length获得
链式编程:
Integer:
xxxValue():将Integer转换成xxx基本数据类型
parseXxx(String str):将字符串强解析为xxx基本类型
toXxxString():将Integer转换成xxx进制
toStringHexString():十六进制
toOctalString():八进制
toBinaryString():二进制
Character:
isDigit(char ch):判断指定字符是否为数字
isLetter(char ch):判断指定字符是否是字母
isLowerCase(char ch):判断指定字符是否是小写字母
isSpaceChar(char ch):判断指定字符是否是Unicode中的空格
字符串String能转换成除了Character以外其他的类型
日期相关的:
Date:不支持国际化
Calendar:常用的日期处理对象,可以设置自己的时区和国际化格式,是一个抽象类
GregorianCalendar:格里高利日历,Calendar的子类,非抽象类,可以设置自己的时区和国际化格式
DateFormat:抽象类,只能按照固定格式
format():将日期转成字符串
parse():将字符串转成日期
SimpleDateFormat:DateFormat的子类,可以按照一定格式输出
数据库日起:yyyy-mm-dd hh24:mi:ss
Java:yyyy-MM-dd HH:mm:ss:SS
Integer a=1, b=1;
Integer c=1000, b=1000;
System.out.println(a==b);//true
System.out.println(a==b);//false
Integer c1 = new Integer(10);
Integer c2 = new Integer(10);
System.out.println(c1 == c2);//false;不会进行装拆箱
Java进行自动装箱封箱时调用valueOf()方法,该方法中,对于在-127~128的数据用基本数据类型存储,即int;而对于不在区间内的用new Integer(n),对于引用类型,==比较的是引用值所以第一句true,第二句false;
Integer i = null;
System.out.println(String.valueOf(i));//输出null
System.out.println(i.toString());//空指针异常