局部变量

位置:定义在方法里或者局部代码块中
注意:必须手动初始化来分配内存.如:int i = 5;或者int i; i = 5;
作用域:方法里或者局部代码块中,方法运行完内存就释放了

成员变量

位置:定义在类里方法外
注意:不用初始化,也会自动被初始化成默认值
作用域:整个类中,类消失了,变量才会释放
image.png

案例

变量默认值测试

  1. package cn.tedu.basic;
  2. /**
  3. * 测试各种类型变量的默认值
  4. * @author 一拳超人
  5. *
  6. */
  7. public class TestVariable {
  8. static byte a;
  9. static short b;
  10. static int c;
  11. static long d;
  12. /*
  13. * 整型变量的默认值为0
  14. */
  15. static float e;
  16. static double f;
  17. /*
  18. * 浮点型变量默认值为0.0
  19. */
  20. static char g;
  21. /*
  22. * 字符类型的默认值是\u0000
  23. */
  24. static boolean h;
  25. /*
  26. * 布尔型变量默认值为false
  27. */
  28. static String i;
  29. /*
  30. * 字符串变量类型为null
  31. */
  32. public static void main(String[] args) {
  33. System.out.println(a);
  34. System.out.println(b);
  35. System.out.println(c);
  36. System.out.println(d);
  37. System.out.println(e);
  38. System.out.println(f);
  39. System.out.println(g);
  40. System.out.println(h);
  41. System.out.println(i);
  42. }
  43. }

局部变量与成员变量测试

  1. package cn.tedu.basic;
  2. /**本类用于测试变量的使用*/
  3. public class TestVariable2 {
  4. //2.定义成员变量:
  5. //1)位置:类里方法外
  6. //2)无需手动初始化,会自动赋予对应类型的默认值
  7. //3)作用域:在整个类中生效,类消失,变量才会消失
  8. static int count;
  9. //3.变量有一个使用的原则:就近原则
  10. static int sum = 200;
  11. public static void main(String[] args) {
  12. //1.定义局部变量:
  13. //1)位置:在方法里/局部代码块里
  14. //2)必须手动初始化
  15. //3)作用域:在方法/局部代码块中,对应的代码执行完局部变量就被释放
  16. int sum = 100;//定义在方法中的局部变量sum
  17. System.out.println(sum);//变量的就近原则:使用的都是自己附近的变量,100
  18. System.out.println(count);
  19. for (int i = 0; i < 10; i++) {//局部变量i只能在循环中使用
  20. System.out.println(i);
  21. }
  22. //System.out.println(i);//报错:无法引用变量i:i cannot be resolved to a variable
  23. }
  24. }

方法

被命名的代码块,方法可以含参数可以不含参数,可以提高代码的复用性。

方法定义格式

  1. 方法修饰符 方法返回值 方法名([参数列表] ){
  2. 方法体;
  3. }

调用/使用方式

方法名+参数列表的方式调用方法

方法的重载

方法的重载是指在一个类中定义多个同名的方法,但是每个方法的参数列表不同(也就是指参数的个数和类型不同),程序在调用方法时,可以通过传递给他们的不同个数和类型的参数来决定具体调用哪个方法。

  1. package cn.tedu.method;
  2. /**
  3. *用于测试方法的重载
  4. */
  5. public class TestMethodOverload {
  6. public static void main(String[] args) {
  7. /*
  8. * 方法定义格式:
  9. * 修饰符 返回值类型 方法名([参数列表]){方法体}
  10. * 方法调用格式:
  11. * 方法名+参数列表
  12. * 方法重载:
  13. * 在同一个类中,方法名相同但单数列表不同的方法
  14. * 如果在同类中,方法的参数个数相同
  15. * 注意:查看的是对应位置上参数的类型,与参数名无关
  16. * 当参数个数不同时一定构成重载
  17. * 当参数个数相同时,可能构成重载,具体要看参数类型
  18. */
  19. method();//调用无参的method()
  20. method(3);//调用含有一个参数的method()
  21. method("王奕文",1);//调用含有两个参数的method()
  22. }
  23. private static void method(String s, int age) {
  24. System.out.println(s + "今年" + age + "岁了。");
  25. }
  26. private static void method(int i) {
  27. System.out.println("前途似海,来日方长。");
  28. }
  29. //创建无参的method方法
  30. private static void method() {
  31. System.out.println("横有千古,纵有八荒。");
  32. }
  33. }