String类
在java.lang包下,使用时不需要导包
代表字符串,java程序中所有的双引号字符串,都是该类的对象
特点:字符串不可变,它们的值在创建之后不能改变
但是可以被共享
效果上等同于字符数组(char[]),而底层原理是字节数组(byte[])
推荐使用直接赋值的方法得到字符串对象
使用==做比较时,
- 基本类型:比较的是数据值是否相同
- 引用类型:比较的是地址值是否相同
比较内容是否相等,通过equals()方法
public boolean equals(Object anObject)
字符串拼接: s+=?
方法名 | 说明 |
---|---|
public boolean equals(Object anObject) | 比较字符串里的内容,严格区分大小写 |
public char charAt(int index | 返回指定索引处的char值 |
public int length() | 返回字符串的长度 |
StringBuilder
public static void main(String[] args){
String s="hello";
s+="world";
System.out.println(s);
}
//栈内存中开辟s空间(001),堆内存中常量池001存放hello;
//常量池中找不到world,002存放world
//常量池中找不到helloworld,003存放
//最后s的地址为003而不是001
(面试爱问)?
可变的字符序列,可以将其当做容器
(对象中内容可变)
节省了空间,提高了效率
构造方法 | 描述 |
---|---|
StringBuilder | 创建一个空白可变字符串对象,不包含任何内容 |
StringBuilder(String str) | 根据字符串内容,创建可变字符对象 |
StringBuilder append(任意类型) | 添加数据,并返回对象本身 |
StringBuilder reverse() | 返回相反的字符序列 |
toString() | 将StringBuilder转换为String |
str.append("hello").append("java")
//str=hellojava
//链式编程
StringBuilder和String的相互转换
通过toString()可以将StringBuilder转换为String
通过StringBuilder(String str)可以将String转换为StringBuilder
//方法用于实现字符串反转
public String myReverse(String s){
//StringBuilder sb = new StringBuilder(s);
//sb.reverse();
//String ss = sb.toString();
//return ss;
return new StringBuilder(s).reverse().toString();
}