java-String类

目录

类 String

1.String概述:

2.String常见构造方法

 3.创建字符串对象的区别对比:

4.String字符串的特点

5.字符串的比较

(1)使用 == 做比较

(2)equals():比较内容是否相同(区分大小写)

(3)equalsIgnoreCase():字符串的比较(不区分大小写)


类 String

1.String概述:

  • String类在java.lang包下,所以使用的时候不需要导包
  • String类代表字符串。Java程序中的所有字符串字面值(如“abd")都作为此类的实例实现。也就是说,java程序中所有的双引号字符串,都是String类的对象。
  • 字符串是常量;它们的值在创建之后不能更改。字符串缓冲区支持可变的字符串。因为String对象是不可变的,所以可以共享。例如:

        String str = "abc";

等效于:

        char data[] = {"a","b","c"};

        String str = new String(data);

2.String常见构造方法

方法名说明
public String()创建一个空白字符串对象,不含有任何内容
public String(char[] chs)根据字符数组的内容,来创建字符串对象
public String(String original)根据传入的字符串内容,来创建字符串对象
String s = "abc";直接赋值的方式创建字符串对象,内容就是abc
  • 例子演示:
public class Constructor {
    /*
    注意:String类比较特殊,打印其对象名的时候,不会出现内存地址
    而是该对象的真实值
     */
    public static void main(String[] args) {
        //public String():创建一个空白字符串对象,不含有任何内容
        String s1 = new String();
        System.out.println(s1);

        //public String(char[] ch):根据字符数组的内容,来创建字符串对象
        char[] ch = {'a','b','3'};
        String s2 = new String(ch);
        System.out.println(s2);

        //public String(String original):根据传入的字符串内容,来创建字符串对象
        String s3 = new String("123456");
        System.out.println(s3);

        //String s = "";
        String s = "abcd";
        System.out.println(s);
    }
}

 3.创建字符串对象的区别对比:

  • 看这两段代码:
String str1 = "abc";
String str2 = "abc";
System.out.println(str1==str2); //输出:true

char[] ch1 = {'a','b','c'};
String str3 = new String(ch);
String str4 = new String(ch);
System.out.println(str3==str4); //输出:false

为什么第一段输出的是true,而第二段输出的却是false呢?

原因是:双引号创建的字符串对象,在字符串常量池中存储。

              通过构造方法创建的字符串对象,在堆内存中存储。 

  • 下列代码的运行:
        /*
        当字符串之间使用+号串联(拼接)的时候,系统底层会自动创建一个StringBuilder对象
        然后再调用其append方法完成拼接
        拼接后,再调用其toString方法转换成String类型
         */
        String s1 = "abc";
        String s2 = "ab";
        String s3 = s2 + 'c';
        System.out.println(s1==s3); //运行结果:false

        /*
        java存在常量优化机制,在编译的时候,就会将"a"+"b"+"c"拼接成"abc"
        而这个和上面那个代码不一样,上面那个代码是变量+常量,而下面这个代码是常量+常量
         */
        String s4 = "abc";
        String s5 = "a"+"b"+"c";
        System.out.println(s4==s5); //运行结果:true

4.String字符串的特点

  • java程序中所有的双引号字符串,都是String类的对象
  • 字符串不可变,它们的值在创建后不能被更改
  • 虽然String的值是不可变的,但是它们可以被共享
  • 字符串常量池:当使用双引号创建字符串对象的时候,系统会检查该字符串是否在字符串常量池中存在

                不存在:创建

                存在:不会重新创建,而是直接被复用

5.字符串的比较

(1)使用 == 做比较

  • 基本类型:比较的是数据值是否相同
  • 引用类型:比较的是地址值是否相同

(2)equals():比较内容是否相同(区分大小写

  • public boolean equals(Object anObject):将此字符串与指定对象进行比较。由于我们比较的是字符串对象,所以参数直接传递一个字符串
  • 代码演示:
        String s1 = "abc";
        String s2 = "ABC";
        String s3 = "abc";
        char[] ch = {'a'+'b'+'c'};
        String s4 = new String(ch);
        String s5 = new String(ch);
        System.out.println(s1.equals(s2)); //false
        System.out.println(s1.equals(s3)); //true
        System.out.println(s1.equals(s4)); //false
        System.out.println(s4.equals(s5)); //true

(3)equalsIgnoreCase():字符串的比较(不区分大小写

  • 代码演示:
        String s1 = "abc";
        String s2 = "ABC";
        String s3 = "abc";
        System.out.println(s1.equalsIgnoreCase(s2)); //true
        System.out.println(s1.equalsIgnoreCase(s3)); //true

如果有哪里说错的,欢迎评论区说出来。

Java中的String是一个非常重要的,它代表了字符串型的数据。以下是关于JavaString的一些介绍和操作方法: 1. StringJava中的一个,用于表示字符串型的数据。 2. String的对象是不可变的,也就是说,一旦创建了一个String对象,就不能再修改它的值。 3. 可以使用双引号来创建一个String对象,例如:String str = "Hello World"。 4. String中有很多方法可以用来操作字符串,例如获取字符串长度、比较字符串、查找子字符串等等。 5. 获取字符串长度的方法是:str.length(),其中str是一个String对象。 6. 比较两个字符串是否相等的方法是:str1.equals(str2),其中str1和str2都是String对象。 7. 查找子字符串的方法是:str.indexOf(subStr),其中str是一个String对象,subStr是要查找的子字符串。 以下是一个Java程序示例,演示了如何使用String的一些方法: ```java public class StringDemo { public static void main(String[] args) { String str1 = "Hello"; String str2 = "World"; String str3 = "Hello"; // 获取字符串长度 System.out.println("Length of str1: " + str1.length()); // 比较字符串是否相等 System.out.println("str1 equals str2? " + str1.equals(str2)); System.out.println("str1 equals str3? " + str1.equals(str3)); // 查找子字符串 System.out.println("Index of 'llo' in str1: " + str1.indexOf("llo")); } } ``` 输出结果为: ``` Length of str1: 5 str1 equals str2? false str1 equals str3? true Index of 'llo' in str1: 2 ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

烂尾歌·

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值