方法回顾
一:方法之间的调用
- 静态
- public static void …
- 非静态
- public void …
-
同为(非)静态可直接调用
-
不同则需要实例化:HuiGu调用HuiGu2中的方法
public class HuiGu { public static void main(String[] args) { //非静态:先实例化才会存在 HuiGu02 huiGu02 = new HuiGu02(); huiGu02.str(); //静态:和类一起加载,直接调用 HuiGu02.str2(); } } public class HuiGu02 { //非静态 public void str(){ System.out.println("dashabi"); } //静态 public static void str2(){ System.out.println("大啥"); } }
输出结果为:
dashabi 大啥
- 同一文件下的调用
public class HuiGu03 { public static void main(String[] args) { int c= HuiGu03.he(1,3);//静态调用 System.out.println(c); System.out.println("===============分割线=================="); int f=new HuiGu03().he2(3,4);//非静态调用(实例化) System.out.println(f); } //静态 public static int he(int a,int b){ return a+b; } //非静态 public int he2(int d,int e){ return d+e; } }
结果为:
4 ===============分割线================== 7
二:值传递和引用传递
-
值传递
public class HuiGu05 { public static void main(String[] args) { //值传递 int a=1; System.out.println(a); HuiGu05.shu(a); System.out.println(a); } public static void shu(int a){ a=10; } }
-
第一个输出语句输出int a的值1;
-
第二个输出语句调用HuiGu5中的shu方法,但因为是void,返回值为空,所以值没有发生改变
结果为:
1 1
-
-
引用传递 (引用传递:传递对象,本质还是值传递)
public class HuiGu05 { public static void main(String[] args) { Mingzi mingzi = new Mingzi();//实例化 System.out.println(mingzi.name); HuiGu05.change(mingzi);//调用change方法 System.out.println(mingzi.name); } public static void change(Mingzi xing){ xing.name="张二狗"; System.out.println(xing); } } class Mingzi{ String name; }
第一个输出语句没有赋值:输出为初始值null;
第二个输出语句调用HuiGu5中的change方法,将name=“张二狗”赋值给class Mingzi中的name,再输出值
结果为:
null 十六号.面向对象.Mingzi@1b6d3586//这里不该出现此行代码,未找到原因 张二狗