• String基础


    一:

    String,StringBuffer与StringBuilder的区别??
    String 字符串常量
    StringBuffer 字符串变量(线程安全)
    StringBuilder 字符串变量(非线程安全)

    在大部分情况下 StringBuffer > String
    在大部分情况下 StringBuilder > StringBuffer
    java.lang.StringBuilder一个可变的字符序列是5.0新增的。此类提供一个与 StringBuffer 兼容的 API,但不保证同步。
    该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。
    如果可能,建议优先采用该类,因为在大多数实现中,它比 StringBuffer 要快。两者的方法基本相同。

    二:

    输出结果

                    String a="abc";
    		String b="abc";
    		String c=new String("abc");
    		String d="ab"+"c";
    		System.out.println(a==b );
    		System.out.println(a==c );
    		System.out.println(a==d );
    		System.out.println(b==c );
    		System.out.println(b==d );
    		System.out.println(c==d );
    

     Answer

    true
    false
    true
    false
    true
    false

     三:输出结果

    public static void main(String[] args){
    
            String i5="1";
            String i6="00";
            String i7="100";
            String i8=i5+i6;
            String i9="1"+"00";
            String i10=i5+i6;
            String i11="1";
            i11+="00";
            System.out.println(i7==i8);
            System.out.println(i7==i9);
            System.out.println(i9==i8);
            System.out.println(i8==i10);
            System.out.println(i9==i11);
            
            
        }

    answer

    false
    true
    false
    false
    false

    解析:

    String d="ab"+"c";   String i9="1"+"00";对于直接相加的字符串,在编译期就进行了优化,在编译期就确定了他的值,分别被优化成  abc   100,因此在运行时,a,b,d    i7 i9指向同一个对象,由于有符号引用(间接引用),在编译器不会优化,编译器确定不了值,
    在运行期才确定他的值,这种方式生成的对象事实上是保存在堆上的。
  • 相关阅读:
    MySql的性能优化
    MySql的备份还原
    MySql的数据目录
    MySql的事务
    MySql的视图
    算法笔记_006:全源最短路径问题【动态规划法】
    算法笔记_005:堆排序问题【变治法】
    算法笔记_004:8枚硬币问题【减治法】
    算法笔记_003:矩阵相乘问题【分治法】
    使用MongoDB和JSP实现一个简单的购物车系统
  • 原文地址:https://www.cnblogs.com/qwer113/p/9306807.html
Copyright © 2020-2023  润新知