//Hello 类 public class Hello { //main 方法 public static void main(String[] args) { //修饰符,可选;返回值类型,与return一致;方法名,见名知意,驼峰原则;参数列表,实参和形参要保持一致的类型 a(); //静态方法本类可以直接调用,其他类通过类名.方法名()调用 Hello hello = new Hello(); hello.b(); //非静态方法,无论是本类调用还是其他类调用,都要先实例化 } /* 回顾方法的定义 修饰符 返回值类型 方法名(参数类型 参数名){ 方法体 return 返回值; } */ //静态方法,和类一起加载 public static void a() { System.out.println("调用其他类的静态方法,可以直接通过类名.方法名()调用!"); //Hello.t(); b(); //静态方法不能调用非静态方法,因为静态方法和类一起加载的时候,非静态方法还没有被实例化 } //非静态方法,只有被实例化了才会被加载 public void b(){ System.out.println("调用非静态方法,必须先实例化类,也就是new对象,再通过对象调用!"); //对象类型 对象名 = 对象值 //Hello hello = new Hello(); //hello.f(); a(); //非静态方法可以调用静态方法 } public static void c(){ System.out.println(); a(); //静态方法之间可以相互调用 } }
public class Hello { public static void main(String[] args) { int a = 1; int[] b = {0}; change(a); System.out.println(a); //1,值传递不会改变原有的变量 Person person = new Person(); System.out.println(person.name); //null,属性默认值为null change1(person); System.out.println(person.name); //ty,引用传递会改变原来的属性值 change2(b); System.out.println(b[0]); //1,数组也属于引用类型,也会改变原数值 } public static void change(int a){ //a只是将数值复制过来,不影响原变量 a = 10; } public static void change1(Person person){ //person是一个对象,其指向--->Person person = new Person();这是可以改变属性的。涉及到对象和内存,见后 person.name = "ty"; } public static void change2(int[] a){ a[0] = 1; } } //新建一个类 class Person{ String name; }
拓展:值传递(Java)和引用传递