public class Overloaded {
Overloaded(byte i) {
System.out.println(" con 1 is called ");
}
Overloaded(short j) {
System.out.println(" con 2 is called ");
}
/*
* Overloaded(int n) {
*
*
* System.out.println(" con 3 is called ");
*
*
* }
*/
/*
* Overloaded(long m) {
*
* System.out.println(" con 4 is called ");
*
*
* }
*/
/*
* Overloaded(float m) {
*
* System.out.println(" con 5 is called ");
*
*
* }
*/
public static void main(String[] t) {
Overloaded o = new Overloaded(127);
}
}
错误:可能有损转换从int到短
上面的代码不会产生错误。它宁愿显示一个输出- con 3被调用。短类型可以在构造函数中调用。将其类型转换为short
Overloaded o = new Overloaded((short)127);
默认情况下,所有数值常量都是整数类型,当您想要将整数保存到字节/短整型字段时,您需要使用cast进行收缩转换:
(byte)127
(short)127
或者你的情况是:
Overloaded o = new Overloaded((byte)127);
或者如果你想做空:
Overloaded o = new Overloaded((short)127);
表达式127
不是short
-而是
类型。
如果要具有 short
类型的表达式,请使用(short) 127
,如:
Overloaded o = new Overloaded((short)127);
那么你的例子就会起作用。
根据我的理解,当创建了临时对象时,将调用move构造函数。这里,函数返回一个临时对象,但我的程序没有打印来自移动构造函数的消息:
可能重复:< br >什么是复制省略和返回值优化? 我有以下程序: 我期望的输出如下: 但我得到以下信息: 问题是:为什么不将对象从func返回到main调用我的复制构造函数?
可能的重复: 为什么this()和super()必须是构造函数中的第一条语句? 为什么子类构造函数必须显式调用超类构造函数?这是什么原因呢?
问题内容: 如果我有一个像这样的抽象类: 还有一些从Item派生的类是这样的: 我不明白为什么我不能使用泛型调用构造函数: 我知道可以有一个没有构造函数的类型,但是这种情况是不可能的,因为Pencil具有没有参数的构造函数,而Item是抽象的。但是我从eclipse中得到了这个错误: 无法实例化 我不明白为什么的 T类型 ,以及如何避免这种情况? 问题答案: 无法使用Java类型系统来强制类层次结
在上面的代码中,执行以下语句时不调用复制构造函数: 既然返回是按值的,为什么不调用复制构造函数? 谢啦
我目前正在学习Java的继承,我在理解它方面遇到了很大的困难,但是我不能理解的一个主要问题是为什么在下面的示例中有必要调用一个超类构造函数,它有什么帮助?此示例来自Oracle的方法教程。 我最初的想法是,会缩短当前构造函数中参数的代码,它只会接受父类中传入的值并将其添加到子类中(如下所示): 但是,正如我已经知道的那样,这是错误的,并且再次将我带到了真正做什么的问题上。我会非常感谢一些形式的解释