Hey Guys我是java编程的新手。我试图尝试java类,我所做的是我创建了一个实例变量x然后是y复制x的值。 然后我定义一个构造函数,它将值或x作为参数。 现在,当我尝试打印y的值时,它将值赋予0,而或者x给出5。 问题为什么会发生? 当我们使用new关键字和构造函数时,只创建了所有实例字段,所以我觉得在使用
之后<style name="customSpinnerTheme" parent="ThemeOverlay.AppCompat">
<item name="colorControlActivated">#FFFFFF</item>
<item name="colorControlHighlight">#FFFFFF</item>
</style>
当我们使用new关键字和构造函数时,只创建了所有实例字段,所以我觉得在使用之后
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package test;
/**
*
* @author Mridul
*/
public class Test {
int x;
int y=x;
Test(int a)
{
x=a;
}
void print()
{
System.out.println(x);
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Test ob=new Test(5);
ob.print();
System.out.println(ob.y);
// TODO code application logic here
}
}
Output
5
0
然后,只有类(x,y = x)中的所有代码都应该运行,并且不应该创建问题。 请帮忙
答案 0 :(得分:0)
当您创建Test
的新实例时,会发生这种情况(按顺序):
int x; // x = 0
int y=x; // y = 0
Test(int a)
{
x=a; // x = your a value
}
=&GT;社区维基,随意....
答案 1 :(得分:0)
这里:
int y=x;
发生一次, 执行构造函数之前。
因此ctor改变了x的值;但y保持其先前的值。 (x最初的默认值为0;进入y;然后执行ctor并将x更改为a的值。
请注意:这与“动态分配”无关。 new
导致三件事:
(有关详细信息,请参阅here)。如果你想让y与x具有相同的值;只是做
公共课测试 final int x,y;
Test(int incoming) {
x = incoming;
y = incoming;
}
答案 2 :(得分:0)
使用MyDict
调用构造函数时,Java开始构造新分配的对象。实例字段的值(在您的字段View
和字段new
的情况下)由一组规则确定。
x
具有默认值(y
); x
获取0
的值,即y
。x
设置为0
的值。 x
仍为a
,因为在 y
设置为0
的值之前,它的值。
答案 3 :(得分:0)
new operator
用于自动内存分配,为对象分配所需的内存,必须使用new operator
。