public final String extends Object
//继承和修饰
字符串是常量,值创建之后不可被更改。字符串缓冲区支持可变字符串。String对象是不可变的
String str = "hello";
str = "world";
//先在栈里创建 str 在常量池里创建“hello”,当更改的时候,创建“world”,改变str的指向,然后hello被回收机制处理
str = str + "world";
//创建“worldworld”
str="hello";
//销毁后再次创建
String str2 = new String();
//一旦创建不可更改,空的,重新赋值要被销毁,一般不这样创建
String str = “hello”;
String str1 = "hello";
System.out.println(str==str1);
//输出结果为true,地址可共享
String str = new String("hello”);
String str1 = "hello";
syso(str == str1);
//结果为false
//str2 先在堆里创建了new String(),str1在常量池创建 hello 比较的地址是 new String()和hello,所以说地址不一样。
String(char[] value)
char[] ch = {'h','e','l','l','o'};
String str = new String (ch);
String(char[] value , int offset , int count)
offset 是字符串当成数组后的索引
count 是从offset开始一共的字符个数
String str = “hello”;
String str1 = new String(str,1,3);
syso
// ell
String (byte[] byte)
byte[] by = {65,66,67};
String str = new String(by);
syso(str);
// abc
//按照ascii码表转化
String(byte[] byte,int offset,int count);
和 String(char[] value , int offset , int count);类似
String(byte[] byte , charset charset);
charset 是编码格式,(GBK,UTF-8,ISO-8859-1等),数据库使用
String str = “hello”;
str+=“world”;
syso(str);
//输出三个字符串
方法
判断功能
equals(String str)区分字符串的内容是否相同,区分大小写
equalsIgnoreCase(String str) 不区分大小写
contains(String str) 判断一个字符串里是够包含另外一个字符串 区分大小写
startsWith(String str)判断字符串是否已指定的字符串开头
endsWith(String str)判断字符串是否以指定的字符串结尾
isEmpty(String str)判断是否为空 ,写null会报异常
获取功能
length() 长度
charAt(int index)索引所在的字符
indexOf(String str)判断字符所在索引
indexOf(String str , fromIndex)
- 前闭后开 10 <= a <20
String str = “hellohello”;
syso(“h”,3);
//从索引开始判断
字符串剪切
helloworldjavac++
substring(int beginIndex) 返回一个新的字符串,它是此字符串的一个子字符串。该子字符串从指定索引处的字符开始,直到此字符串末尾。
substring(int beginIndex, int endIndex)
beginIndex - 起始索引(包括)。
endIndex - 结束索引(不包括)。
字符串转化功能
getBytes();
toCharArray();
valueOf();
public class Demo {
public static void main(String[] args) {
String str = "hello";
byte[] bytes = str.getBytes();
//转换字节数组,字节是数字
for(int i = 0 ; i<bytes.length ; i++){
System.out.print((char)bytes[i]);//bytes[i] 输出的是ascii码,要强制转换
}
System.out.println();
//转换字符数组
char[] charArray = str.toCharArray();
for(int i = 0 ; i<bytes.length ; i++){
System.out.print(charArray[i]);
}
int a = 10;
String st = a+" ";
String st1 = String.valueOf(a);//valueOf是静态方法,直接类名调用
}
}
StringBuffer
线程安全的可变字符序列
public StringBuffer()
构造一个其中不带字符的字符串缓冲区,起初始容量为16个字符
public StringBuffer(int capacity)
构造一个不带字符,单具有出事容量的字符串缓冲区
public StringBuffer(String str)
构造一个字符串缓冲区,并将其内容初始化,该字符串的初始容量为 16 加上字符串参数的长度。
功能方法
-
length() 得到的是实际的字符串长度
-
capacity()得到的是理论的字符串长度
- 添加功能
-
append() 追加 到末尾
-
insert(int offset,String str) 在指定的位置插入一个字符串对象
- 删除功能
-
delete(int start , int end) 在字符串中删除指定位置开始 到指定位置结束的字符串序列
-
helloworldjava 前闭后开
-
deleteCharAt(int index); 删除指定位置的字符
- 翻转功能
-
reverse()
- 替换功能
-
replace(start, end, str) 前闭后开
- 截取功能
-
substring
- String 和StringBuffer 转换
-
用的构造
- StringBuffer sf =new StringBuffer(“hello”);
- String str = new Stirng(sf);
- 字符串转换功能
-
getBytes() 将一个字符串转换成字节数组
-
toCharArray()将一个字符串转换成字符数组
-
valueOf( ? ) 将指定的内容转换成字符转
-
字符串的大小转换
-
toLowerCase() 将字符串都转换成小写
-
toUpperCase() 将字符串都转换成大写
- 字符串的其他方法
- 去除两端空格
- trim