• java 常用类


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

    不是,基本数据类型:byte,short,int,long,float,double,char,boolean.

    2.String s = "Hello";s=s+"World!";这两行代码执行后,原始的String对象中的内容到底变了没有?

    没有,因为String被设计成不可变类,所以它的所有对象都是不可改变对象。

    在这段代码中,s原先指定一个String对象,内容是"hello",然后我们对s进行+操作,那么s不指向原来那个对象,而是指向另一个String对象,内容是"HelloWord!",原来那个对象还存在,只是s不在指向它了。

    如果说经常对一个字符串进行各种各样的修改,或者说不可预见的修改,使用String来代表字符串会引起很大的内存开销,应该使用Stringbuffer类,它允许修改。 

    比可变的优点:比如因为它的对象是只读的,所以多线程并发访问也不会有任何问题。

    3.是否可以继承String类?

    String类是final类故不可以继承。 

    4.String s = new String("xyz");创建了几个String Object?二者之间有什么区别?

    两个,一个是字符串"xyz"所对应的、驻留在字符串常量池中的实例,另一个是通过new String()创建并初始化的、内容与"xyz"相同的实例

    一个,如果字符串常量池中已存在"xyz",这只创建一个对象。

    5.String和StringBuffer的区别?

    String是不可变字符串,StringBuffer是可变字符串,在对字符串进行各种各样修改或者不可预见的修改的时候使用StringBuffer.

    String覆盖了equals和hashCode方法,而StringBuffer没有覆盖equals和HashCode方法,所以将StringBuffer对象存储在java集合类中时会出现问题。

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

    数组没有length()方法,数组有length属性。String有length()方法。

    7.下面语句一共创建了多少个对象:String s = "a"+"b"+"c"+"d";

    因为javac编译可以对字符串常量直接相加的表达式进行优化,所以只创建了一个对象。

    8.String子面量是否自动生成一个String对象?

    是,字符串类具有一定的特殊性,JVM在执行双引号操作符的时候,会自动创建一个String对象,并返回这个对象的引用。

    9.字符串对象池的作用?

    对象池的存在是为了避免频繁的创建和销毁对象而影响系统性能。当JVM在运行用双引号引起来一个字符串的代码时,会到String的对象池中去检查是否有一个字符序列相同的对象,如果有就去现有的对象,如果没有,则在对象池中创建一个对象,并返回。

    10.如何使用指定的字符集创建String对象?

    使用带有字符集编码的String的构造方法,参数一个是byte数组,另一个是指定字符集编码格式。

  • 相关阅读:
    HDOJ 4747 Mex
    HDU 1203 I NEED A OFFER!
    HDU 2616 Kill the monster
    HDU 3496 Watch The Movie
    Codeforces 347A A. Difference Row
    Codeforces 347B B. Fixed Points
    Codeforces 372B B. Hungry Sequence
    HDU 1476 Sudoku Killer
    HDU 1987 How many ways
    HDU 2564 词组缩写
  • 原文地址:https://www.cnblogs.com/hxg-yw/p/4038360.html
Copyright © 2020-2023  润新知