方法的回顾以及加深
方法的定义
-
修饰符
-
返回值类型
-
方法名
-
方法体
-
参数列表(参数类型 参数名)…
-
异常抛出 : 疑问(之后讲解)
-
返回值
方法的调用
- 静态方法
- 非静态方法
- 形参和实参
- 值传递和引用传递
值传递(相当于是 我派了一个人去帮我拿快递,改变的是我派去的人我没有改变)不会改变外部变量的值,
引用传递(相当于是我直接与快递员接触,是我拿了东西,我改变了)会改变外边变量的值
package com.oop.demo01;
//值传递
public class Demo04 {
public static void main(String[] args) {
int a=1;
System.out.println(a);
Demo04.change(a);
System.out.println(a);//此时a还是等于 1
}
public static void change(int a){
a=10;
}
}
package com.oop.demo01;
//引用传递:传递的是对象 本质还是值传递
public class Demo05 {
public static void main(String[] args) {
//创建一个对象
Person person = new Person();
System.out.println(person.name);
System.out.println("==============");
change(person);
System.out.println(person.name);
}
public static void change(Person person){
//person是一个对象 它指向的是 ----->Person person = new Person();这是一个具体的人 可以改变属性
person.name="某某某·" ;
}
}
//定义一个 Person类,有一个属性 name
class Person{
String name; //String类型 默认值为 null
}
- this关键字
方法调用的具体讲解
- 静态方法和非静态方法
package com.oop.demo01;
//静态方法 和 非静态方法的 调用
public class Demo02 {
public static void main(String[] args) {
//静态方法 修饰符加了 static
/*如果需要调用其他类的方法,只需要写
类型+方法名
eg: Students.say();
*/
Students.say();
//非静态方法 没有加static
/*
实例化这个类 new一下
new+类名.方法名();
eg:new Students().say1();
*/
//一般写成如下 (写法: new 类名然后ALT+回车补充完整)
//对象类型+对象名=对象值
Students students = new Students();
//通过 对象名.方法 来调用方法
students.say1();
}
可以直接调用的情况
public static void a(){
b();
}
public static void b(){
a();
}
==================================================
public void a(){
b();
}
//类实例化之后才存在
public void b(){
a();
}
不可以直接调用的情况
//现在不能调用
//和类一起加载 已经存在了
public static void a(){
b();
}
//类实例化之后才存在
public void b(){
}
//现在可以调用
public static void a(){
Demo02 demo02 = new Demo02();
demo02.b();
}
//类实例化之后才存在
public void b(){
}