java面向对象_2 _方法的回顾与加深
方法的定义
-
修饰符
-
返回类型
-
break与return的区别:
- break,跳出switch,结束整个循环;
- return,结束方法,返回一个结果(可以为空,看返回值类型)
-
方法名:注意规范就ok,见名知意
-
参数列表:(参数类型,参数名)( 可变参数:(参数类型… 参数名))
-
异常抛出 : ArrayIndexOutOfBoundsException: 数组下标越界异常,
之后还要学
代码:
package com.wlw.oop;
import java.io.IOException;
// Demo01 就是一个类
public class Demo01 {
// main方法
public static void main(String[] args) {
}
/*
修饰符 返回值类型 方法名(..参数..){
//方法体
return 返回值;
}
*/
public String hello(){
return "Hello,World!";
}
public void print(){
return;
}
public int max(int a, int b){
return a>b ? a : b; //三元运算符
}
public static void readFile(String file) throws IOException {
}
}
方法的调用
-
静态方法
-
非静态方法
package com.wlw.oop; public class Student { //静态方法 加修饰符static public static void say(){ System.out.println("学生说话了"); } //非静态方法 没有加修饰符static public void read(){ System.out.println("学生在读书"); } }
package com.wlw.oop; public class Demo02 { public static void main(String[] args) { //静态方法的调用 System.out.println("静态方法的调用"); Student.say(); //非静态方法的调用 //先实例化这个类,用 new System.out.println("\n"+"非静态方法的调用"); //对象类型 对象名 = 对象值 Student student = new Student(); student.read(); } /* static 1. a和b两个方法,如果都没有加修饰符static,他们之间可以互相调用 2. a和b两个方法,如果都加了修饰符static,他们之间也可以互相调用 3. a和b两个方法,有一个没加,另一个加了,他们之间就不能直接互相调用了 因为static 是和类一起加载的,当类存在时,加static的方法也就存在了 没有加static的方法,需要 类实例化 之后,才能存在 */ public static void a(){ // b(); 这样就会报错 } public void b(){ } }
-
形参与实参
package com.wlw.oop; public class Demo03 { public static void main(String[] args) { //这里的(1,2)就是实参(实际参数) int i = Demo03.add(1, 2); // int i1 = add(1, 2); 因为add这个静态方法就是写在当前类下,可以直接调用方法名 System.out.println(i); } //(int a,int b) ,这是形式参数,确定类型就好,名字可以随意 public static int add(int a,int b){ return a+b; } }
-
值传递与引用传递 (18 Java方法_1 _方法的定义与调用 _值传递与引用传递 ,这里面也写了)
package com.wlw.oop; //值传递 /* 在方法的调用过程中,实参把它的实际值传递给形参, 此传递过程就是将实参的值复制一份传递到函数中, 这样如果在函数中对该值(形参的值)进行了操作将不会影响实参的值。 因为是直接复制,所以这种方式在传递大量数据时,运行效率会特别低下。 */ public class Demo04 { public static void main(String[] args) { int a = 1; //change(a); Demo04.change(a); System.out.println(a); //输出为 1 } public static void change(int a){ a = 10; } }
package com.wlw.oop; //引用传递 /* 引用传递弥补了值传递的不足, 如果传递的数据量很大,直接复过去的话,会占用大量的内存空间, 而引用传递就是将对象的 地址值 传递过去,函数接收的是原始值的首地址值。 在方法的执行过程中,形参和实参的内容相同,指向同一块内存地址, 也就是说操作的其实都是源数据,所以方法的执行将会影响到实际对象。 */ public class Demo05 { public static void main(String[] args) { Person person = new Person(); System.out.println(person.name); //null Demo05.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; //默认值为 null }
-
this关键字:当前这个类,或当前这个对象