public class three1 {
float LED;
float mem;
float CPU;
//public three1(){
// System.out.println("无参的构造方法执行了");
//};
public three1(float newLED,float newMem,float newCPU){
if (LED < 3.5f){
newLED = 3.5f;
System.out.println("自动赋值为:3.5");
}
else{
newLED=LED;
}
newMem = mem;
newCPU = CPU;
System.out.println("有参的构造方法执行了"+"LED:"+newLED+"mem:"+newMem+"CPU:"+newCPU);
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
//three1 fun = new three1();
three1 fun2 = new three1(4.0f,4.5f,6.4f);
}
自动赋值为:3.5
有参的构造方法执行了LED:3.5mem:0.0CPU:0.0
要先赋值
if (newLED < 3.5f){
LED = 3.5f;
System.out.println("自动赋值为:3.5");
}
else{
LED=newLED;
}
mem = newMem;
CPU = newCPU;
System.out.println("有参的构造方法执行了"+"LED:"+LED+"mem:"+mem+"CPU:"+CPU);
变量赋值写反了
这个吧就是你没看清楚变量把。fun2 传递过去的参数分别给了
newLED,newMem,newCPU这三个,他们三个都有值了也就是4.0f,4.5f,6.4f
newMem = mem;这句话的意思 把上面定义的成员变量mem为默认值0赋给了newMem,
其他的都是这个意思,所以是0
因为你赋值4.0,4.5,6.4的时候是给newLED,newMem,newCPU赋的,但是比较的时候却又是与LED比较的,所以系统会自动赋值0与3.5比较,其他两个问题也是一样的,都是把顺序给弄反了,应该是:mem=newMem; CPU=newCPU;不然的话都是把系统自动赋值0给了newMem和newCPU。
构造函数写错了,这样写
public three1(float newLED,float newMem,float newCPU){
if (newLED< 3.5f){
LED= 3.5f;
System.out.println("自动赋值为:3.5");
}
else{
LED=newLED;
}
mem=newMem;
CPU=newCPU;
System.out.println("有参的构造方法执行了"+"LED:"+LED+"mem:"+Mem+"CPU:"+CPU);
}
}