JAVA变量的作用域问题
发布网友
发布时间:2022-04-20 06:40
我来回答
共2个回答
热心网友
时间:2023-06-27 04:58
你把System.out.println("第一个实例对象调用变量i的结果:" + t1.i++);
t1.call(); // 使用第一个对象调用类成员方法
换成
t1.call(); // 使用第一个对象调用类成员方法
System.out.println("第一个实例对象调用变量i的结果:" + t1.i++);
你就懂了,不知道是不是你想要的回答
你如果不想int i=47被覆盖可以加上final
热心网友
时间:2023-06-27 04:58
java中变量作用域其实容易记,
就是这个变量在哪一组{}中定义,它作用域就是这组{},比如在
class xxx{
int a;
public void xxx()
{
int b;
}
}
上述代码中a变量是在class的{}中定义的,它的作用域就是这个class内,任意位置都可以访问
而变量b是在方法xxx的{}中声明的,它作用域就只限于xxx方法中
在两个不同作用域范围下如果出现同名称变量时,则作用范围小的变量在其作用域内会覆盖作用范围大的变量,上述例子中如果方法中的变量和类中的变量同名,都为a,那么在方法xxx内,a变量的值以方法内声明为准追问可是for循环中并没有用int重新声明,既然i的作用域是整个类,那么我理解for循环中的i=0语句就是对之前那个i重新赋值,循环三次就是三次赋值,所以跳出循环i的值就变成3,而不是47。之前c++好像是这样