美文网首页
2018-09-26内部类、String、StringBuild

2018-09-26内部类、String、StringBuild

作者: 消失的七月 | 来源:发表于2018-09-26 18:03 被阅读0次

    1.内部类

    一般情况,我们把类定义成独立的单元。有些情况下,我们把一个类放在另一个类的内部定义,称为内部类。

    内部类的作用:

        1.    内部类提供了更好的封装。只能让外部类直接访问,不允许同一个包中的其他类直接访问。

        2.    内部类可以直接访问外部类的私有属性,内部类被当成其外部类的成员。但外部类不能访问内部类的内部属性。

    内部类的使用场合:

    由于内部类提供了更好的封装特性,并且可以很方便的访问外部类的属性。所以,通常内部类在只为所在外部类提供服务的情况下优先使用。

    2.String   (string a = "t")会创建一个对象 然后再对象中的a去指向方法区中常量的a

    public class Test {

    public static void main(String[] args) {

        char []c ={'a','b','c','d'};

        String str = new String("abcd");

        String str2 = new String("abcd");

        System.out.println(str.equals(str2));//true

        System.out.println(str2==str);//false

        String str3 ="def";

        String str4 ="def";

        System.out.println(str3.equals(str4));//true

        System.out.println(str3==str4);//true

        }

    }

            字符内存分析图:

    .可能会问的面试题
    //总共1001个对象

    String b = "abc";//(""首先这里会创建一个)

    for (int i = 0; i < 1000; i++) {

        b = b + i;

    }

    //总共1002个对象

    String a = new String("abc");//这里会创建2个对象(""首先这里会创建一个; new()也会创建一个对象)

    for (int i = 0; i < 1000; i++) {

        a = a + i;

    }

    .StringBuilder与StringBuffer

     一.StringBuilder可变字符串,线程不太安全,但效率高,推荐使用。

    StringBuffer可变字符串,线程安全,但效率低,不推荐使用。

    String是不可变字符串,根据实时情况使用,在循环当中不要使用,因为会产生好的没用的字符串。

    二. String,StringBuilder要学会查看api的良好习惯,通过api学会使用常见的方法,自己利用案例来理解每个方法的具体含义。这样你会更深刻理解每个方法的使用。

    三. 如果看不懂api可以到我们官网去看三百集的第56与57集,理解一下字符串的扩容原理。方便理解后面容器的内容。

    面试题的回答

           StringBuilder与StringBuffer的区别,StringBuilder与String的区别。

    1)StringBuilder效率高,线程不安全,StringBuffer效率低,线程安全。

    2)String是不可变字符串,StringBuilder是可变字符串。为什么有这样的差异,可以深入源码去解析,比如String类内的 priver final  char  value[] 等方法的原因。

    3)如果是简单的声明一个字符串没有后续过多的操作,使用String,StringBuilder均可,若后续对字符穿做频繁的添加,删除操作,或者是在循环当中动态的改变字符穿的长度应该用StringBuilder。使用String会产生多余的字符串,占用内存空间。

    相关文章

      网友评论

          本文标题:2018-09-26内部类、String、StringBuild

          本文链接:https://www.haomeiwen.com/subject/baxdoftx.html