String类的相关用法和使用

1.String的特点和3+1中创造方式

java.lang.String类代表字符串
API当中说:Java程序中的所有字符串字面值(如"abc")都作为此类的实例实现。
也就是说,程序当中所有的双引号字符串都是String类的对象。(就算没有new,也照样是)

字符串的特点:
1.字符串的内容永不可变【重点】
2.正是因为字符串的内容不可变,所以所有字符串是可以共享的
3.字符串效果上相当于char[]字符数组,但是底层原理是byte[]字节数组

创建字符串的3+1中方式
三种构造方法:

  1. public String(); 创建一个空白字符串,不含任何内容
  2. public String(char[] array); 根据字符数组的内容,来创建对应的字符串
  3. public String(byte[] array); 根据字节数组的内容,来创建对应的字符串
    一种直接创造
    String str =“Hello”; //右边直接用双引号
    注意:直接写上双引号,就是字符串对象
public class February1{
	public static void main(String[] args) {
		//使用空参数构造方法
		String str1=new String();//小括号留空,说明什么内容都没有
		System.out.println("第一个字符串为:"+str1);
		//根据字符数组来创建字符串
		char[] charArray= {'A','B','C'};
		String  str2=new String(charArray);
		System.out.println("第二个字符串为:"+str2);
		//根据字节数组来创建字符串
		byte[] byteArray= {97,98,99};
		String str3=new String(byteArray);
		System.out.println("第三个字符串为:"+str3);
	}
	
}

2.字符串常量池

  • 字符串常量池:程序当中直接写上的双引号字符串,才在字符串常量池当中
  • 对于基本类型来说,==是进行数值的比较
  • 对于引用类型来说,==是进行地址值的比较
public class February2 {

	 public static void main(String[] args) {
		 String str1="abc";
		 String str2="abc";
		  
		 char[] charArray= {'a','b','c'};
		 String str3=new String(charArray);
		 System.out.println(str1==str2);  //true
		 System.out.println(str1==str3);  //false
		 System.out.println(str2==str3);  //false
	 }

	
	
}

3.比较字符串的相关方法

  • ==是进行地址值的比较,如果需要进行字符串内容的比较,可以使用两个方法
  • 方法. public boolean equals(Object obj);参数是任何对象,只有内容相同才会给true
  • 注意事项:
  • 1.任何对象都能用Object进行接收
  • 2.equals方法具有对称性,也就是a.equals(b)和b.equals(a)效果一样
  • 3.如果比较双方,一个是常量,一个是变量,建议把常量放在前面
  • 建议:“abc”.equals(str); 不建议:str.equals(“abc”);
  • 方法2. public boolean equalsIgnoreCase(String obj);
  •       和方法1一样,只是比较时,忽略字母的大小写
    
	public static void main(String[] args) {
		String str1="abc";
		String str2="abc";
		char [] arraychar= {'a','b','c'};
		String str3=new String(arraychar);
		//比较str1和str2
		System.out.println(str1.equals(str2));  //true
		//比较str1和str3
		System.out.println(str1.equals(str3));  //true
		//比较str2和str3
		System.out.println(str2.equals(str3));  //true
		
		String str4="QWR";
		//比较str1和str4
		System.out.println(str1.equals(str4));  //false
		String str5="AbC";
		//使用equalsIgnoreCase方法比较str1和str5
		System.out.println(str1.equalsIgnoreCase(str5));   //true
	}
}

