1 包装类
- 包装类型有
Character, Integer, Short,Byte, Boolean, Long,Double,Float.
方便对基本数据类型进行操作
1.1拆箱装箱
package wrapper;public class Integer01 { public static void main(String[] args) { //jdk5之前是手动装箱拆箱 //手动装箱 int -> Integer int n1 = 100; Integer integer = new Integer(n1); Integer integer1 = Integer.valueOf(n1); //手动拆箱 Integer -> int int i = integer.intValue(); //jdk5 以后 ,就可以自动装箱拆箱 int n2 = 200; Integer integer2 = n2; int n3 = integer2; }}
1.2 包装类和String的转换
- 包装类-> String
1.String str1 = integer + "";
2.String str2 = integer.toString();
3.String str3 = String.valueOf(integer); - String -> 包装类
1.integer = Integer.parseInt(str4);
2.integer = new Integer(str4);
2 String
2.1 String的存放问题
- String 有属性 private final char value[];用于存放字符串内容
value 是一个final类型,不可以修改(指指向的地址不能修改,而不是内容)
但String中不提供修改value数组的方法,所以字符串是不可修改的。
package wrapper;public class String01 { public static void main(String[] args) { final char [] value = {'t','o','m'}; char [] value2 = { 't','m'}; value[0]= 'k';//True //value = value2;//False }}
- String对象的引用指向的地址可以修改
这里并不是在原来a指向的地址上修改字符串的值,而是在字符串常量池中再创建常量“ad”,然后a指向”ad”的地址,“abc”还存在于常量池中。
String a = "abc"; a = "ad";
2.2 String连接字符串的细节
- 直接将字符串常量拼接起来a =”字符串1”+ “字符串2” ,相当于在常量池中新开一块地址存放“字符串1字符串2”,然后a指向这块地址。
a->字符常量池 - 而使用 a = b+c这种方式,得到a的步骤是
1.创建一个StringBuilder sb = new StringBuilder()
2.执行 sb.append(b),然后sb.append(c);
3.a = sb.toString()
a->堆中的对象value[] ->常量池
String a = "abc"; String b = "d"; String c= "abc" + "d"; String d = "abcd"; String e = a + b; System.out.println(c==d);//True System.out.println(d == e);//False
3 StringBuffer
- 有属性 char[] value,存放字符内容,与String的 private final char value[]不同。改变字符内容时直接在原字符串上修改,不像String每次都要指向一个新的地址,效率更高。
3.1 构造方法
//默认构造器是是创建一个大小为16的字符数组,存放字符串 StringBuffer stringBuffer = new StringBuffer(); //创建一个大小为21的字符数组 StringBuffer stringBuffer1 = new StringBuffer(18); //字符数组的大小为字符串大小+16 StringBuffer hhh = new StringBuffer("hhh");
3.2 常用方法
- append(): 加
- delete():删
- replace():改
- indexOf():查找字符串第一次出现的位置
- insert():插入
4 StringBuilder
- 与StringBuffer是类似的,但是不是线程安全的,单线程的情况下使用StringBuilder更快
5 Math
- abs(): 求绝对值
- pow(): 求幂
- ceil(): 向上取整
- floor(): 向下取整
- round(): 四舍五入
- sqrt(): 开方
- random(): [0,1)之间的随机数