我不明白隐式创建对象的方式。
例如:
String s = "implicit instantiation";
我可以创建一个能够隐式创建对象的自定义类吗?
我不明白隐式创建对象的方式。
例如:
String s = "implicit instantiation";
String greeting = "Hello world!";
char[] helloArray = { 'h', 'e', 'l', 'l', 'o', '.' };
自动装箱允许您隐式地实例化原始包装器类型的对象,但这也是编译器处理的特殊情况。您不能创建具有此功能的自定义类。
Boolean b = false;
Integer i = 0;
Double pi = 3.1416;
Integer i = 5
这样的语句吗? - dumbPotato21很遗憾,你不能这样做!
与C或C ++相反,在Java语言中您无法重载任何运算符,因此无法像下面这样做些什么
Foo myFoo = 1
对于字符串类:
String s = "implicit instantiation"
这是开发人员使用的糖语法,幕后编译器正在执行“脏”工作,类似于以下操作(请记住字符串池):
String s = new String("implicit instantiation")
对于每个对象实例,您需要一个构造函数,它是一种特殊的方法,用于构造和初始化方法。例如:
String s; // Is not initialized and it's nos constructed.
new运算符
非常简单,你只需要创建一个新对象即可!
s = new String("qwe"); // New object constructed
但是这里有一些让很多新手感到困惑的事情。为什么我可以这样做:
String s= "asdfasd;"
因为在Java中,String
是一个特殊的情况,你不需要像所有的原始变量那样添加一个new运算符
作为类。例如:
Integer i = 3;
Double d = 3.3d;
等等。
String
是一个特殊的对象,它围绕着一些语法糖 - 字符串字面量、连接运算符和能够在switch
语句中使用的能力。只有字符串具有这种能力(数组也有“字面量”)。 - RealSkeptic