内容纲要
459讲八大Wrapper类(包装类)、装箱和拆箱、Integer创建机制、String类(重要)
黄色的父类是Number
装箱和拆箱
- 手动装箱和自动装箱(拆箱)
- 测试题。
-
注意三元运算符看作一个整体。
-
Object obj1 = true? new Integer(1) : new Double(2.0); System.out.println(obj1);//1.0 //注意这里输出的是1.0.三元运算符看作一个整体。
包装类和String相互转换。
- Integer类面试题1
-
integer的valueOf原码 老韩:这么多方法,不能一个一个看,用的时候看一下源码。
注意。Integer 下 -128 到127 装箱时直接返回int 类型,否则就new 一个对象
- 注意:cache 缓存下已经创建好了int[] 数组
- Integer 面试题
注意:只要有基本数据类型,通过 == 就是判断值是否相等
integer i11 = 127;
int i12 = 127;
//注意:只要有基本数据类型,通过 == 就是判断值是否相等
String类
- String对象用于保存字符串,也也就是一组字符序列
- 字符串常量对象是双引号括起来的字符序列。例如: "你好"、"123.06"、"boy"等
- 字符串的字符使用Unicode 字符编码,一个字符( 不区分字母还是汉字 )占2个字节。
- String类常用的构造器如下。
- String 类实现了接口 Serializable 接口,【String 可以串行化:可以在网络中传输】
- String类实现了comparable 接口。【其中的 compareTo( ); 方法可以实现相互比较】
- String类还是final 类,不能被其它继承。
- String 有属性 private final char value[]; 用于存放字符串类容
- 注意: value 是一个final 类型;不可修改(即使 value 不可再指向新的对象)
(但是单个字符内容是可以变化的 )
tip:我在廖雪峰java中看泛型的时候也看到了ArrayList
String 对象的创建(2种方式)
- String 内存分布图
String类中重写了 toString(); 方法
- 课堂测试题(助于理解)
API文档 String 类的inter(); 方法。
- 测试题5(略微比上面难)
- 注意!!!
//注意:
System.out.println(p1.name == "hspedu");//True
/*
这里的"hspedu" 存在于常量池,是一个地址。
p1.name == "hspedu" 比较的地址是一样的。所以为true
*/
- 题1。String是一个final 类,代表不可变的字符序列。
- 面试题2。注意:String a = "hello" + "abc"; //编译器等价优化: String a = "helloabc";
面试题3(重要)
规则:String c1 = "ab" + "cd"; 常量相加,看的是池。String c1 = a + b; 变量相加,是在堆。
//在上面的String c = a + b; 后面加入代码
String d = "helloabc";
System.out.println( c == d );//False
//c 指向的是堆中的对象地址。 d 指向的是常量池中的 "helloabc"
- 题3
- 题4(有一点难度)
回顾:每调用一个方法产生一个新栈。对象存在堆中
这个图有难度。!!!好好分析
String 类的常见方法
- concat(); 方法是拼接
“concat() 方法将把它的所有参数转换成字符串,然后按顺序连接到字符串 stringObject 的尾部,并返回连接后的字符串。”
tip: s2.toUpperCase(); 方法不会改变s2的字符串的引用的地址。(如下)
- compareTo(); 方法
-
如果长度相等,则比较字符相减比如"jack"; "jcck"; 相减为-2;
-
如果长度不相等,直接长度相减如:"jac"; "jack"; 相减为-1;
-
如果长度相同,字符串也相同,就返回0;
- formate(); 方法。
还可以这么玩!!!
老韩解读
- %s , %d , %.2f , %c 称为占位符
- 这些占位符由后面变量来替换
- %s 表示后面由字符串来替换。
- %d 是整数来替换
- %.2f 表示使用小数来替换,替换后,只会保留小数点两位。并且进行四舍五入处理(业界良心)
- %c 表示使用char来替换。