• Java中的String类


    如何创建字符串

    最基本的方式

    String str = "hello";
    

    因为字符串属于对象,所以和其它对象一样,可以使用关键字和构造方法来创建 String 对象。

    String s2 = new String("hello");
    

    字符串的储存位置

    String 创建的字符串存储在公共池中,而 new 创建的字符串对象在堆上。

    String 类不可变的特性

    String 类是不可变的,所以你一旦创建了 String 对象,那它的值就无法改变,因为我们在查看源码后可以发现源码使用的是final修饰符

    public final class String
    

    举个栗子:

    String s = "old";
    System.out.println("s=" + s);
    
    s = "new";
    System.out.println("s=" + s);
    

    输出结果改变了,String对象还是不可变的,这是因为s 只是一个 String 对象的引用,并不是对象本身,当执行 s = "new"; 创建了一个新的对象 "new",而原来的 "old" 还存在于内存中。

    length() 方法,length 属性和 size() 方法的区别:

    • length 属性是针对 Java 中的 数组 来说的,要求数组的长度可以用其 length 属性;
    • length() 方法是 针对 字符串 来说的,要求一个字符串的长度就要用到它的length()方法;
    • Java 中的 size() 方法是针对 泛型集合 说的, 如果想看这个泛型有多少个元素, 就调用此方法来查看
    String array[] = {"first", "second", "third"};//字符串数组
    String a = "hello";//字符串
    ArrayList<String> list = new ArrayList<>();
    list.add(a);
    System.out.println("数组array的长度为" + array.length);
    System.out.println("字符串a的长度为" + a.length());
    System.out.println("list中元素个数为" + list.size());//结果为3 5 1
    

    常见的字符串比较

    1.储存位置不一样,s1在常量池中而s2在堆内存中。

    2."=="比较的是对象的地址, "equals"比较的是值。

    String s1 = "abc";            // 常量池
    String s2 = new String("abc");     // 堆内存中
    System.out.println(s1 == s2);        // false两个对象的地址值不一样。
    System.out.println(s1.equals(s2)); // true
    

    Java中的String、StringBuffer 和 StringBuilder 的区别

    • String: 字符串常量,字符串长度不可变。用于存放字符的数组被声明为final的,因此只能赋值一次,不可再更改。操作少量的数据用 String 。
    • StringBuffer:字符串变量(Synchronized,即线程安全)。多线程操作大量数据,用StringBuffer。
    • StringBuilder:字符串变量(非线程安全)。单线程操作大量数据用StringBuilder。
  • 相关阅读:
    TCP拥塞控制算法纵横谈-Illinois和YeAH
    精度解析百思不得姐流行框架之精华版
    3D物体识别的如果检验
    Android内存泄漏检測与MAT使用
    Android学习——在Android中使用OpenCV的第一个程序
    virtio-netdev 数据包的发送
    【剑指Offer学习】【面试题23:从上往下打印二叉树】
    纵谈进程枚举
    《谈学单片机有前途还是嵌入式系统有前途》一文吴坚鸿回复整理
    结构类模式(七):代理(Proxy)
  • 原文地址:https://www.cnblogs.com/IMxinu/p/14156393.html
Copyright © 2020-2023  润新知