我们可以这样做:
String string = "ourstring";
但是我们不能为用户定义的类创建这样的对象:
UserClass uc="";
Java如何允许我们直接将值设置为java.lang.String
类?
答案 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); *
* /