韩顺平零基础学JAVA200-210集学习笔记

JAVA20231215

201202203204205206207208成员方法

基本介绍:在某些情况下,我们需要定义成员方法(简称方法)。比如人类:除了有一些属性外(年龄,姓名…),我们人类还有一些行为比如:可以说话、跑步…,通过学习,还可以做算术题。这是就要用成员方法才能完成。现在要求对Person类完善。

方法快速入门:Method01.java

public class Method01{
	public static void main(String[] args){
		//需求分析:
		//1.添加speak成员方法,输出“我是一个好人”
		//2.添加cal01成员方法,可以计算从1+...+1000的结果
		//3.添加cal02成员方法,该方法可以接收一个数n,计算从1+...+n的结果
		//4.添加getSum成员方法,可以计算两个数的和
		//思路分析:
		//先创建一个类,再创建一个对象  class Person      Person p1 = new Person()
		//在类中添加方法 public void speak()
		//通过对象调用方法  p1.speak()
		//代码实现:
		Person p1 = new Person();
		p1.speak();
		p1.cal01();
		p1.cal02(1000);
		p1.getSum(1,2);
		//使用int变量 res来接收返回的sum
		int res = p1.getSum1(3,4);
		System.out.println("3 + 4的结果为:" + res);
	}
}
//创建一个类
class Person{
	//方法 = 访问修饰符 + 返回值 + 方法名() + 方法体
	//方法中 public 为访问修饰符  void代表没有返回值   speak(),speak为方法名括号中填形参  {}中括号中为方法体
	public void speak(){
		System.out.println("我是一个好人");
	}
	public void cal01(){
		int sum = 0;
		for(int i = 1 ;i <= 1000;i++){
			sum += i;
		}
		System.out.println("从1+...+1000的结果为" + sum);
	}
	public void cal02(int j){
		int sum = 0;
		for(int i = 1;i <= j;++i){
			sum += i; 
		}
		System.out.println("您计算的1+...+" + j + "的结果为" + sum);
	}
	public void getSum(int i,int j){
		System.out.println("计算的" + i + "+" + j + "的和为" + (i+j));
	}
	// 若返回值为int
	public int getSum1(int i,int j){
		int sum = i + j;
		return sum;//将sum的值返回,对象调用时需要有一个int变量接收
	}
}

方法的调用机制原理:(!!!)

画出程序执行过程

请添加图片描述

为什么需要成员方法:看一个需求 Method02.java

public class Method02{
	public static void main(String[] args){
		//为什么需要方法呢?
		//看一个需求
		//假如要对一个二维数组arr遍历100次
		int [][]arr = {{1,2,3},{4,5,6},{7,8,9}};
		//传统方法
		for(int i = 0;i < arr.length;i++){
			for(int j = 0;j < arr[i].length;j++){
				System.out.println(arr[i][j]);
			}
		}
		for(int i = 0;i < arr.length;i++){
			for(int j = 0;j < arr[i].length;j++){
				System.out.println(arr[i][j]);
			}
		}
		for(int i = 0;i < arr.length;i++){
			for(int j = 0;j < arr[i].length;j++){
				System.out.println(arr[i][j]);
			}
		}
		//.....很麻烦
		//使用方法
		MethodImport m1 = new MethodImport();
		m1.arrExercise();
	}
}
class MethodImport{//创建一个类
	public void arrExercise(){
		int [][]arr = {{1,2,3},{4,5,6},{7,8,9}};
		for(int i = 0;i < arr.length;i++){
			for(int j = 0;j < arr[i].length;j++){
				System.out.println(arr[i][j]);
			}
		}
	}

}

由此可见方法可以提到代码的复用性,提高效率

成员方法的好处:

  1. 提高代码的复用性
  2. 可以将实现的细节封装起来,然后供其他用户来调用即可

成员方法的定义:

格式:

访问修饰符(public、protected、默认、private) 返回数据类型 方法名(形参列表…){//方法体

语句;

return 返回值;

}

  1. 形参列表:表示成员方法输入cal(int n) getSum(int num1 , int num2)
  2. 返回数据类型:表示成员方法输出,void表示没有返回值
  3. 方法主体:表示为了实现某一功能代码块
  4. return 语句不是必须的

成员方法注意事项和使用细节:

