u32*_*i64 16
不,您不能创建仅使用=运算符实例化的类,因为您不能像在C++或C#中那样使用Java重载运算符(请参阅Java中的运算符重载).
String"something"仅当内存中尚不存在时才会实例化s ,因此String每次编写时都会获得对同一对象的引用"something".
例如,如果你这样做:
String a = "something";
String b = "something";
Run Code Online (Sandbox Code Playgroud)
然后
a == b; // will be true.
Run Code Online (Sandbox Code Playgroud)
您可以查看此问题以了解有关String对象如何工作的更多信息:
代码String s = "Hello World!"不会创建新的String.它将String字符串池中现有的引用分配给s.如果String字符串池中不存在,则会String在字符串池中创建新对象,但不能=单独使用运算符.
这创造了新的String目标:
String s1 = new String("Hello World!"); // new Object
String s2 = new String("Hello World!"); // new Object
System.out.println(s1 == s2); // false
Run Code Online (Sandbox Code Playgroud)
这可能会也可能不会String在String Pool中创建一个新对象:
String s1 = "Hello World!";
String s2 = "Hello World!";
System.out.println(s1 == s2); // true
Run Code Online (Sandbox Code Playgroud)
你可以使用getInstance()模式非常接近上面提到的行为,考虑这个:
public class Singleton {
private Singleton(){}
private static class SingletonHelper{
private static final instance INSTANCE = new Singleton();
}
public static Singleton getInstance() {
return SingletonHelper.INSTANCE;
}
}
Run Code Online (Sandbox Code Playgroud)
然后你可以使用:
Singleton s = Singleton.getInstance();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1984 次 |
| 最近记录: |