一.equals与= =
(==是关系运算符,equals是方法,结果都是返回布尔值。Object的 ==和equals()比较的都是地址,作用相同。)
1.equals()方法的作用?
JDK中的类一般已经重写了equals(),比较的是内容。自定义类如果没有重写equals(),将调用父类(默认Object类)的equals()方法,Obeject的equals()比较使用了this==obj.
2. ==作用?
基本数据类型:比较值是否相等.
引用数据类型:比较内存地址是否相等,不能比较没有父子关系的两个对象。
二.为什么需要包装类?基本数据类型和包装类之间的转换
基本数据类型方便,简单,高效,但泛型不支持,集合元素不支持。不符合面向对象的思维。包装类提供很多方法,如Integer类,parseInt(String s)方法等等。
三.装箱与拆箱
装箱:基本类型转变为包装器类型的过程.
拆箱:包装器类型转变为基本类型的过程.
注意:
|
//jdk1.5不支持自动装箱和拆箱 Integer i=new Integer(10); //jdk1.5开始提供自动装箱,拆箱 Integer s=11; int n=i; |
四.String
1.String概念
该类由final关键字修饰,表示该类不能被继承。从jdk1.9开始该类的底层不使用char[]来存储数据,而是改成 byte[]加上编码标记,从而节约了一 些空间。该类描述的字符串内容是个常量不可更改,因此可以被共享使用。
2.常量池概念
由于String类型描述的字符串内容是常量不可改变,因此Java虚拟机将首次出现的字符串放入常量池中,若后续代码中出现了相同字符串内容则直接使用池中已有的字符串对象而无需申请内存及创建对象,从而提高了性能。
注意事项:
|
// 常量有优化机制,变量没有 String str5 = "abcd"; String str6 = "ab" + "cd"; // 常量优化机制 "abcd" System.out.println(str5 == str6); // 比较地址 true String str7 = "ab"; String str9="cd"; String str8 = str7 + str9; // 没有常量优化 System.out.println(str5 == str8); // 比较地址 false |
五.StringBuilder,StringBuffer,String区别
相同点:都可以存储和操作字符串。都使用final修饰,不能被继承。提供的API相似.
不同点:String是只读字符串,String对象内容是不能被改变的;StringBuffer和StringBuilder的字符串对象可以对字符串内容进行修改,在修改后的内存地址不会发生改变;StringBuilder相比StringBuffer效率高,但安全性低
8506

被折叠的 条评论
为什么被折叠?



