Day 19 回顾方法
方法的定义
一个方法的定义要有
/*
修饰符 返回值类型 方法名(参数类型 参数名...){
//方法体
return 返回值;
}
*/
break和return的区别
break:跳出switch,结束循环
return:结束方法 返回一个结果,后面就不能再有任何东西了。
异常抛出(以后会说)
看代码
修饰符 返回值类型 方法名(形式参数) 丢出 异常
public void readFile(String file) throws IOException{}
方法的调用
静态方法
方法修饰符中有static,表示是静态方法。静态调用静态,直接类名.方法名
非静态方法
不能直接使用,,要new一个类,将他实例化,之后才能调用。
相互之间的引用
//static 是和类一起加载的
public static void a (){
b();//错误
}
//类实例化之后才存在
public void b (){
}
在一个类中,如果两个方法都是静态/非静态的,那方法之间能相互引用,如果像上面的代码一样,一个有static,一个没有。那么他就不能相互引用。
形参和实参
形参就是一个形式,里面没有值,而实际参数就是有值的。
形参和实参的数据类型要相同(存疑)
package com.oop.demo01;
public class Demo03 {
public static void main(String[] args) {
Demo03 demo03 = new Demo03();
//实际参数 参数的值 实际参数和形式参数的类型要对应
int add = demo03.add(1, 2);
System.out.println(add);
}
//形式参数 参数名字
public int add(int a, int b){
return a+b;
}
}
值传递和引用传递(有点晕)
java中都是值传递
package com.oop.demo01;
//值传递
public class Demo04 {
public static void main(String[] args) {
int a=1;
System.out.println(a);//1
Demo04.change(a);
System.out.println(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 person = new Person();
//此时person.name没有值 因为引用的class Person 里name是null
System.out.println(person.name); //null
//person走一个change方法
Demo05.change(person);
//因此能输出change后的名字
System.out.println(person.name);//李建辉
}
public static void change(Person person){
//person是一个对象:指向的--->Person person = new Person(); 这是一个具体的人,可以改变属性!
//改的是class里面的name
person.name = "李建辉";
}
}
//定义了一个Person类, 有一个属性:name
class Person{
String name;//默认值为null
}