Java-String类

本文深入探讨了Java中的String类,强调其不可变性。通过示例代码展示了String对象在内存中的行为,包括常量池的使用以及字符串拼接和替换操作如何产生新对象。同时,提到了String对象的序列化和比较功能,以及不同创建方式对内存的影响。

Java-String类

1.概述

String:字符串,使用一对""引起来表示。

  • String声明为final的,不可被继承
  • String实现了Serializable接口:表示字符串是支持序列化的。
  • 实现了Comparable接口:表示String可以比较大小
  • String内部定义了final char[] value用于存储字符串数据
  • 通过字面量的方式(区别于new给一个字符串赋值,此时的字符串值声明在字符串常量池中)
  • 字符串常量池中是不会存储相同内容(使用String类的equals()比较,返回true)的字符串的

2.String 常量不可变 举例

String不可变

package com.lmw.classtest;
import org.junit.Test;

/**
 * @author
 * @version 1.0.0
 * @createTime 2022/5/15 16:31
 * @description
 */

public class StringTest {
    
    @Test
    public void test() {
        // 在常量池中创建一个abc 及地址 s1变量指向abc地址
        String s1 = "abc";
        // 没有创建新的abc及地址,只是s2变量也指向了abc的地址
        String s2 = "abc";
        //在常量池中创建hello,修改变量s1 指向hello
//        s1 = "hello";
        // 在常量池中创建了一个新的常量 abcdef
        String s3 = s1 + "def";
        // 修改字符或者字符串时也是在常量池中新创建了一个常量
        String s4 = s2.replace("a", "x");
        
        System.out.println(s1 == s2);
        System.out.println(s1);
        System.out.println(s2);
        System.out.println(s3);
        System.out.println(s4);

    }
    
    @Test
    public void test2() {
        // 此时的s1和s2的数据声明在方法区中的字符串常量池中
        String s1 = "javaee";
        String s2 = "javaee";
        // 此时的s3 和s4 保存的地址值,是数据在堆空间中开辟空间以后对应存储值
        String s3 = new String("javaee");
        String s4 = new String("javaee");


        System.out.println(s1 == s2); // true
        System.out.println(s1 == s3); // false
        System.out.println(s1 == s4); // false
        System.out.println(s3 == s4); // false
    }
}

String s = new String("abc"); 会在内存中创建两个对象。

false
}
}


`String s = new String("abc");` 会在内存中创建两个对象。
![在这里插入图片描述](https://img-blog.csdnimg.cn/f6aa77858f414544855d030d87c14773.png#pic_center)

### 回答1: Java面向对象中的String是一个非常重要的,它用于表示字符串。String是不可变的,也就是说,一旦创建了一个字符串对象,就不能再改变它的值。String提供了许多方法来操作字符串,例如,连接字符串、查找子字符串、比较字符串等等。在Java程序中,我们经常使用String来处理文本数据。 ### 回答2: StringJava中最基本也是最常用的之一。它表示一组字符序列,这些字符可以是字母、数字、空格、标点符号或任何其他字符。StringJava中的不可变,一旦创建了一个字符串对象,它就不能被改变。如果需要修改字符串内容,则需要创建一个新的字符串对象。 JavaString提供了许多方法来操作字符串,这些方法包括字符串的比较、搜索、格式化和分割。其中最常用的方法包括: 1. equals():用于比较两个字符串是否相等。如果相等则返回true,否则返回false。 2. compareTo():用于比较两个字符串的大小关系。 3. length():用于获取字符串的长度。 4. substring():用于获取子字符串。 5. charAt():用于获取字符串中的某个字符。 6. indexOf():用于查找某个字符或子字符串在字符串中的位置。 7. toUpperCase():用于将字符串转换为大写。 8. toLowerCase():用于将字符串转换为小写。 9. trim():用于删除字符串前后的空格。 String还可以通过“+”号来进行字符串的连接。例如: String str1 = "Hello"; String str2 = "World"; System.out.println(str1 + " " + str2); 这段代码会输出“Hello World”。 总之,StringJava中非常重要的之一,它不仅可以用于字符串的存储和处理,还可以用于文件的读写、网络通信等方面。掌握该的使用方法可以让我们在开发Java应用程序时更加得心应手。 ### 回答3: Java是一种面向对象的编程语言,其string是基于对象的操作和表示字符串的StringJava中最常用的之一,可以用于存储和操作字符序列。下面介绍与string有关的几个方面。 1. String的特性 String是不可变的,也就是说,一旦创建了一个字符串对象,它的值就不能被改变。例如,当你创建了一个String对象并给它赋值后,你不能够改变它的值。如果你想要改变一个字符串对象的值,你必须创建一个新的字符串对象来替换旧的。 2. String的方法 在Java中,string有很多方法,比较常用的字符串方法包括indexOf、length、toUpperCase以及toLowerCase等。例如,String的indexOf方法可以用来查找一个字符串中的某个子串,如下所示: String str = "Hello World!"; int index = str.indexOf("World"); System.out.println(index); // 输出为7 另外,String还提供了很多其他有用的方法,如trim、charAt、endsWith、startsWith以及substring等。 3. String的常量池 在Java中,对于字符串的创建,编译器会自动在字符串常量池中创建一个字符串对象。当你在程序中使用相同的字符串常量时,Java会重用已经存在的字符串常量,这样可以减少内存的消耗。例如,以下三个字符串都会指向相同的字符串常量对象: String str1 = "Hello World!"; String str2 = "Hello World!"; String str3 = "Hello World!"; 4. 字符串的连接 在Java中,你可以使用加号(+)来连接两个字符串。而对于大量的字符串连接操作,Java中推荐使用StringBuilder或StringBuffer,因为它们会更高效地处理字符串的操作。 最后,总结一下,StringJava中最常用的之一,它可以用于存储和操作字符序列。String的特性包括不可变性,同时它提供了很多方法来操作被存储的字符串。此外,Java还提供了字符串常量池来节省内存,同时也可以使用StringBuilder或StringBuffer来完成大量字符串的操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值