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数组,另一个是指定字符集编码格式。
posted on 2014-10-20 19:02 huanxuediguo 阅读(138) 评论(0) 编辑 收藏 举报