关于java中String类相关的内容

本文介绍了Java中的String类和StringBuilder类,强调了String的引用特性、字符串常量池的工作原理,以及StringBuilder的高效字符串拼接和操作方法。通过对比两者,展示了StringBuilder在性能上的优势。
摘要由CSDN通过智能技术生成

1.String是一个类,是引用数据类型。

初学数据类型的时候我们知道,如果我们需要定义一个字符串类型的变量时需要用String这个数据类型。首先,String 是一种引用数据类型。他的特点就是,用String定义的每一个变量都是,都是他的对象,也就是可以调用其中的方法。

如:

String a = "abc";

通过上述的定义我们定义了一字符串变量:a,同时a也是String这一个类的中的一个对象。(java中只有String有这个功能。

字符串常量池:当我们使用双引号创建字符串对象时,会检测常量池中是否存在该数据。如果存在:直接复用原来的地址,如果不存在生成一份地址,这个份地址对应的是字符串abc。接着按照顺序结构运行程序,再次创建一个对象s2,赋值abc,系统会在字符串常量池中寻找这个字符串,由于刚才s1已经在字符串常量池中储存过这个abc这个字符串,因此系统会将这个字符串的地址赋给说s2,因此如果此时打印比较s1与s2就可以得到true,因为两者的地址是一样的。

2.String类中常用的方法。

如果我们想要查询一个类中的成员方法我可以通过使用API(一个java类以及用途的文档,需要从网上进行下载)这一个工具来进行查询。

上图中java是7版本之前的字符串常量池存在于方法区里面,后面java8之后把字符串常量池弄在了堆内存中。

首先主方法进栈运行程序,创建了一个String类的对象,系统检测字符串常量池中是否存在着这个abc这个字符串,如果有直接拿来用,没有的

使用API的具体步奏:1.在索引位置搜索自己要查看的类。

                                   2.看包:目的看是不是java.long包(核心包,存在这个包的类不需要进行导                                         导包就可以进行使用)如果不是java.long包需要进行导包操作。

                                   3.看这个类的介绍:

                                      目的:为了将该类的作用

                                   4.看这个类的构造方法。

                                      目的,为了将这个类的对象创建出来。

                                    5.看这个类的成员方法:

                                      1.方法名

                                      2.参数名

                                      3.返回值

                                      4.介绍

方法:

public String():创建一个空白的字符串数组,里面不含任何内容。

public String(char [] chs);根据传入的字符数组来拼接成字符串。

public String(String original):根据传入的字符串,来创建字符串对象。

Boolean Boolean equalsIgnoreCase(String anotherString):更具传入的字符串进行比较来,判断字符串内容是否相等。//不能直接利用逻辑运算符==来进行左右两边的判断,这样判断的只是地址值。

public String substring(int beginIndex):根据传入的索引开始做截取,截取到字符串的末尾。

特点具有String类型的返回值,需要用一个变量进行接收

public String substring(int beginIdex, int endIndex):根据传入的索引位置,从某一位置到另一个位置进行截取,截取特点包括头部不包括尾部。

public String split(String regex):根据传入的字符串来进行切割操作,返回的结果是一个字符串类型的数组。

public int  length();:返回字符串的长度。

关于字符串的遍历:

1.利用toCharArray方法,将字符串转化为字符数组。

然后利用遍历数组的方法

   String string = "adadwadwdadfafsfga";
     char [] chass =    string.toCharArray();
        for (int i = 0; i < chass.length; i++) {
            System.out.println(chass[i]);
        }

2.利用charAt(int Index)

根据索引将字符串转化为字符。+

String name = "dada";
char [] ar = new char [name.length];
for(int i  = 0;i<name.length();i++){
    ar [i] = name.charAt(i); 
}

利用上述方法可以将一个字符串转化一个字符数组。

但是通关上述两种方法可以得知,第一种方法是要快于第二种方法的,第二种方法charAt进行遍历的时候,需要方法一步一步将字符串中的元素转化为字符,这样方法反复的进栈出栈,使程序运行的时间大大增长。

关于StringBuilder类

StringBuilder类可以提高字符串的操作效率。

System.currentTimeMillis();//这个代码可以直接获得从1970到现在的时间。//单位是毫秒值

1.关于StringBuilder类,StringBuilder是一个可变的字符序列,又叫做字符串缓冲区,可以将其理解为是一个容器,这个容器可以存放任意的数据类型,但是只要进入这个容器中,全部都会变成字符串。

2.StringBuilder类的构造方法。

StringBuilder()构造一个不带任何字符串的字符串生成器,其容量为16个字符,如果添加的字符串超过了16个会进行扩容。

StringBuilder 对象名 = new StringBuilder();

StringBuilder 对象名 = new StringBuilder(String stat);

3.StringBuilder中常用的成员方法。

public append StringBuilder()//括号中可以添加任意数据类型

 public static void main(String[] args) {
        StringBuilder IO = new StringBuilder();
        IO.append("aadd");
        System.out.println(IO);
        IO.append("dddwadss");
        System.out.println(IO);
        IO.append(1);
    }

上述程序运行打印的结果就是

public StringBuilder reverse() //返回的结果是对象

该方法可以用来反转字符串缓冲区里面的字符串的顺序。//可以运用于对称数。

public int length() 返回长度

该方法可以得到字符串缓冲区中所储存字符串的长度。

public String toString() 

该方法可以将StringBuilder类型的数据转化为String类型,方便后面使用。

链式编程,当返回的结果仍是这个对象时,我们可以继续调用这个类中的方法。例如

这样做可以简化代码的写法。

public static void main(String[] args) {
        StringBuilder d = new StringBuilder();
     String ne =    d.append("adsde").append("sdersd").reverse().toString();
        System.out.println(d);
        System.out.println(ne);
    }

为何StringBuilder的效率拼接速度要超过String的原因。用String进行字符串拼接时需要一次建立一个StringBuilder,而String需要不断地创建一个又一个的对象,同时也要在字符串常量池里面进行寻找,甚至还要再次利用StringBuilder进行拼接操作,因此在进行字符串的操作时往往采用StringBuilder类进行工作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值