public class VarScope { public static void main(String[] args) { Cat cat = new Cat(); cat.cry(); cat.eat(); } } class Cat{ //全局变量:也就是属性,作用域为整个类体Cat类:cry eat等方法使用属性 int age = 10; public void cry(){ //1.局部变量一般是指在成员方法中定义的变量 //2.n 和 name 就是局部变量 //3.n 和 name的作用域在cry 方法中 int n = 10; String name = "jack"; System.out.println("cry中使用age="+age); } public void eat(){ System.out.println("在eat中使用属性age="+age); } }
public class VarScopeDetail { public static void main(String[] args){ Person p1 = new Person(); /* 属性生命周期较长,伴随着对象的创建而创建,伴随着对象的死亡而死亡。 局部变量,生命周期较短,伴随着它的代码块的执行而创建, 伴随代码块的结束而死亡,即在一次方法调用过程中。 */ p1.say();//当执行say方法时,say方法的局部变量比如name,会创建,当say执行完毕后name就会销毁 //属性(全局变量)仍然可以使用 System.out.println(p1.name); } } class Person { String name = "jack";
public void say() { //属性和局部变量可以重名,访问时遵循就近原则 String name = "king"; System.out.println("say() name=" + name); } }
public class VarScopeDetail { public static void main(String[] args){ Person p1 = new Person(); T t1 = new T(); t1.test();//第一种跨类访问对象属性的方式 t1.test2(p1);//第二种方式跨类访问对象属性的方式 } } class T { //全局变量/属性:可以被本类使用,或其他类使用(通过对象调用) public void test(){ Person p1 = new Person(); System.out.println(p1.name); } public void test2(Person p){ System.out.println(p.name); } } class Person { //属性可以加修饰符(public protected private..) // 局部变量不能加修饰符 private int age = 20; String name = "jack";
public void say() { //属性和局部变量可以重名,访问时遵循就近原则 String name = "king"; System.out.println("say() name=" + name); } }