注意事项和细节一:

  1. 属性和局部变量可以重名,访问时遵循就近原则。
  2. 在同一个作用域中,比如在同一个成员方法中,两个局部变量不能重名。
  3. 属性的生命周期较长,伴随着对象的创建而创建,伴随着对象的死亡而死亡。
  4. 局部变量的生命周期较短,伴随着它的代码块的执行而创建,伴随着代码快的结束而销毁。即在一次方法的调用过程中。

代码演示:

  1. public class Main {
  2. public static void main(String[] args) {
  3. Person p = new Person();
  4. /*
  5. 属性的生命周期较长,伴随着对象的创建而创建,伴随着对象的死亡而死亡。
  6. 局部变量的生命周期较短,伴随着它的代码块的执行而创建,伴随着代码快的结束而销毁。
  7. 即在一次方法的调用过程中。
  8. */
  9. //当执行say方法时,say方法的局部变量比如name,会创建
  10. p.say();
  11. //say方法执行完毕后,name局部变量被销毁
  12. //但是,属性(全局变量)中的name任然可以使用
  13. }
  14. }
  15. class Person{
  16. String name = "WTY";
  17. public void say(){
  18. //属性和局部变量可以重名,访问时遵循就近原则。
  19. String name = "WTY1";
  20. System.out.println("say() name = " + name);
  21. }
  22. public void hi(){
  23. String address = "大陆";
  24. //int address = 3;//变量重名,报错!!!
  25. String name = "WTY2";//可以
  26. }
  27. }

运行结果:
image.png

注意事项和细节二:

  1. 作用域范围不同
  • 全局变量(属性):可以被本类使用,或其他类使用(通过对象调用)
  • 局部变量:只能在本类中对应方法中使用。
  1. 修饰符不同
  • 全局变量(属性)可以加修饰符
  • 局部变量不可以加修饰符

代码演示:

  1. package test;
  2. public class Main {
  3. public static void main(String[] args) {
  4. Person p = new Person();
  5. /*
  6. 属性的生命周期较长,伴随着对象的创建而创建,伴随着对象的死亡而死亡。
  7. 局部变量的生命周期较短,伴随着它的代码块的执行而创建,伴随着代码快的结束而销毁。
  8. 即在一次方法的调用过程中。
  9. */
  10. //当执行say方法时,say方法的局部变量比如name,会创建
  11. p.say();
  12. //say方法执行完毕后,name局部变量被销毁
  13. //但是,属性(全局变量)中的name任然可以使用
  14. T t1 = new T();
  15. t1.test();//第一种跨类访问对象的方式
  16. t1.test1(p);//第二种跨类访问对象的方式
  17. }
  18. }
  19. class T{
  20. //全局变量(属性):在其他类使用(通过对象调用)
  21. public void test(){
  22. Person p1 = new Person();
  23. System.out.println(p1.name);
  24. }
  25. public void test1(Person p){
  26. System.out.println(p.name);
  27. }
  28. }
  29. class Person{
  30. //全局变量(属性)可以加修饰符
  31. public int a = 10;
  32. private int b = 10;
  33. protected int c = 10;
  34. String name = "WTY";
  35. public void say(){
  36. //属性和局部变量可以重名,访问时遵循就近原则。
  37. String name = "WTY1";
  38. System.out.println("say() name = " + name);
  39. //局部变量不可以加修饰符
  40. //public int a = 10;//报错!!!
  41. }
  42. public void hi(){
  43. String address = "大陆";
  44. //int address = 3;//变量重名,报错!!!
  45. String name = "WTY2";//可以
  46. }
  47. }

运行结果:
image.png