我已经读过“如果变量的作用域更近,则该变量将被遮盖”。我发现此Point类带有一个构造函数作为示例:
public class Point {
public int x = 0;
public int y = 0;
public Point(int x, int y) {
x = x;
y = y;
}
}
然后,我在下面的CreateObjectDemo类中创建了Point类的对象,并打印了变量x的值。
public class CreateObjectDemo {
public static void main(String[] args) {
Point originOne = new Point(23, 94);
System.out.println(originOne.x);
}
}
运行编译器后,它显示0。但是为什么不显示23?我认为构造函数中的 “ x = x” 将类似于 “ 23 = 23”
。我是否误解了阴影变量的定义?
问题内容: 除了范围和存储差异外,java中实例变量和局部变量之间是否还有其他主要区别? 问题答案: 我能想到的一件事: 实例变量具有默认值,即如果为对象引用,则为null;如果为int,则为0。 局部变量不会获取默认值,因此需要进行显式初始化(如果您未这样做,则编译器通常会抱怨)。
本文向大家介绍Java中的局部变量,包括了Java中的局部变量的使用技巧和注意事项,需要的朋友参考一下 局部变量在方法,构造函数或块中声明。 输入方法,构造函数或块时将创建局部变量,并且一旦退出方法,构造函数或块,该变量将被销毁。 访问修饰符不能用于局部变量。 局部变量仅在声明的方法,构造函数或块内可见。 局部变量在内部在堆栈级别实现。 局部变量没有默认值,因此应声明局部变量,并应在首次使用前分配
问题内容: 我读到Java为类属性提供了默认值,但没有为局部变量提供默认值。那是对的吗?如果是这样,背后的原因是什么?当您做某件事时,为什么不一直这样做呢? 谢谢你, 罗杰 问题答案: 标准局部变量存储在堆栈中,直到初始化后才真正创建。如果未使用局部变量,则它不会进入堆栈。但是,成员变量在堆中分配,因此具有默认的占位符(空引用或默认原语)。
假设我有下面的类:每次Meow调用时,都会在堆上创建一个新的随机对象。 我是否应该将随机对象从Meow方法中取出,并像这样将它从局部变量改为实例变量?因此,每次Meow调用相同的随机对象时,将使用在堆上创建的cat对象,而不是像上面的方法那样使用一个新的对象。 我试图理解第二种方法是否是一个最佳实践,因为即使我的程序很小,它也不会是一个大问题,也许以后如果程序变大了,它会帮助我防止性能问题。
问题内容: 我以为我了解了Java中局部变量和全局变量之间的区别,直到今天看到一个示例。在这段代码中,我们尝试将元素添加到方法的链接列表中: 我不明白的是,为什么在关闭方法后newElement不会消失?因为这是局部变量,并且未在任何地方的类中定义。这是此类的完整代码: } 先感谢您 问题答案: 这是 变量 和 对象的 混合,确实是局部变量,在方法结束后会丢失,但是引用指向一个 对象 。如果没有引
问题内容: 为什么超类的实例变量在继承中不被覆盖? 问题答案: 因为继承旨在修改行为。行为是通过方法公开的,这就是为什么可以覆盖它们的原因。 字段不是行为而是状态。您不需要修改它,也不需要修改超类使用的私有方法。它们旨在让超类完成其工作。