1.String 字符串类
Java程序中所有字符串文字(例如"abc")都实现为此类的实例
1)简单介绍
String : 少量修改字符串,适合使用String,因为表示字符串String对象简单,功能强大的API
String str ="abc"; //创建了一个字符串对象"abc",字符串常量 -->字符串常量池中
String str2 = new String("haha");//2个对象 第一个new在堆中 第二个"haha"-->字符串常量池中
String str2 = new String("abc");//1个对象 第一个new-->在堆中 "abc"-->上面已经使用过,字符串常量池中已存在
字符串底层:
jdk11-->使用private final byte[] value; 字节数组存储字符串中的字符数据
jdk8--> private final char[] value;字符数组
//字符串的底层其实是用字节型数组存储数据的
2)String 类中的各方法调用
1.String() 初始化新创建的 String对象,使其表示空字符序列。
String str1 = new String();
String str2 = "";
System.out.println(str1==str2); //false
2.String(String original) 初始化新创建的String对象,使其表示与参数相同的字符序列;
//换句话说,新创建的字符串是参数字符串的副本
String str3 = new String("abc");
System.out.println(str3);
3.String(char[] value) 分配新的 String ,使其表示当前包含在字符数组参数中的字符序列。
//字符数组转为字符串
char[] arr = {
'y','j','x','x','t'};
String str4 = new String(arr);
System.out.println(str4);
4.String(char[] value, int offset, int count) 分配一个新的 String ,其中包含字符数组参数的子数组中的字符。
//不同的字符编码格式(转换方式参照不同的字符集) 1个汉字->gbk->2个字节 1个汉字->utf-8->3个字节
//字符串转为字节数组
byte[] arr2 = "你好".getBytes(); //默认字符编码格式utf-8
byte[] arr3 = "你好".getBytes("gbk"); //字符编码格式gbk
System.out.println(arr2.length);
System.out.println(arr3.length);
//要保证编码解码字符编码一致才不会出现乱码
//字节数组转为字符串-->注意编码格式问题
String str6 = new String(arr2);
System.out.println(str6);
5.String(byte[] bytes, String charsetName) 构造一个新的String由指定用指定的字节的数组解码charset 。
String str7 = new String(arr3,"gbk");
System.out.println(str7);
6.字节数组中某一部分字节数据转为字符串
//String(byte[] bytes, int offset, int length) 通过使用平台的默认字符集解码指定的字节子阵列来构造新的 String 。
//String(byte[] bytes, int offset, int length, String charsetName) 通过使用指定的字符集解码指定的字节子 String构造新的 String 。
String str8 = new String(arr2,3,3);
System.out.println(str8);
其他String类方法
/*
String 常用方法:
*/
public class Class002_String {
public static void main(String[] args) {
String str1 = new String("jintiantainqihenre");
String str2 = new String("jintiantainqihenre");
//char charAt(int index) 返回指定索引处的 char值。
System.out.println(str1.charAt(5));
//int codePointAt(int index) 返回指定索引处的字符(Unicode代码点)。
System.out.println(str1.codePointAt(5));
//int compareTo(String anotherString) 按字典顺序比较两个字符串。
//str1.compareTo(str2) 返回值 : 0-->str1=str2 >0--> str1>str2 <0-->str1<str2
System.out.println(str1.compareTo(str2));
//int compareToIgnoreCase(String str) 按字典顺序比较两个字符串,忽略大小写差异。
System.out.println(str1.compareToIgnoreCase(str2));
//String concat(String str) 将指定的字符串连接到此字符串的末尾。
System.out.println(str1.concat(str2));
System.out.println(str1);
//boolean contains(CharSequence s) 当且仅当此字符串包含指定的char值序列时,才返回true。
System.out.println(str1.contains("jin"));
//boolean endsWith(String suffix) 测试此字符串是否以指定的后缀结尾。
System.out.println(str1.endsWith("hao")