java入门知识点5:字符串

String与StringBuilder的使用及区别

1.Java 中字符串的不变性
1>String 对象创建后则不能被修改,是不可变的,所谓的修改其实是创建了新的对象,所指向的内存 空间不同
2> 每次 new 一个字符串就是产生一个新的对象,即便两个字符串的内容相同,使用 ”==” 比较时 也为 ”false” ,如果只需比较内容是否相同,应使用 ”equals()” 方法

在这里插入图片描述

public static void main(String[] args) {
		
	String s1 = "imooc";
		
	String s2 = "imooc";
        
       	
	String s3 = "I love"+s1;
		
        
	System.out.println("s1和s2内存地址相同吗?" + (s1 == s2));
        
       				System.out.println("s1和s3内存地址相同吗?" + (s1 == s3));

		
	String s4 = "I love " + s1;
      
	System.out.println("s3和s4内存地址相同吗?" + (s4 == s3));
	
}



运行结果:
s1和s2内存地址相同吗?true
s1和s3内存地址相同吗?false
s3和s4内存地址相同吗?false

2.String类的常用方法
在这里插入图片描述
注意:

  1. 字符串 str 中字符的索引从0开始,范围为 0 到 str.length()-1
  2. 使用 indexOf 进行字符或字符串查找时,如果匹配返回位置索引;如果没有匹配结果,返回 -1
  3. 使用 substring(beginIndex , endIndex) 进行字符串截取时,包括 beginIndex 位置的字符,不包括 endIndex 位置的字符

 public static void main(String[] args) {
        
	String fileName = "HelloWorld.java"; 
      
	String email = "[email protected]";
		
		
 /*
        
参考步骤:
       
1、获取文件名中最后一次出现"."号的位置
       
 2、根据"."号的位置,获取文件的后缀
       
 3、判断"."号位置及文件后缀名
        
*/
       	
int index = fileName.lastIndexOf(".");
        
        		
String prefix = fileName.substring(index);
 
// 判断必须包含"."号,且不能出现在首位,同时后缀名为"java"   	
if (index > 0 &&(prefix.equals(".java"))) {
			
	System.out.println("Java文件名正确");
		
} else {
			
	System.out.println("Java文件名无效");
		
}

       
 // 判断邮箱格式是否正确:合法的邮箱名中至少要包含"@", 并且"@"是在"."之前
        
 /*
        参考步骤:
       
 1、获取文件名中"@"符号的位置
       
 2、获取邮箱中"."号的位置
        
3、判断必须包含"@"符号,且"@"必须在"."之前
       
 */
	    	
int index2 = email.indexOf("@");
        
        	
int index3 = email.indexOf('.');    	
if (index2 != -1 && index3 > index2) {
			
	System.out.println("邮箱格式正确");
		
} else {
			
	System.out.println("邮箱格式无效");
		
}
	
}
}

3.StringBuilder 类
定义:
在这里插入图片描述
4.StringBuilder 类的常用方法
在这里插入图片描述

public static void main(String[] args) {
		// 创建一个空的StringBuilder对象
		StringBuilder str = new StringBuilder();
        
		// 追加字符串
		str.append("jaewkjldfxmopzdm");
		
        // 从后往前每隔三位插入逗号
		for(int i = str.length()-3; i >= 0; i=i-3 )
		{
		    str.insert(i,",");   
		}
        // 将StringBuilder对象转换为String对象并输出
		System.out.print(str.toString());
	}



运行结果:
j,aew,kjl,dfx,mop,zdm

5.String与StringBuilder的区别
在这里插入图片描述

效率高低:

StringBulider>StringBuffer>String;String确定字符串之后是固定的不可改变的;重新添加字符串就会成为一个新的对象,并非是原对象;StringBulider确定字符串后可对字符串进行修改、增加内容,且指定的还是原对象,性能比string高;StringBulider和StringBuffer比较,前者没有实现线程安全功能,后者是线程安全,所以前者比后者高;

6.检测字符串是否相等
若检验两个字符串是否相等,而不需要区分大小写,则使用equalsIgnoreCase方法eg:“Hello”.equalsIgnoreCase(“hello”)

猜你喜欢

转载自blog.csdn.net/qq_43501462/article/details/98764620