gpt4 book ai didi

java - 变量范围

转载 作者:行者123 更新时间:2023-12-01 15:05:11 25 4
gpt4 key购买 nike

我有一个恼人的问题,为什么当我第一次尝试使用在 CameraPhone 类编译器下立即声明的变量 imageSize 和 memorySize 来编译此代码时,出现了逻辑错误,但当我在代码末尾声明变量时却可以正常工作???

假设存在 Phone 类。定义一个子类 CameraPhone,它包含两个实例变量:一个名为 imageSize 的整数,表示每张图片的大小(以百万像素为单位)(为简单起见,假设一个像素占用一个字节,因此百万像素等于兆字节)(即 2 表示每张图像是由 2 兆像素组成),以及一个名为 memorySize 的整数,表示相机内存中的 GB 数(即 4 表示 4 GB 内存)。有一个构造函数接受与上述两个实例变量相对应的两个整数参数,用于初始化各自的实例变量。还有一个名为 numPictures 的方法,它返回(作为整数)相机内存可以容纳的图片数量。不要忘记 1 GB 等于 1,000 MB。

public class CameraPhone extends Phone { 

public CameraPhone(int imageSize, int memorySize) {
this.imageSize = imageSize;
this.memorySize = memorySize;
}

public int numPictures() {
return memorySize * 1000 / imageSize;
}

private int imageSize; private int memorySize;

}

最佳答案

您遇到的“逻辑错误”是什么?如果您将代码复制并粘贴到问题中,它将毫无问题地工作,在哪里声明属性(也称为“实例变量”)并不重要 - 在开头,在结尾,只要您在某处实际声明初始化它们,一切都是一样的。我的意思是,只要这些行出现在类声明内的任何位置(请注意,不是在方法内),代码就会编译:

private int imageSize;
private int memorySize;

此外,在构造函数中使用 this 是完全合法的,这不会导致错误。并且可以直接在声明属性的地方或构造函数内初始化属性。

关于java - 变量范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13058193/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com