zoukankan      html  css  js  c++  java
  • String,StringBuffer处理字符串的区别

    1.String是最基本的数据类型吗?

      答:不是,最基本的数据类型有:byte short int long float double char boolean

        java.lang.String类时final修饰的类,因此不可以继承这个类,也不能修改这个类,为了节省内存空间,我们通常使用StringBuffer类

    2.String s="Hello";  s=s+"World";  这两段代码执行后,原始的String对象中的内容道理有没有改变?

      答:没有,因为String是不可变的类,所以它的所有对象都要是不可变的。

        原来指向一个String对象,内容是Hello。 然后我们对s进行了+操作,那么现在s指向了HelloWorld对象  原来的Hello对象还存在内存中。

        通过上面我们得出一个结论我们String进行一些不可预见的一些修改那么会对内存进行大量的开销。这时候就可使用StringBuffer

    3.String  s = new String("abc"); 请问一共创建了几个对象?二者有什么区别?

      答:一共创建了一个或者两个! 取决于之前是否创建xyz对象,如果之前创建过xyz对象那么上面的就创建一个对象

        new String(); 每写一遍就会创建一个对象,而且是放在内存的堆中。

        String字符串是放在常量缓冲区的,不管之前出现过多少遍xyz,都指的是常量缓冲区的那一个

    4.String ,StringBuffer,StringBuilder的区别?

      答:个人理解,如果用String操作字符串,只会不断开辟新的对象,之前的对象还一直保留在内存中,会大大的消耗内存空间

        StringBuffer操作字符串,会在原有的对象基础上进行操作,指是对一个对象不断的操作,大大节约了内存空间。

        StringBuffer是不可以直接赋值的,需要通过创建他的对象才可以赋值

        StringBuffer是一个线程安全的可变字符序列,StringBuilder是线程不安全的可变字符序列

        StringBuffer和StringBuilder都是操作append() 和 insert()方法的

        append() 是始终将追加的字符串添加到缓冲区的末端

        insert() 是在指定索引位置添加指定的数据类的值

        通常这两种操作是会得到相同效果的 sb.append(x);   sb.insert(sb.length(),x);得到的结果是一样的

    5.数组有没有length()方法? String有没有length()方法?

      答:数组有length属性,是获取数组长度的

        String有length()方法,是获取字符串的长度的

  • 相关阅读:
    htop命令使用详解
    三月江南
    linux下文本三剑客之sed
    linux下五种查找命令
    Spring MVC 全局异常处理&文件上传
    About Spring MVC
    JSP
    java多线程
    Java中map接口 遍历map
    log4j
  • 原文地址:https://www.cnblogs.com/LittleBoys/p/12098711.html
Copyright © 2011-2022 走看看