String字符串

许多知识在我创作的文章 “java变量的两种类型” 里提到了,这里就不赘述类,大家可以参考。
**

字符串

**

什么是 Java 中的字符串?

字符串被作为 String 类型的对象处理。
包: java.lang (默认自动导入所有的程序)
创建String对象的方法:

  • String s1 = “imooc”;
  • String s2 = new String(); //空字符串
  • String s3 = new String(“imooc”);

JAVA中字符串的不变性

  • String对象创建后则不能被修改,是不可变的。
  • 所谓的修改其实是创建了新的对象,所指向的内存空间不同。

例子:
在这里插入图片描述
在这里插入图片描述
大家可以结合我画的图理解(忽略我的丑字TAT)
在这里插入图片描述
“==” 和 equals() 有什么区别呢?

==: 判断两个字符串在内存中首地址是否相同,即判断是否是同一个字符串对象

equals(): 比较存储在两个字符串对象中的内容是否一致

注意:

  • 多次出现的字符常量,JAVA编译程序只创建一个(引用指向同一内存地址)
  • 通过 String s1=“爱慕课”;
    声明了一个字符串对象, s1 存放了到字符串对象的引用,在内存中的存放引用关系如下图所示:
    在这里插入图片描述
    通过 s1=“欢迎来到:”+s1; 改变了字符串 s1 ,其实质是创建了新的字符串对象,变量 s1 指向了新创建的字符串对象,如下图所示:
    在这里插入图片描述
  • 一旦一个字符串在内存中创建,则这个字符串将不可改变。如果需要一个可以改变的字符串,我们可以使用StringBuffer或者StringBuilder。
  • 每次 new 一个字符串就是产生一个新的对象,即便两个字符串的内容相同,使用 ”==” 比较时也为 ”false” ,如果只需比较内容是否相同,应使用 ”equals()” 方法

**

String类的常用方法

**
String类的常用方法:
在这里插入图片描述
代码:
在这里插入图片描述
结果:
在这里插入图片描述
注意:

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

例子:

public class HelloWorld {
    public static void main(String[] args) {
        // Java文件名
		String fileName = "HelloWorld.java"; 
        // 邮箱
		String email = "laurenyang@imooc.com";
		
		// 判断.java文件名是否正确:合法的文件名应该以.java结尾
        /*
        参考步骤:
        1、获取文件名中最后一次出现"."号的位置
        2、根据"."号的位置,获取文件的后缀
        3、判断"."号位置及文件后缀名
        */
        //获取文件名中最后一次出现"."号的位置
		int index = fileName.lastIndexOf('.');
        
        // 获取文件的后缀
		String prefix = fileName.substring(index+1,fileName.length());
        
		// 判断必须包含"."号,且不能出现在首位,同时后缀名为"java"
		if (   index!=-1 && 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("邮箱格式无效");
		}
	}
}

代码:
在这里插入图片描述
结果:
在这里插入图片描述
例子:

public class HelloWorld {
    public static void main(String[] args) {
		// 定义一个字符串
		String s = "aljlkdsflkjsadjfklhasdkjlflkajdflwoiudsafhaasdasd";
        
        // 出现次数
		int num = 0;
        
         // 循环遍历每个字符,判断是否是字符 a ,如果是,累加次数
		for ( int i=0;i<s.length();i++                        )
		{
            // 获取每个字符,判断是否是字符a
			if (    s.charAt(i) == 'a'           ) {
                // 累加统计次数
				num++; 
			}
		}
		System.out.println("字符a出现的次数:" + num);
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值