zoukankan      html  css  js  c++  java
  • 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指向同一个对象,由于有符号引用(间接引用),在编译器不会优化,编译器确定不了值,
    在运行期才确定他的值,这种方式生成的对象事实上是保存在堆上的。
  • 相关阅读:
    XAML中的戏法
    提前预览Visual Studio 2010
    大道至简
    Windows Service下的MessageBox
    WPF中使用Expression Encoder SDK开发流媒体
    使用latex
    [zz]2D动画制作工具比较
    android platform_frameworks_base
    Fast and easy high resolution fractals with a pixel shader
    Bézier Surface
  • 原文地址:https://www.cnblogs.com/qwer113/p/9306807.html
Copyright © 2011-2022 走看看