String 类 和StringBuffer(学会使用API)

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

猜你喜欢

转载自blog.csdn.net/weixin_43509023/article/details/83987695
今日推荐