String:
String 类代表字符串.
//演示字符串
String str = "oracle";
str = "甲骨文";
字符串是常量;
字符串本身不能改变,但str变量中记录的地址值是可以改变的。
字符串的本质是一个字符的数组。
String s3 = "abc"; String s4 = new String("abc");//创建了两个对象 System.out.println(s3==s4);//false System.out.println(s3.equals(s4));//true,//比的是内容 //因为String重写了equals方法,建立了字符串自己的判断相同的依据(通过字符串对象中的字符来判断)
s4创建,在内存中有两个对象。一个new的对象在堆中,一个字符串本身对象,在字符串常量池中
常量池:是在堆里 开一块区域;
这是代码画图的原理。
如果内容一样,就不创建了,会把这个地址返回给你。
String类构造方法:
byte[] bys = new byte[]{97,98,99,100}; String s2 = new String(bys); // 创建String对象,把数组元素作为字符串的内容
char[] ch= new char[]{’a’,’b’,’c’,’d’,’e’}; String s = new String(ch); //创建String对象,把数组元素作为字符串的内容(字符转串)
String类部分方法:
length()
返回此字符串的长度。
(数组长度用的是length属性、字符串是用的length方法、集合是用的size方法)
getBytes(Charset charset)
使用给定的 charset 将此 String
编码到 byte 序列,并将结果存储到新的 byte 数组。
toCharArray()
将此字符串转换为一个新的字符数组。
toString()
返回此对象本身(它已经是一个字符串!)直接打印引用类型变量时,默认调用该类型进行重写后的toString方法。
startsWith(String prefix, int toffset)
测试此字符串从指定索引开始的子字符串是否以指定前缀开始。
endsWith(String suffix)
测试此字符串是否以指定的后缀结束。
contains(CharSequence s)
当且仅当此字符串包含指定的 char 值序列时,返回 true。
substring(int beginIndex)
返回一个新的字符串,它是此字符串的一个子字符串。截取。包头不包尾
equalsIgnoreCase(String anotherString)
将此 String
与另一个 String
比较,不考虑大小写。忽略大小写
ASCII码表:
大写A是从65开始。
小写a是从97开始。
数字0是从48开始。
byte字节的范围是-128到127.
StringBuffer类:字符缓冲区
StringBuffer又称为可变字符序列,它是一个类似于 String 的字符串缓冲区。
StringBuffer的方法
链式调用:方法返回值是本身。
创建一个字符串缓冲区对象。用于存储数据。 StringBuffer sb = new StringBuffer(); 添加数据。不断的添加数据后,要对缓冲区的最后的数据进行操作,必须转成字符串才可以。 String str = sb.append(true).append("hehe").toString();