本章内容(一个类里的代码,上下能读懂)为什么有包装类;数据自动拆装箱;缓存问题;string,stringBuilder,的基本方法,数字,字符串与与对象的相互转换:
包装类:我们经常使用的基本数据类型不是对象,但在实际应用中经常需要将基本数据转化成对象,
* 为了解决这个问题,设计了对应的八个类,这就是包装类。
* byte-Byte boolean-Boolean short-Short char-Character int-Integer long-Long
* float-Float double-Double
* 其他number包装类方法和Integer类似。
* 自动装箱:基本类型的数据处于需要对象的环境时,会自动转为对象。
* 自动拆箱:当需要一个值时,对象会自动转成基本数据类型。
* 实际上是编译器帮的忙,并不是真自动。这个要注意空指针异常。
* 缓存问题:如果数据在-128和127之间,那么在创建的时候会放在cache的数组里,那么在创建的时候
* 会先去这个数组里找有没有,有就直接用,没有就创建新的。
* String:不可变:对象内部成员变量无法在改变。 比较时用equals
* StringBuillder:可修改的字符串,线程不安全,效率高,一般使用这个
* StringBuffer:线程安全,效率低。
其实讲也没什么好讲的,直接看代码吧。
integer类的
//基本数据类型转换为包装类对象
Integer i = new Integer(1234);
Integer b = Integer.valueOf(1234);
Integer k = 1,u=1;
System.out.println(i==b);//结果是false,两个是不同的对象
System.out.println(k==u);//结果是true,和缓存问题有关
//把包装类对象转换为基本数据类型
int a = i.intValue();
//把字符串转成包装类对象
Integer c = new Integer("88888");
Integer f = Integer.parseInt("122222");
//包装类转成字符串
String str = c.toString();
String st = c+"";
Integer e =5;//Integer e =Integer.valueOf(5);这是编译器帮忙修改的
int h =e;//编译器帮忙修改成:int h =e.intValue();
String类的常用方法
//常用String方法
public static void methodToString(){
String kj = "hellow";
String ki = "Hellow";
System.out.println(kj.length());//长度
System.out.println(kj.charAt(1));//截取一个字符
char[] ch = new char[3];
//截取多个字符串并由其他字符数组接受
kj.getChars(2,5,ch,0);
System.out.println(ch);
byte by[] = kj.getBytes();//变成一个byte数组
System.out.println(new String(by));
char[] cha = kj.toCharArray();//变成一个char数组
System.out.println(cha);
//比较不区分大小写
System.out.println(kj.equalsIgnoreCase(ki));
//是否已特定的开头或结尾
System.out.println(kj.startsWith("ee"));
System.out.println(kj.endsWith("rd"));
//变成大写或小写
System.out.println(kj.toUpperCase());
System.out.println(kj.toLowerCase());
System.out.println(kj.concat(ki));//连接两个字符串
System.out.println(kj.trim());//去掉起始或结尾的空格
//截取一段字符串,第一个是开始位置,第二个是结束位置
System.out.println(kj.substring(0, 5));
//查找目标第一次出现的位置,找目标最后一次出现的位置
System.out.println(kj.indexOf("o"));
System.out.println(kj.lastIndexOf("o"));
//按字典顺序比较两个字符串大小,第一个区分大小写,后面不区分
System.out.println(kj.compareTo(ki));
System.out.println(kj.compareToIgnoreCase(ki));
System.out.println(kj.replace(kj, ki));//替换结果:Hellow
}
stringBuilder类的常用方法
//StringBuilder常用方法
public static void methodToStringBuilder(){
StringBuilder sb = new StringBuilder("abcdef");
System.out.println(Integer.toHexString(sb.hashCode()));
sb.setCharAt(1,'k');//替换
//上下两个地址是一样的
System.out.println(Integer.toHexString(sb.hashCode()));
sb.append('p');//追加字符
System.out.println(sb);
sb.reverse();//倒序
System.out.println(sb);
//指定位置插入,链式调用,核心是:该方法用了return this ,返回了自己
sb.insert(2,'z').insert(0,'v');
System.out.println(sb);
sb.delete(0,3);//删除指定区间,也可以链式调用
System.out.println(sb);
}