Java面向对象(二)Java方法的补充
静态方法
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
引用传递
Java如何实现引用传递
-
对象的传递是引用传递(本质还是值传递)
-
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 史小鹏