常量变量区别,String用法

通过String知道变量和常量的区别 

public static void main(String args[]){
        //System.out.print(getAuth());
        String a = "abc";
        String c = "a";
        String b = c + "bc";
        String d = "a" + "bc";
        System.out.println(a == b);   // false
        System.out.println(a == d);  //true
    }

String常量放在常量池中,Java虚拟机出于优化的考虑,会让内容一致的对象共享内存块,但变量是放在堆空间中,new 定义的不同变量的内存地址不同。

String 常量连接常量还是常量,依然在常量池中,但常量连接变量是变量。

对String 类型对象:1,尽可能使用常量,避免用变量;2。尽量避免大规模对String的(连接)操作,因为会产生大量内存碎片,导致内存性能问题。如果需要,用StringBuilder。

StringBuilder 是字符串变量,当用它进行字符串操作时,实在一个对象上操作的,这样就不会像String那样建一些额外的对象。

StringBuffer功能类似,但是是线程安全的,性能略低于StringBulder,StringBulder不是线程安全的。

在通过System.out.println()输出时,默认的会调用toString()方法,如果自己定义类,可以通过toString来定义类的输出结果。

String不能被继承:Sting是这样定义的:public final class String extends Object,里边有final关键字,所以不能被继承

注:一,在Java中,只要是被定义为final的类,也可以说是被final修饰的类,就是不能被继承的。
 二,final是java中的一个关键字,可以用来修饰变量、方法和类。用关键词final修饰的域成为最终域。用关键词final修饰的变量一旦赋值,就不能改变,也称为修饰的标识为常量。如果一个类的域被关键字final所修饰,它的取值在程序的整个执行过程中将不会改变。
 三,假如说整个类都是final,就表明自己不希望从这个类继承,或者不答应其他任何人采取这种操作。换言之,出于这样或那样的原因,我们的类肯定不需要进行任何改变;或者出于安全方面的理由,我们不希望进行子类化(子类处理)
 

你可能感兴趣的:(java)