1 包装类

  • 包装类型有
    Character, Integer, Short,Byte, Boolean, Long,Double,Float.
    方便对基本数据类型进行操作

1.1拆箱装箱

  • 以Integer为例
  1. package wrapper;
  2. public class Integer01 {
  3. public static void main(String[] args) {
  4. //jdk5之前是手动装箱拆箱
  5. //手动装箱 int -> Integer
  6. int n1 = 100;
  7. Integer integer = new Integer(n1);
  8. Integer integer1 = Integer.valueOf(n1);
  9. //手动拆箱 Integer -> int
  10. int i = integer.intValue();
  11. //jdk5 以后 ,就可以自动装箱拆箱
  12. int n2 = 200;
  13. Integer integer2 = n2;
  14. int n3 = integer2;
  15. }
  16. }

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数组的方法,所以字符串是不可修改的。
  1. package wrapper;
  2. public class String01 {
  3. public static void main(String[] args) {
  4. final char [] value = {'t','o','m'};
  5. char [] value2 = { 't','m'};
  6. value[0]= 'k';//True
  7. //value = value2;//False
  8. }
  9. }
  • String对象的引用指向的地址可以修改
    这里并不是在原来a指向的地址上修改字符串的值,而是在字符串常量池中再创建常量“ad”,然后a指向”ad”的地址,“abc”还存在于常量池中。
  1. String a = "abc";
  2. 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[] ->常量池
  1. String a = "abc";
  2. String b = "d";
  3. String c= "abc" + "d";
  4. String d = "abcd";
  5. String e = a + b;
  6. System.out.println(c==d);//True
  7. System.out.println(d == e);//False

3 StringBuffer

  • 有属性 char[] value,存放字符内容,与String的 private final char value[]不同。改变字符内容时直接在原字符串上修改,不像String每次都要指向一个新的地址,效率更高。

3.1 构造方法

  1. //默认构造器是是创建一个大小为16的字符数组,存放字符串
  2. StringBuffer stringBuffer = new StringBuffer();
  3. //创建一个大小为21的字符数组
  4. StringBuffer stringBuffer1 = new StringBuffer(18);
  5. //字符数组的大小为字符串大小+16
  6. 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)之间的随机数