Java 中 String

    科技2024-04-17  10

    Java 中 String 类

    在Java中不存在字符串这一数据类型,但是考虑到程序开发的需要,所以通过设计的形式提供了String类,并且该类的对象可以直接赋值。但是String类本身有一个最大的缺陷:内容声明后就无法改变。为了弥补这个缺点,Java提供了StringBuffer类。

    提示:以下是本篇文章正文内容,下面案例可供参考

    在需要使用字符串时,直接按上述方法声明一个对象即可。而对于String来说,里面还提供了许多的方法可供使用。 ##1、字符串的比较 基本数据类型的比较可以 “==” 来比较,但是对于String类型的数据,再由 “==” 比较时,比较的不再是内容,而是堆内存地址。如下图 为此,Java提供了equals()方法,可以直接进行字符串内容的比较。如下图 但是在某些情况下,使用“==”也可以直接比较字符串的内容。如下图中的str3与str1的比较和str1与str4的比较。

    原因在于在使用str1=str3语句时,str1与str3指向的是堆区中的同一个地址。指向关系如下图所示 当然,这时候可能有小伙伴要问了,为什么在平时采用直接赋值方法时,用“==”比较的是内容呢?如下图str1与str4的比较 这就涉及到字符串常量池的问题了。什么是字符串常量池呢?简而言之,就是Java 为了避免重复开辟堆内存空间,而将所有通过直接赋值实例化的String类对象自动保存到这个常量池中,以供下次重复使用。感兴趣的小伙伴可以下去搜索更多的资料了解。

    ##字符串修改 我们应该知道,String类数据的保存是基于数组实现的,而数组一旦定义,其长度便不可修改,这也就意味着String类对象的内容一旦声明就不可直接改变了。虽然其内容无法改变,但是其引用是可以改变的。如下图我将str1的内容改变了,eclipse也没有报错 可能有小伙伴就会说了,你这不是已经改变了str1的内容吗,怎么还说String类对象的内容不可改变呢?这里就需要注意了,我并不是直接改变了str1原本的内容,而是改变了str1的引用。简单来说,就是我有在堆内存区开辟了一个空间,并使str1指向了这片内存。 如此一来的话,之前的那个堆内存就变成了无用的垃圾,如果这样的语句存在太多,就会大大增大CPU的负担,使得性能下降,所以在程序要避免这样使用方法。

    Processed: 0.023, SQL: 12