例子1
package com.javaStudy.oop; //先在同级目录下定义了Student类 public class Student { public static void say(){ System.out.println("学生说话了"); } public void says(){ System.out.println("学生正在窃窃私语"); } }
package com.javaStudy.oop; public class Demo02 { public static void main(String[] args) { Student.say();//在同级目录下,可直接找到Student类,且say()方法是static静态方法类,所以可以直接调用Student.say()方法 System.out.println("========"); Student student = new Student();//在同级目录下,可直接找到Student类,但says()方法是非静态方法,所以需要new引用Student类后,再调用方法 student.says(); } //下面的 a b 方法都是非静态方法 或 都是静态方法既可以相互调用,但如果 一个是static静态方法,一个是非static(非静态方法),则会报错 //原因:static(静态方法) 是和 类 一起加载的,所以当 Demo02类加载的时候,static方法就存在了,而 非static(非静态方法)的方法是跟 对象 有关的,对象创建之后才存在 //简单理解就是:static方法比 非static方法 存在的更早,所以当一个已经存在的方法去调用一个还没有存在的方法,就会报错 public void a(){ b(); } //类实例化之后才存在 public void b(){ a(); } }
例子2
package com.javaStudy.oop; public class Demo03 { public static void main(String[] args) { int sum1 = add(1,2); //调用static静态方法:方法一 int sum2 = Demo03.add(2,3); //调用static静态方法:方法二 System.out.println(sum1); System.out.println("------"); System.out.println(sum2); } public static int add(int a, int b){ return a+b; } }
值传递
package com.javaStudy.oop; public class Demo04 { public static void main(String[] args) { //值传递 int a = 1; System.out.println(a); System.out.println("==================="); Demo04.change(a);//虽调用了change方法(没有返回值),将 a的值改变了,但并未返回值,所以 a的值还是不变 System.out.println(a); System.out.println("==================="); System.out.println(Demo04.changes(a));// 调用了changes方法(有返回值),将 a的值改变了,且返回了值,所 a的值改变了 } //返回值为空 public static void change(int a){ a = 10; } //有返回值 public static int changes(int a){ return a = 10; } }
引用传递
package com.javaStudy.oop; public class Demo05 { public static void main(String[] args) { //引用传递:对象,本质还是值传递 Person person = new Person(); System.out.println(person.name); System.out.println("-----------"); Demo05.change(person); System.out.println(person.name); } //定义一个方法:Person person 相当于 String person 相当于 int person(定义一个名称要带类型) public static void change(Person person){ //person是一个对象:指向的---->Person person = new Person(); 这是一个具体的人,可以改变属性! person.name = "西部开源"; } } //一个类里面只能有一个 public class,但可以有多个 class class Person{ String name; }