字符串类与其他类的区别如何?

时间:2013-04-18 16:23:00

标签: java string

我们可以这样做:

String string = "ourstring";

但是我们不能为用户定义的类创建这样的对象:

UserClass uc="";

Java如何允许我们直接将值设置为java.lang.String类?

4 个答案:

答案 0 :(得分:6)

java.lang.String是一个特殊的类。

随时阅读http://docs.oracle.com/javase/7/docs/api/java/lang/String.html

它说

  

String类表示字符串。中的所有字符串文字   Java程序,例如“abc”,被实现为此实例   类。

     

...

     

Java语言为字符串提供特殊支持   连接运算符(+),以及将其他对象转换为   字符串。字符串连接是通过实现的   StringBuilder(或StringBuffer)类及其append方法。串   转换是通过方法toString实现的,由   对象并由Java中的所有类继承。另外   有关字符串连接和转换的信息,请参阅Gosling,Joy,   和斯蒂尔,Java语言规范。

没有其他类可以使用Java语言提供这种特殊支持。

你应该对它的+功能非常小心:它被广泛讨论为对性能和内存不安全。

答案 1 :(得分:3)

""是用于从实习的字符串池返回String对象的语法糖。

将其视为例外而不是规则。常规对象分配需要采用

形式
MyObject myObject = new MyObject();

答案 2 :(得分:1)

有关此主题的详细信息,请查看在线Javadoc:http://docs.oracle.com/javase/6/docs/api/java/lang/String.html

字符串在Java中很好用。它们具有像原语一样使用的好处,但却是内部的对象。有一个内部“interned String pool”,可以跟踪String对象。这主要是出于效率的考虑而完成的,但抽象是足够的,你可以假装String只是一个像int或char这样的原语。

请记住要避免像使用大多数对象一样使用构造函数手动创建String!

答案 3 :(得分:0)

实际上 String string =“ourstring” 调用String Class的默认构造函数 new String(char value [])。 如果你还没看到,建议你阅读String.clss

这是String.class的描述 / ** * String类表示字符串。所有  * Java程序中的字符串文字,例如"abc"  *作为此类的实例实现。  *

 *字符串是不变的;他们的价值观无法改变  *已创建。字符串缓冲区支持可变字符串。  *因为String对象是不可变的,所以可以共享它们。例如:  *

 
 *     String str = "abc"; 
 * 

 *相当于:  *

 
 *     char data[] = {'a', 'b', 'c'}; 
 *     String str = new String(data); 
 * 

 *以下是一些如何使用字符串的示例:  *

 
 *     System.out.println("abc"); 
 *     String cde = "cde"; 
 *     System.out.println("abc" + cde); 
 *     String c = "abc".substring(2,3); 
 *     String d = cde.substring(1, 2); 
 * 
 *

 * /