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)之间的随机数