Java之String对象

Java之String对象,第1张

Java之String对象 String 对象 String 构造方法
  • public String() 创建一个空白字符串对象,不含任何内容
  • public String(char[] chs) 根据字符数组的内容,来创建字符串对象
  • public String(byte[] bys) 根据字节数组的内容,来创建字符串对象
  • String s = "abc" 直接赋值的方法创建字符串对象,内容就是 abc
  • 推荐使用直接赋值的方法创建字符串对象
String 对象的特点
  • 通过 new 创建的字符串对象(前三种),每一次 new 都会申请一个内存空间,即使内容相同,但地址是不同的
  • 通过直接赋值的方法创建字符串对象,只要字符序列完全相同(顺序,大小写都相同),无论在程序中出现几次,都会只创建一个对象,用一个内存地址
public class HelloWorld {
    public static void main(String[] args) {
        char[] chs = {'a', 'b', 'c'};
        byte[] bys = {97, 98, 99};
        String s1 = new String(chs);
        String s2 = new String(chs);
        String s3 = new String(bys);
        String s4 = "abc";
        String s5 = "abc";
        System.out.println(s1 == s2);
        System.out.println(s4 == s5);
        System.out.println(s1 == s4);
        System.out.println("s1:" + s1);
        System.out.println("s3:" + s3);
        System.out.println("s4:" + s4);
        System.out.println(s1.equals(s3));
        System.out.println(s4.equals(s5));
    }
}
//输出:
//false
//true
//false
//s1:abc
//s3:abc
//s4:abc
//true
//true
String 字符串的比较

不能直接用 == 进行比较,因为对于引用类型,该符号比较的是地址值是否相同,无法比较内容是否相同

那么对于字符串比较内容是否相同,是通过一个方法来实现 equals()

String 字符串常用方法
  • s.length()
  • s.charAt()
  • s.equals()
//str.length()  字符串的长度
//str.charAt(index)  遍历字符串的每个字符,注意不能直接用索引,是错的,和数组不同
//char[] chs = {1, 2, 3}
//String s = new String(chs)
//注意:chs是字符数组,s是字符串对象
//str.equals()  比较两个字符串是否内容相同
StringBuilder

StringBuilder 是一个可变的字符串,我们可以把它看作是一个容器

StringBuilder 和 String 的区别:

  • StringBuilder :内容是可变的
  • String :内容是不可变的
StringBuilder 的添加和反转方法(String 中没有的)

如果想对字符串进行拼接和反转,可以先转为 StringBuilder 类型,在调用方法,比较简单,再转回原来 String 类型

  • sb.append(任意类型) :添加数据并返回对象本身
  • sb.reverse()
public class HelloWorld {
    public static void main(String[] args) {
        StringBuilder sb = new StringBuilder();
        StringBuilder sb2 = sb.append("hello");  //返回对象本身
        System.out.println("sb:" + sb);
        System.out.println("sb2:" + sb2);
        System.out.println(sb == sb2);
    }
}
//输出:
//hello
//hello
//true

public class HelloWorld {
    public static void main(String[] args) {
        StringBuilder sb = new StringBuilder();
        sb.append("hello");
        sb.append("world");
        sb.append("java");
        sb.append(100);
        System.out.println("sb:" + sb);
    }
}
//输出:
//helloworldjava100

//链式调用:
public class HelloWorld {
    public static void main(String[] args) {
        StringBuilder sb = new StringBuilder();
        sb.append("hello").append("world").append("java").append(100);
        System.out.println("sb:" + sb);
        sb.reverse();
        System.out.println("sb:" + sb);
    }
}
//输出:
//sb:helloworldjava100
//sb:001avajdlrowolleh
两种类型相互转化
  • String s = sb.toString() :StringBuilder 转换为 String
  • StringBuilder sb = new StringBuilder(s) : 通过构造方法将String 转换为StringBuilder

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/3974686.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-10-21
下一篇 2022-10-21

发表评论

登录后才能评论

评论列表(0条)

保存