作业题
在 Java 中,直接赋值存放字符串常量的对象属于( )类对象。
A.Character
B.String
C.StringBuffer
D.Vector
答案:B
解析
A:
Character 类用于对单个字符进行操作。
Character 类在对象中包装一个基本类型 char 的值
B:
正确答案
以下为String的内容扩展:
马克- to-win的文章写到:
栈中有共享池的概念:比如下面例子中,sz="hello";在栈中创建一个String对象引用变量sz,然后看看栈中有没有"hello",如果没有,则将"hello"存放进栈,并令sz指向”hello”,如果已经有”hello” 则直接令sz指向“hello”。对于int, float 类型的变量也是一样的有这种共享池的概念
另一种解释(),
关于String str = "abc"的内部工作。Java内部将此语句转化为以下几个步骤:
(1) 先定义一个名为str的对String类的对象引用变量放入栈中。
(2) 在常量池中查找是否存在内容为"abc"字符串对象。
(3) 如果不存在则在常量池中创建"abc",并让str引用该对象。
(4) 如果存在则直接让str引用该对象。
另一种(菜鸟教程):
String 创建的字符串存储在公共池中,而 new 创建的字符串对象在堆上
String s1 = "Runoob"; // String 直接创建
String s2 = "Runoob"; // String 直接创建
String s3 = s1; // 相同引用
String s4 = new String("Runoob"); // String 对象创建
String s5 = new String("Runoob"); // String 对象创建
以上只是作为学习参考,看到这的人不要被影响自己的思路
本人初步了解,之后具体研究后再区分一下共享池,公共池,字符串池,,(区别)
C:
不选c的主要原因:StringBuffer 和 StringBuilder 类创造的对象不可直接赋值存放字符串常量
String 类是不可改变的,所以你一旦创建了 String 对象,那它的值就无法改变了,如果需要对字符串做很多修改,那么应该选择使用 StringBuffer & StringBuilder 类,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。
在使用 StringBuffer 类时,每次都会对 StringBuffer 对象本身进行操作,而不是生成新的对象,所以如果需要对字符串进行修改推荐使用 StringBuffer。
StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。
由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。
D
Vector 类实现了一个动态数组。和 ArrayList 很相似,但是两者是不同的:
- Vector 是同步访问的。
- Vector 包含了许多传统的方法,这些方法不属于集合框架。
Vector 主要用在事先不知道数组的大小,或者只是需要一个可以改变大小的数组的情况。
-----------学习笔记