public class MethodDetail{
	public static void main(String[] args){
		AA a = new AA();
		int []res = a.getSumAndSub(1,4);
		System.out.println("和 = " + res[0]);
		System.out.println("差 = " + res[1]);
		//细节:调用带参数的方法时,一定对应着参数列表传入相同类型或兼容类型的参数
		byte b1 = 1;
		byte b2 = 2;
		a.getSumAndSub(b1,b2);//byte -> int
		//a.getSumAndSub(1.1,1.8);//double -> int(×)
		//细节:实参和形参的类型要一致或兼容、个数、顺序必须一致
		//a.getSumAndSub(100);//× 个数不一致
		a.f3("tom",10);//√
		//a.f3(100,"jack");//实际参数和形式参数顺序不对
	}
}
class AA{
	//细节:方法不能嵌套定义
	public void f4(){
		//错误
		//public void f5(){

		//}
	}
	public void f3(String str,int n){

	}
	//1.一个方法最多有一个返回值[思考,如何返回多个结果 返回数组]
	public int []getSumAndSub(int n1,int n2){
		int []resArr = new int [2];
		resArr[0] = n1 + n2;
		resArr[1] = n1 - n2;
		return resArr;
	}
	//2.返回类型可以为任意类型,包含基本类型或引用类型(数组,对象)
	//具体看 getSumAndSub
	//
	//3.如果方法要求有返回数据类型,则方法体中最后的执行语句必须为return值;
	//而且要求返回值类型必须和return的值类型一致或兼容
	public double f1(){
		double d1 = 1.1*3;
		int n = 100;
		return n;//int  -> double(√)
		//return d1;
	}
	//如果方法时void,则方法体中可以没有return语句,或者只写return;
	//在实际工作中,我们的方法都是为了完成某个功能,所以方法名要有一定含义,最好是见名知义
	public void f2(){
		System.out.println("hello1");
		System.out.println("hello1");
		System.out.println("hello1");
		int n = 10;
		//return;
	}
}

访问修饰符(作用是控制 方法使用的范围)

如果不写就是默认访问[有四种:public、protected、默认、private]

返回数据类型

  1. 一个方法最多有一个返回值[思考,如何返回多个结果 返回数组]
  2. 返回类型可以为任意类型,包含基本类型或引用类型(数组、对象)
  3. 如果方法要求有返回数据类型,则方法体中最后的执行语句必须为return值;而且要求返回值类型一致或兼容
  4. 如果方法时void,则方法体中可以没有return语句,或者只写return

方法名

遵循驼峰命名法,最好见名知义,表达出该功能的意思即可,比如 得到两个数的和getSum开发中按照规范

形参列表

  1. 一个方法可以有0个参数,也可以有多个参数,中间用逗号隔开,比如getSum(int n1,int n2)
  2. 参数类型可以为任意类型,包含基本类型或引用类型,比如printArr(int [] []map)
  3. 调用带参数的方法时,一定对应着参数列表传入相同类型或兼容类型的参数
  4. 方法定义时的参数称为形式参数,简称形参;方法调用时的传入参数称为实际参数,简称实参,实参和形参的类型要一致或兼容、个数、顺序必须一致

方法体

里面写完成功能的具体语句,可以为输入、输出、变量、运算、分支、循环、方法调用,但里面不能再定义方法!即:方法不能嵌套定义

方法调用细节说明(!!!)

  1. 同一个类中的方法调用:直接调用即可。
  2. 跨类中的方法A类调用B类方法:需要通过对象名调用。
  3. 特别说明:跨类的方法调用和方法的访问修饰符相关

209类的完善

请添加图片描述

方法练习题

MethodExercise01.java

  1. 编写类 AA ,有一个方法:判断一个数是奇数 odd 还是偶数, 返回 boolean
  2. 根据行、列、字符打印 对应行数和列数的字符,比如:行:4,列:4,字符#,则打印相应的效果
public class MethodExercise01{
	public static void main(String[ ] args){
		//需求分析:
		//1.编写类AA,有一个方法:判断一个数是奇数odd还是偶数,返回boolean
		//2.根据行、列、字符打印对应行数和列数的字符,比如:行:4,列:4,字符:#则打印相应的效果
		//思路分析:
		//1.创建一个类AA 方法为public 返回类型为boolen 方法名为oddOrNo
		//2.		    方法为public 返回类型为void 方法名为print
		//代码实现
		AA a1 = new AA();
		if(a1.oddOrNo(6)){
			System.out.println("经判断这个数为偶数");
		}else{
			System.out.println("经判断这个数为奇数");
		}
		AA a2 = new AA();
		a2.print(4,4,'#'); 
	}
}
class AA{
	public boolean oddOrNo(int i){
		if(i % 2 == 0){
			return true;
		}else{
			return false;
		}
	}
	public void print(int line,int cloumn,char c){
		int [][]arr = new int[line][cloumn];
		for(int i = 0;i < line;i++){
			for(int j = 0;j < cloumn;j++){
				System.out.print(c);
			}
			System.out.println();
		}

	}
}

210成员方法传参机制

基本数据类型的传参机制

看一个案例,分析结果是什么?

public void swap(int a,int b){
    int temp = a;
    a = b;
    b = temp;
    System.out.println("a = " + a + "\tb = " + b);
}

结论及示意图:
基本数据类型,传递的是值(值拷贝),形参的任何改变不影响实参!

  • 21
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值