Student类里的静态(static)方法say
public class Student { public static void say(){ System.out.println("正在说话"); } }
主函数调用Student类里的静态方法
public class Demo01 { public static void main(String[] args) { Student.say(); } } //输出: 正在说话
Student2类里的非静态方法say
public class Student2 { public void say(){ System.out.println("正在说话2"); } }
主函数调用Student2类里的非静态方法
public class Demo01 { public static void main(String[] args) { //new:实例化这个类 //对象类型 对象名 = 对象值 Student2 student2 = new Student2(); student2.say(); } } //输出: 正在说话2
在一个类中:
静态方法之间可以互相调用
非静态方法之间可以互相调用
非静态与静态方法之间不能互相调用(static不能调用非static)
原因:
static静态方法是和类一起加载的,但是非静态方法是在类实例化之后才存在的,存在 的调用不存在的就会报错
Java是值传递(传递的是值,不是地址)
public class Demo02 { public static void main(String[] args) { int a=5; x(a); System.out.println("主函数中的a的值:"+a); } public static void x(int a){ a=10; System.out.println("方法中的a的值:"+a); } } //输出: 方法中的a的值:10 主函数中的a的值:5
对象的传递是引用传递(本质还是值传递)
public class Demo03 { public static void main(String[] args) { Person person = new Person(); System.out.println(person.name);//第一次输出默认值:null x(person); System.out.println(person.name);//第二次输出修改后的值,证明x方法是引用传递(传的是地址)而不是值传递 } public static void x(Person person){ //person是一个对象,指向的是----->Person person = new Person();这是一个具体的,可以以改变属性 person.name="史小鹏"; } } class Person{ String name; } //输出: null 史小鹏