0126 String类

在API中的String类代表字符串例如Sring s=“abc”中的“abc”就是此类的实例化展示,也就是一个String类的对象

字符串的本质就是一个数组Sring s=“abc”中相当于是一个char[] arr={'a','b','c'};

在String类中也可以通过构造方法去实现创建对象

测试一下

public static void main(String[] args) {
		String s="abc";
		String s2="abc";
		String s3=new String("abc");
		System.out.println(s==s2);//true
		System.out.println(s.equals(s2));//true
		System.out.println(s==s3);//false
		System.out.println(s.equals(s3));//true
	}

  上述代码中当s和s2进行比较的时候,结果是true,因为“a,b,c”作为string对象是一个用private final修饰的常量char数组,一次赋值终身不变。此时这个常量是进入的堆中的常量池,常量池中不允许有重复的常量存在,所以当我再创建s2=“a,b,c”时,他会将已经创建好的“a,b,c”的地址值赋值给s2,所以s和s2的地址值是一样的所以为true。那么当s与s3比较时结果为false,因为当new String("abc");的时候此时是两个对象其中“a,b,c”是一个对象,new string又是一个对象,此时new string的对象是在堆中附新的地址值,将新的地址值赋值给了s3,所以在比较时为false。那么看当调用equals方法的时候都为true,此时调用的是string类中的equals方法,重写了object类中的equals,所以比较的是内容。

图解

 

String类的构造方法

 

 (1)String()初始化一个新创建的 String 对象,使其表示一个空字符序列。

例:String s=new String();

(2)String(byte[] bytes)将一个byte字节数组转成字符串

例:

byte[] bytes={65,66,67,68};

String s=new String(bytes);
System.out.println(s);//ASCII表

运行结果:ABCD

注:将一个字节转为字符串的时候,当字节为整数的时候它对应的是ASCII码表,码表中66对应的是A,67对应的B,67对应的C,68,对应的是D。48对应的是0,97对应的是a

  那当字节中的数为负数的时候对应的是中文码表,一个中文代表两个字节

(3)String(byte[] bytes, int offset, int length)将一个byte数组从offiset开始,传入多长length 返回一个新的字符串

例:String s2=new String(bytes,1,2);从下标1开始,传入两个

(4)String(char[] value)将一个字符数组转为字符串数组

例:

char[] ch={'a','b','0','1'};
String s3=new String(ch);
System.out.println(s3);

运行结果为:

ab01

(5)String(char[] value, int offset, int count)将一个char数组从offiset开始,传入多多少个count返回一个新的字符串

例:

String s4=new String(ch,2,2);
System.out.println(s4);//01

String类的方法(常见)

 (1)length()返回字符串的长度

(2)substring(int index)返回从index开始截取到字符串末尾的字符串

(3)subsring(int index,int end)返回从index开始截取,截取end个的字符串

(4)startsWhith(string index)判断该字符串是否以index开头

(5)endsWith(string index)判断是否以index结尾

(6)contains(string s)判断该字符串是否存在s字符

(7)indexOf(string str)str字符串在该字符串中第一次出现的位置

(8)getBytes()将该字符串转为字节数组

(9)toCharArray() 将该数组转为字符数组

(10)equals(string anotherString)判断该字符串是否与anotherString字符串相同

(11)equalsIgnoreCase(String anotherString)判断该字符串是否与anotherString形同,不区分大小写

(12)toString()返回该字符串本身

例:

public static void main(String[] args) {
		// TODO Auto-generated method stub

		String s="hello java,java is good";
		//字符串长度
		int len=s.length();
		System.out.println(len);
		//截取字符串
		String s1=s.substring(6);
		//包头不包尾
		String s2=s.substring(2,6);
		System.out.println(s1);
		System.out.println(s2);
		//判定以小字符串开头
		boolean f1=s.startsWith("hello");
		//判定以小字符串结尾
		boolean f2=s.endsWith(".java");
		System.out.println(f1);
		System.out.println(f2);
		//判断大字符串中是否包含小字符串
		boolean f3=s.contains("java");
		System.out.println(f3);
		//获取小字符串在大字符串中第一次出现的索引值//若不存在就会返回-1
		int a=s.indexOf("java");
		System.out.println(a);
		//将字符串转为字节数组
		byte[] arr=s.getBytes();
		for(int i=0;i<arr.length;i++){
			System.out.print(arr[i]+"\t");
		}
		System.out.println();
		//字符串转字符出租
		char[] arr1=s.toCharArray();
		for(int i=0;i<arr1.length;i++){
			System.out.print(arr1[i]+"\t");
		}
		System.out.println();
		//判断两个字符串是否相同
		System.out.println("abc".equals("ABC"));
		//忽略大小写比较
		System.out.println("abc".equalsIgnoreCase("ABC"));
		System.out.println(s);
	}

  

posted @ 2021-01-26 12:52  公雪  阅读(165)  评论(0编辑  收藏  举报