------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
1.String类
字符串是一个特殊的对象。字符串一旦初始化就不可以被改变。String str1 = "abc"; //str1是一个类类型变量,"abc"是一个对象。
//字符串最大的特点:字符串一旦初始化就不可以被改变。
str1 = "aa" //str1重新指向了新的对象,而对象"abc"还在内存中,并没改变。
String str2 = new String("abc");
str1和str2有什么区别?
str1在内存中有一个对象。
str2在内存中有两个对象,new一个,"abc"一个
2. str1 == str2;//false;
str1.equals(str2);//true String类重写了Object类中的equals方法
3.String s1 = "abc" ;
String s2 = "abc";
s1 == s2;true//因为字符串存在于常量池中,s2创建时会在常量池中查看是否已存在,已存在就不在创建新的对象。
//所以s2也指向同一个对象"abc";
4.方法区,静态变量,常量池是在同一片内存中
5.String s = "hello java";
String s1 = s.replace('a','n');
输出:s:hello java //一旦初始就不能被改变
s1:hello jnvn
如果 String s1 = s.replace('p','n');
因为s中没有p,所以s1输出: hello java
6.StringBuffer是字符串缓冲区
是一个容器.
特点:
1.长度可以变化。
2.可以直接操作多个数据类型
3.最终会通过toString方法变成字符串
a.存储
StringBuffer append();将指定数据添加到已有对象的后面。
StringBuffer insert(index,数据);可以将数据插入指定index
b.删除
清空缓冲区。sb.delete(0,sb.length());
删除特定的字符。sb.deleteCharAt(2);
c.获取
d.修改
StringBuffer replace(start,end,string);//不包含end位
sb.setCharAt(2,'a');返回void
e.翻转reverse
f.将字符串指定开始到结束段的字符,放入字符数组dst中,从dstBegin位置开始存放
getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)
7.在JDK1.5版本之后出现了StringBuilder
StringBuffer是线程同步 多线程用方便
StringBuilder是线程不同步 单线程方便
8.JDK升级三个因素
a.提高效率
b.简化书写
c.提高安全性
9.基本数据类型对象包装类
基本数据类型对象包装类的最常见作用?!
就是用于基本数据类型和字符串类型之间做转换。
a.基本数据类型转换成字符串
基本数据类型+""
基本数据类型.toString(基本数据类型值);
如: Integer.toString(34);
b.字符串转换成基本数据类型
xxx a = Xxx.parseXxx(String s); //必须传入数字格式的字符串
long l = Long.parseLong("123");//将字符串转成long型 方式一
Long l = new Long("123"); //将字符串转成long型 方式二
long l = l.longValue();
c.十进制转其他进制
toBinaryString(int i); 转成 2进制
toOctalString(int i) ;转成 8进制
toHexString(int i) ;转成 16进制
d.其他进制转化成十进制
int x = Integer.parseInt("110,10");
10.
1.5版本以后特性
Integer x = 4;//自动装箱
x = x +5;//进行了自动拆箱。先,拆箱将Integer变成int,然后再求和,最后再将int装箱成Integer
Integer m = 128;
Integer n = 128;
System.out.println(m == n);//false
Integer a = 127;
Integer b= 127;
System.out.println(m == n);//true 因为a和b指向了同一个Integer对象
//因为在数值byte范围内,对于新特性,如果该数值已经存在,则不会开辟新的空间
//byte范围 -128---127