0
点赞
收藏
分享

微信扫一扫

31 java面向对象_2 _方法的回顾与加深


java面向对象_2 _方法的回顾与加深

方法的定义

  1. 修饰符
  2. 返回类型
  3. break与return的区别:
  1. break,跳出switch,结束整个循环;
  2. return,结束方法,返回一个结果(可以为空,看返回值类型)
  1. 方法名:注意规范就ok,见名知意
  2. 参数列表:(参数类型,参数名)( 可变参数:(参数类型… 参数名))
  3. 异常抛出 :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 {

}
}

方法的调用

  1. 静态方法
  2. 非静态方法

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(){

}
}

  1. 形参与实参

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;
}
}

  1. 值传递与引用传递 (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
}

  1. this关键字:当前这个类,或当前这个对象


举报

相关推荐

0 条评论