java包装类
*1.为什么要有包装类?
-
1)基本数据类型有需求:调用属性,调用方法等—》包装类;
-
2)有些场合只能用引用数据类型,这个时候如果要操作基本数据类型,就要把它封装成对象—》包装类;
-
3)数值类型转换成字符串类型—》包装类;
*2.包装类—>针对基本数据类型的。 -
8种基本数据类型—》 8种包装类;
-
*3.包装类:
-
Integer—》int;
-
Double—》double;
-
Byte—》byte;
-
Short—》short;
-
Character—》char;
-
Long—》long;
-
Float—》float;
-
Boolean—》boolean;
*4.包装类相比于其它类,有一个显著的特点: -
自动装箱和自动拆箱
-
Integer n3=1234;//自动装箱;基本数据类型—>引用数据类型;隐式调用Integer n3=new Integer(1234);
int i=n3+10;//自动拆箱;引用数据类型—>基本数据类型;隐式调用n3.intValue();//自动装箱和自动拆箱;
Integer n3=1234;//自动装箱;基本数据类型—>引用数据类型;隐式调用Integer n3=new Integer(1234);
int i=n3+10;//自动拆箱;引用数据类型—>基本数据类型;隐式调用n3.intValue();
System.out.println(“i=”+i);
//Integer和字符串类型的相互转换;
String str=“123”;//字符串必须是数字格式的,否则会报异常: java.lang.NumberFormatException。
int a=Integer.parseInt(str);
System.out.println(a+10); int b=98;
String str1=String.valueOf(b);
System.out.println(str1);
String和StringBuilder类
String
1.StringBuilder:底层是一个字符数组;
2.StringBuilder : 初始数组长度是固定的;
s.append(str);
每次添加:判断当前数组长度是否能容下添加后的内容;
如果不能:(1)生成一个新的更长的数组;
(2)把旧数组的内容copy到新数组里去;
(3)把数组引用指向新数组;
(4)把新内容添加到新数组里。3.(1) s.length():数组被占用的长度;
(2) s.capacity():数组的总长度;
*StringBuffer和StringBuilder:
*1.方法相同,可以替换;
*2.StringBuffer早期版本的,StringBuilder后来版本的(jdk1.5);
*3.StringBuffer重安全,轻效率;StringBuilder重效率,轻安全;- StringBuffer:synchronized,线程同步;
- StringBuilder:没有synchronized,线程非同步;
*4.建议用StringBuilder。



