public class Test
{
public static void changeValue(int i){
i = 100;
}
public static void changeValue(Person p){
p.age = 100;
}
public static void main(String[] args){
Person p = new Person();
changeValue(p);
System.out.println(p.age);
int i = 111;
changeValue(i);
System.out.println(i);
}
}
class Person
{
int age = 10;
}
我知道这个 我是说为什么I不等于100
追答int i = 111;
public static void changeValue(int i){
i = 100;
}
这里的两个i不是同一个变量。
而根据语法规则,函数内的变量,函数外是不可见的,所以System.out.println(i);中的i指的是 int i = 111;这个i.
你都知道我之前说的,竟然不知道这基本的语法规则,惊讶- -
说专业点,理论点,函数内变量的作用域即变量存在的函数范围内。所谓作用域,你也可以把它理解成“能出现的地点”,所以100那个i是不能出现在System.out.println(i)这个地方的,而111那个i却正好可以。