java基础13—方法

方法

public 返回值类型 方法名(参数列表){

​ 方法体

​ [return 数据类型的值]

​ }

返回值类型:void 无返回值

int 、String 具体数据类型 ,必须添加return+值;

调用者是否需要使用。

方法的参数

方法定义是否要参数,取决于方法执行过程是否需要调用者提供数据

案例:榨汁机 ,榨桃子汁 ,苹果汁,梨汁

public class ZhaZhiMachine { 
    public String zhaPeach() { 
        return "桃汁"; 
    }
    public String zhaPear() {
        return "梨汁";
    }
    public String zhaApple() {
        return "苹果汁";
    }public String zhazhi(String fruit) {
        return fruit+"汁";
    } 
} 
public class ZhaZhiTest {
    public static void main(String[] args) {
        ZhaZhiMachine machine=new ZhaZhiMachine(); //调用处,实际参数,值,要求与形式参数的个数,数据类型,顺序都要一样。 
        String f="苹果"; 
        String result=machine.zhazhi(f);
        System.out.println(result); 
    } 
}
形式参数实际参数
在方法定义处使用在方法调用处使用
数据类型 变量名,数据类型 变量名…值列表,要与形参数据类型、顺序、个数一致
不需要赋值,可直接使用赋值后,才能使用
//实现两个整数的加减乘除
public class Calculator {
	int a;
	int b;

	public int ji(String fuhao, int a, int b) {
		int c = 0;
		if ("*".equals(fuhao)) {
			c = a * b;
		} else if ("+".equals(fuhao)) {
			c = a + b;
		} else if ("-".equals(fuhao)) {
			c = a - b;
		} else if ("/".equals(fuhao)) {
			c = a / b;
		}
		return c;
	}
}
public class TestC {
	public static void main(String[] args) {
		Calculator one = new Calculator();
		int num = one.ji("-", 6, 2);
		System.out.println(num);
		System.out.println(one.ji("*",6,2));
		System.out.println(one.ji("/",6,2));
		System.out.println(one.ji("+",6,2));
	}
}

多个参数,如果数据类型一样,也可以使用可变长参数。

可变长度的参数的限制:

1、一个方法中最多有1个可变长的参数

2、可变长度的参数可以和不可变长的参数组合使用,但是可变长的参数必须位于最后

public int getSum2(int... nums) {
    int sum=0;
    for (int i = 0; i < nums.length; i++) {
        sum+=nums[i];
    }return sum; 
}
/// 
int[] nums= {12,2,3,24}; 
int r2=c.getSum2();//可变长参数可以不传参数 
int r2=c.getSum2();//可变长参数可以传任意个数参数 
int r2=c.getSum2(nums);//可变长参数可以传数组 
System.out.println(r2);

参数传递

在方法体内对形参重新赋值,形参的改变不会影响实参

///基本数据类型作形参
public void f1(int m) {
    m=12; 
}
int a=10; 
t.f1(a); 
System.out.println(a);//10 

/String作形参 
public void f2(String str) {
    str="hello"; 
}
String s="你好";
t.f2(s); 
System.out.println(s);//你好

数组作形参 
public void f3(int[] nums) {
    nums=new int[4]; 
}
int[] n= {1,2,3}; 
t.f3(n);
System.out.println(n.length);//3 

///自定义类型作形参 
public void f4(Student s) {
    s=new Student();
    s.age=16; 
}
Student stu=new Student();
stu.age=21; 
t.f4(stu); 
System.out.println(stu.age);//21

在方法体内修改引用类型空间中的数据,形参会影响实参

自定义类型作形参 
public void f5(Student s) {
    s.age=16; 
}
Student stu=new Student();
stu.age=21;
t.f5(stu);
System.out.println(stu.age);//16 

数组作形参
public void f6(int[] nums) {
    nums[0]=6; 
}
int[] n2= {10,2,3};
t.f6(n2); 
System.out.println(n2[0]);//6

深入理解foreach的修改

int[] n= {2,3,4,5}; 
for (int i : n) { 
    i=0;
}

for (int i : n) {
    System.out.print(i); 
}//修改无效,输出2345 

for (int i = 0; i < n.length; i++) {
    n[i]=0; 
}

for (int i : n) {
    System.out.print(i);
}//修改有效,输出0000 

对象数组中的修改 
Student[] stus=new Student[2];
stus[0]=new Student(); 
stus[0].name="张三"; 
Student s=new Student(); 
stus[1]=s; stus[1].name="李四"; 
//s.name="李四"; 