4.字符串的获取的相关方法

 * public int length();获取字符串的字符个数
 * public String concat(String str); 将字符串和参数字符串连接成一个新的字符串;
 * public charAt(int index); 获取索引位置的单个字符(索引从0开始)
 * public int indexOf(String str); 查找参数字符串在本字符串当中首次出现的索引位置,如果没有,返回-1
	public static void main(String[] args) {
		//获取字符串的长度
		int length="lskfdlaksfajg".length();
		System.out.println(length);
		
		//连接字符串
		String str1="Hello ";
		String str2="Java";
		String str3=str1.concat(str2);
		System.out.println(str3);  //Hello Java
				
		//获取指定索引位置的单个字符
		char ch=str1.charAt(1);// 获取字符串str1的索引位置为1的单个字符
		System.out.println("索引位置为1的字符是:"+ch); //e
		
		//查找参数字符串在本字符串中首次出现的索引位置
		String original="Hello world";
		int A=original.indexOf("llo");
		System.out.println("第一次出现llo的索引位置是:"+A);
		
	}
}

5.字符串的截取方法

 * public String substring(int index); 截取从参数位置开始,一直到字符串结尾,返回新的字符串
 * public String substring(int began,int end); 截取从began位置开始,一直到end位置的字符串。
 * 注意:[began,end)  began位置的字符要取,end位置的字符不用取
	public static void main(String [] args) {
		String str1="Hello ZhuMinghua";
		//用substring方法进行截取
		String str2=str1.substring(6);
		System.out.println("截取得到的字符串为:"+str2);  //ZhuMinghua
		
		//用substring(int began,int end)方法进行截取
		String str3="abcdefghijklmnopqrstuvwxyz";
		String str4=str3.substring(0,9);
		System.out.println("截取得到的字符串为:"+str4);//abcdefghi
	}
}

6.String当中与转换相关的常用方法有:

 * public char[] toCharArray();将当前字符串转换成为字符数组作为返回值
 * public byte[] getBytes();获取当前字符串底层的字节数组
 * public string replace(CharSequence oldString, CharSequence newString);(指定要替换的内容)
 * 将出现的老字符串替换成为新的字符串,返回替换之后的新字符串
	public static void main(String[] args) {
		//将当前字符串转换成为字符数组作为返回值
		String str1="abcdef";
		char[] ch=str1.toCharArray();
		System.out.println("第1号元素为"+ch[1]);
		int x=ch.length;
		System.out.println("字符数组ch的长度是:"+x);
		System.out.println("字符数组ch的内容为:");
		for(int i=0;i<ch.length;i++)
		{
			System.out.println(ch[i]);
		}
		
		//获取当前字符串底层的字节数组
		String str2="AAaa";
		byte[] by=str2.getBytes();
		int s=by.length;
		System.out.println("字节数组by的长度为:"+s);
		System.out.println("字节数组的内容为:");
		for(int i=0;i<by.length;i++)
		{
			System.out.println(by[i]);
		}
		
		//将老字符串替换成新字符串,返回新的字符串
		String str3="你好,兄弟。";
		String str4=str3.replace("兄弟","朋友");
		System.out.println(str4);  //你好,朋友。
		//例如打游戏时,骂脏话,系统会把脏话替换为**输出;
		String str5="你会不会玩,你大爷的!你大爷的!!你大爷的!!!";
		String str6=str5.replace("你大爷的","****");
		System.out.println(str6);  // 你会不会玩,****!****!!****!!!
	}

}

7.分割字符的方法

 * public String[] split(String regex);按照参数的规则,将字符串分割成为若干份
 * split方法的参数是“正则表达式”
 * 因此,用英文句号“.”进行分割,必须写成"\\.",否则会分割失败
   public static void main(String[] args) {
	   String str1="aaa,BBB,yyy";
	   //用逗号“,”,将字符串str1分割
	   String[] str2=str1.split(",");
	   //遍历str2字符数组
	   for(int i=0;i<str2.length;i++)
	   {
		   System.out.println(str2[i]);
	   } 
	   String str3="HHH.hhh,www";
	   //用英文“.”,将字符串str3分割
	   String [] str4=str3.split(".");
	   //遍历str4字符数组
	   for(int i=0;i<str4.length;i++)
	   {
		   System.out.println(str4[i]);
	   }//结果为空
	   
	   //测量str4字符数组的长度
	   int a=str4.length;
	   System.out.println(a);//输出结果为:0
	   
   }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值