我说的是从编码方式的绝对起点开始的那部分,不到一周(如果正确的话,不到4天)。所以,这是我的问题。我创建了一个类User
,然后给它提供了一些变量(很抱歉,如果我的编写方式很随意并且不像编程那样)。
public class User
{
String name;
short age;
int height;
然后,我创建了一些构造函数。那就是其中之一:
public User(String name,short age,int height) {
this.name=name;
this.age=age;
this.height=height;
System.out.println(name);
System.out.println("Age: "+age);
System.out.println("Height: "+height);
System.out.println();
}
之后,在该main
方法中,我将User
指示数量的变量设置为该类的主题:
public static void main(String[] args) {
User user1=new User("Dan",20,190);
}
但是,当我运行程序时,出现一个错误,提示没有任何(String,int,int)类型的构造函数。同时,如果执行write (short)
,即指定数据类型,则programm可以工作。为什么Java看到与short
要求的金额类型相匹配的数字int
?
Java数字文字为int
s,因此20是一个int
不会隐式转换为short的(某些初始化除外)。
然后,编译器正在寻找一种至少将int作为第二参数的方法。您的定义最多接受短裤(short
s是的严格子集int
)。然后,编译器将呼叫拒绝为未解决。
编写时,(short)20
您命令编译器将32位缩短int
为16位short
。太隐蔽(某些int值可以表示为shorts)太危险了,因此您需要自己编写并执行转换(前提是您知道自己在做什么)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句