黑马程序员技术交流社区

标题: 技术帖 [打印本页]

作者: nici    时间: 2019-5-26 23:56
标题: 技术帖
String
String 概述:String类在java.lang包下,所以使用的时候不需要导包
String类代表字符串,Java 程序中的所有字符串文字()都被实现为此类的实例也就是说,java程序中所有的双引号字符串,都是String类的对象。
字符串的特点:
        字符串不可变,他们的值在创建后不能被更改
        虽然String的值是不可变的,但是它们可以被共享
        字符串效果上相当于字符数组(char[]),但是底层原理是字节数组(byte[])
String构造方法:
        1.public String():创建一个空白字符串对象,不含有任何内容
        2.public String(char[] chs):根据字符数组的内容,来创建字符串对象
        3.public String (byte[] bys):根据字节数组的内容,来创建字符串对象
        例如: byte[] bys = {97,98,99};
                  String s = new String(bys);
                  sout(s);  //屏幕输出为:abc。所以输出为对应字符
        4.String s = “abc”;直接赋值的方法创建字符串对象,内容就是abc
String对象的特点:
        1.通过new 创建的字符串对象,每一次new都会申请一个内存空间,虽然内容相同,但是地址值不同
        2.以“”方式给出的字符串,只要字符序列相同(顺序和大小写),无论在程序代码中出现几次,jvm都只会建立一个String对象,并在字符串池中维护。
string 以两种方式得到对象的特点。
字符串的比较:
1.使用==做比较
        基本数据类型:比较的是数据值是否相同
        引用类型:比较的是地址值是否相同
字符串是对象,它比较内容是否相同,是用一个方法来实现的,这方法叫:equals()
        public boolean equals(Object anObject):将此字符串与指定对象进行比较。由于我们比较的是字符串对象,所以参数直接传递一个字符串
  l例如:
        char [] ch = {‘a’, ‘b’, ‘c’};
        String s1 = new String(ch);
        String s2 = new String(ch);
        String s3 = “abc”;
        String s4 = “abc”;
        sout(s1 == s2);  // false。== 用来比较地址值
        sout(s1 == s3);  // false
        sout(s3 == s4);  // true
        sout(s1.equals(s2));
        sout(s1.equals(s3));             // equals方法比较内容都为true
如果对字符串进行拼接操作,每次拼接,都会构建一个新的String对象,即耗时,又浪费空间,而这种操作还不可避免。那么有没有一种比较好的方式可以解决这个问题呢?我们可以通过java提供的StringBuilder类就来解决这个问题。
StringBuilder概述:
        stringBuilder是一个可变的字符串类,我们可以把它看成是一个容器这里的可变指的是StringBuilder对象中的内容是可变的。
String和StringBuilder的区别:
String:内容是不可变的。
Stringbuilder:内容是可变的。

StringBuilder的构造方法:
public StringBuilder()常见一个空白的可变字符串对象,不含有任何内容。        public StringBuilder(String str)根据字符串的内容,来创建可变字符串对象。
StringBuilder的添加和反转方法
public StringBuilder append(任意类型)。添加数据,并返回对象本身。
返回的是自己本身,则可以链式编程:
String Builder sb = new StringBuilder();
sb.append(“hello”).append(“world”).append(100);
sout(“sb:” + sb);
屏幕输出为: helloworld100
public StringBuilder reverse()                      返回相反的字符序列。
001dlrowolleh

StringBuilder和String相互转换
1.从Stringbuilder 转换为String
        public String toString() : 通过toString()就可以实现吧StringBuilder转换为String
2.String 转换为StringBuilder
        public StringBuilder(String  s):通过构造方法就可以实现把String转换为Stringbuiler





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2