Java字符串类(string类)中的常用方法

String类:
String类:
1、 构造方法
 a) public String() 空构造
 b) public String (byte [] bytes ) 将字节数组转换为字符串。
 c) public String(byte [] bytes, int index, int length) 把字节数组的一部分转成字符串(从index开始,长度为length)
 d) public String(char [] value ) 把字符数组转成字符串
 e) public String(chat [] value ,int index, int count) 把字符数组的一部分转成字符串
 f) public string(String original)把字符串常量转换成字符串

package cn.itcast_01;

public class StringDemo {
	public static void main(String[] args) {
		
		//空构造
		String s1=new String();
		System.out.println("s1:"+s1);
		System.out.println("s1.length:"+s1.length());
		
		//把字节数组转换成字符串
		byte[] bys= {97,98,99,100,101};
		String s2=new String(bys);
		System.out.println("s2:"+s2);
		System.out.println("s2.length:"+s2.length());
		
		//把字节数组的一部分转换成字符串
		String s3=new String(bys,1,2);
		System.out.println("s3:"+s3);
		System.out.println("s3.length:"+s3.length());
		
		//把字符数组转换成字符串
		char []chs= {'a','b','c','d','e','人'};
		String s4=new String(chs);
		System.out.println("s4:"+s4);
		System.out.println("s4.length:"+s4.length());
		
		//把字符数组的一部分转换为字符串
		String s5=new String(chs,1,2);
		System.out.println("s5:"+s5);
		System.out.println("s5.length:"+s5.length());
		
		//把字符串常量转换为字符串,与下面的功能一样(不常用)
		String s6=new String("abcdefg");
		System.out.println("s6:"+s6);
		System.out.println("s6.length:"+s6.length());
		
		//把字符串常量转换为字符串(常用)
		String s7="abcdefg";
		System.out.println("s7:"+s7);
		System.out.println("s7.length:"+s7.length());
	}

}

输出结果
s1:
s1.length:0
s2:abcde
s2.length:5
s3:bc
s3.length:2
s4:abcde人
s4.length:6
s5:bc
s5.length:2
s6:abcdefg
s6.length:7
s7:abcdefg
s7.length:7
2、字符串一旦被赋值就不能改变
指的是字符串的值hello是不会被改变,但是s的指向会变化,从而s变化
在这里插入图片描述

3、比较String s=new String(“hello”)和String s=”hello”的区别

说明s1与s2的地址值不同,值相同

通过内存图说明原因
在这里插入图片描述
 通过图可以看出String s1=new String(“hello”)是创建两个对象,方法区一个对象是hello,堆内存通过new也创建一个对象。
 String s2=“hello” 是创建一个对象,只在方法区中创建(此处的s2中由于之前s1已经创建了hello对象也就不需要在创建,只需要指向就可以了)。

4、
在这里插入图片描述
5、 String的判断方法
 a) Boolean equals(Object obj);//比较字符串内容是否相同,区分大小写
 b) Boolean equalsIgnoreCase(Object obj)//比较字符串内容是否相同,不含大小写。
 c) Boolean contains(String str)比较大字符串中是否含有小字符串
 d) Boolean startsWith(String str)判断字符是否以某个指定的字符串开始
 e) Boolean endsWith(String str)判断字符是否以某个指定的字符串str结尾
 f) Boolean isEmpty();判断字符串是否为空。
  i. String s1=””//字符串内容为空
  ii. String s2=null//字符串对象为空
  iii. s1.isEmpty() //true
  iv. s2.isEmpty()//显示异常
 原因:s2中没有对象,所以不能调用方法
6、 string类的获取功能
 a) int length()获取字符串的长度
 b) char charAt(int index)获取指定索引位置的字符
 c) int indexOf(int ch)返回指定字符ch在此字符串中第一次出现处的索引
  i. 此处的ch是int类型的是因为字符其实都是可以由数字转换ASCAII值
 d) int indexOf(String str)返回指定字符串str首字母在此字符串中第一次出现的索引
 e) int indexOf(int ch,int fromIndex)返回指定字符ch在此字符串中从指定位置后第一次出现的索引
 f) int indexOf(String str,int fromIndex)返回指定字符串str首字母在此字符串中从指定位置后第一次出现的索引
 g) String substring(int start)从指定位置start开始截取字符串,默认到末尾
 h) String substring(int start,int end)从指定位置开始截取字符串,到end位置,包含start、但是不包含end,如果找不到的话会返回-1
7、 String类的转换功能
 String s=”java”
 a) byte [] getBytes():把字符串转换为字节数组
  i. byte [] b=s.getBytes()//输出的为字符的ASCII码值
 b) char[] toCharArray()把字符串转换为字符数组
  i. char []c=s.toCharArray()
 c) static String valueOf(char [] cha)把字符数组转成字符串
 d) static String valueOf(int i)把int类型转换成字符串
  i. 注意String valueOf方法可以把任意类型数据转换为字符串
 e) String toLowerCase()把字符串转换为小写字母
  i. 注意:转为小写字母是产生一个新的字符串,原来的字符串s本身并没有变化
 f) String toUpperCase()把字符串转换为大写字母
 g) String concat(String str)把字符串拼接
8、 String类的其他功能
 a) 替换功能
  i. String replace (char old,char new) 将字符串中的每个old字符用new字符替代
  ii. String replace(String old ,String new)将字符串中的每个old字符串用new字符串替代,两个字符串old和new长度可以不一样
 b) 去除字符串两空格
  i. String trim()去除两端的空格,中间的空格不会去掉
 c) 按字典顺序比较两个字符串(如果字符串第一个字符相同则,从字符串的第一个不相同字符开始比较,如果都相同返回0,不同字符用s1-str来比较。如果两个字符串长度不一样,但是少的字符串和长的字符串前半部分都一样则返回两个字符串的长度差s1-str)
  i. int compareTo(String str)
  ii. int compareToIgnoreCase(String str)去除大小写

猜你喜欢

转载自blog.csdn.net/zfliu96/article/details/83110132