for (Student student : stus) {
    student.name="未知";//修改对象的属性,是可以的 
}

for (Student student : stus) {
    System.out.println(student.name);
}

练习

1

/*
 * 课程Course: 
	属性:课程名称 学生名称列表 String[] 
	方法:String getCourse():获取课程名称 
	boolean addStudent(String stuName):添加学生 
	dropStudent(String stuName):删除学生
	searchStudent(String stuName):查找学生 
	getStuNums():获取选课学生人数 
	String[] getStus():获取选课学生列表
 */
public class Course {
	String[] strs = new String[10];
	String clasName;

	public String getCourse() {
		return this.clasName;
	}

	public boolean addStudent(String str) {// 添加学生
		boolean flag = false;
		for (int i = 0; i < strs.length; i++) {
			if (strs[i] == null) {
				strs[i] = str;
				flag = true;
				break;
			}
		}
		return flag;
	}

	public void dropStudent(String strName) {// 删除学生
		for (int i = 0; i < strs.length; i++) {
			if (strName.equals(strs[i])) {
				strs[i] = null;
				break;
			}
		}
		System.out.println("已删除:" + strName);
	}

	public void searchStudent(String stuName) {// 查找学生
		for (int i = 0; i < strs.length ; i++) {
			if (stuName.equals(strs[i])) {
				System.out.println("已查到:" + stuName);
			}
		}
	}

	public int getStuNums() {// 获取选课学生人数
		int count = 0;
		for (String string : strs) {
			if (string != null) {// 数组中的学生不为空,计数器count累加
				count++;
			}
		}
		return count;
	}

	public void getStus() {// 获取选课学生列表
		System.out.println("选课学生列表:");
		System.out.println("学生姓名:");
		int count = 0;
		for (int i = 0; i < strs.length; i++) {
			String s = strs[i];
			if (s != null) {
				count++;// 编号
				System.out.println( count + "、" + s);
			}
		}
	}
}


public class CourseTest {

	public static void main(String[] args) {
		Course one = new Course();
		one.clasName = "数学";
		String f= one.getCourse();
		System.out.println("课程名称:"+f);

		one.addStudent("王五");//学生姓名
		one.addStudent("赵六");
		one.addStudent("张三");
		one.addStudent("田七");
		one.addStudent("马十");
		one.addStudent("刘八");
		one.addStudent("胡一");
		one.addStudent("李四");
		one.addStudent("吴邪");
		one.addStudent("胖子");
		System.out.println();
		System.out.println("选课学生人数:"+one.getStuNums()+"人");
		one.searchStudent("李四");
		one.dropStudent("张三");
		
		System.out.println();
		System.out.println("选课学生人数:"+one.getStuNums()+"人");

		one.getStus();
	}
}

在这里插入图片描述

2

/*
 *  求一组序列中的最大值(使用数组和可变长度的参数分别实现)
 * 
 */
public class Maxnumber {
	int[] nums = new int[4];

	public int maxNumbershow(int[] nums) {//数组
		int max = nums[0];
		for (int i = 1; i < nums.length; i++) {
			if (max < nums[i]) {//交换最大值
				max = nums[i];
			}
		}
		return max;
	}

	public int maxNumbershow1(int... nums) {//可变长度
		int max = nums[0];
		for (int i = 0; i < nums.length; i++) {
			if (max < nums[i]) {//交换最大值
				max = nums[i];
			}
		}
		return max;
	}
}

public class MaxnumberTest {

	public static void main(String[] args) {
		int[] nums = { 1, 2, 6, 88 };
		Maxnumber one = new Maxnumber();
		int r = one.maxNumbershow(nums);
		System.out.println("数组中最大数为:"+r);
		
        System.out.println("---------------");

		int[] nums1 = { 86, 6, 5, 9, 7, 2, 33, 99, 97 };
		Maxnumber two = new Maxnumber();
		int m = two.maxNumbershow1(nums1);
		System.out.println("数组中最大数为:"+m);
	}
}

在这里插入图片描述

3

/*
 * 根据行数,输出图形
 */
public class Graph {

	public void graphShow(int a) {

		for (int i = 1; i <= a; i++) {
			// 空格
			for (int k = 1; k <= a - i ; k++) {
				System.out.print(" ");
			}
			for (int m = 1; m <= 2 * i - 1; m++) {// 输出**
				System.out.print("*");
			}
			System.out.println();
		}
	}
}

public class gradeTest {

	public static void main(String[] args) {
		Graph one = new Graph();
		one.graphShow(7);
	}
}

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值