Java函数(方法)

没想到吧,我竟然会一连发两篇博客~( ̄▽ ̄~)
曾经咸鱼的我已经一去不复返了(๑•̀ㅂ•́)و✧

1、理论

1.1、方法的位置

1.方法必须位于类中;
2.方法中不可以再定义方法;
3.一个类可以有多个方法。

1.2、方法的定义

	修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,……){
		执行语句;
		……
		return 返回值;
	}

修饰符:决定方法的访问控制权限;
返回值:将计算结果返回给调用者。

1.3、方法的调用

方法只有在调用后才被执行,不然不会执行(简直比我还咸鱼);
常用方式:对象名.方法名();
(ps:若方法被static修饰,则用类名.方法名()调用)

1.4、可变参数

1.可变参数只能出现在参数列表的最后;
2.**…**位于变量类型和变量名之间(前后有无空格都可以);
3.调用可变参数的方法时,编译器会为可变参数隐含创建一个数组。

	// 可变参数
	public static void getSum2(int...arr) {
		int length = arr.length;
		System.out.println(length);
		for (int m:arr) {
			System.out.println(m);
		}
	}

1.5、方法的重载

同一个类中,可以有一个以上的方法使用相同的方法名称,但是这些方法的参数必须不同(参数个数或类型不同)。

public class Test03 {

	public static void main(String[] args) {
		add(1, 2);
		add(1, 2, 2);
		add(1,2.0);
	}

	// 函数的重载
	// 判断重载只和方法的参数有关
	public static void add(int a, int b) {
		System.out.println(a + b);
	}

	public static void add(int a, int b, int c) {
		System.out.println(a + b + c);
	}
	public static void add(int a,double b) {
		System.out.println(a+b);
	}
}

2、重点在上面的理论,下面是一些练手的

2.1、不用在意

public class Test01 {
	// main 是默认的主函数 主方法
	public static void main(String[] args) {
		Test01.printName();
		System.out.println("main");
		// 调用方法-->类名.方法名()
		Test01.printName();
		Test01.getSum();
	}

	// 在控制台打印名字
	public static void printName() {
		System.out.println("小灰灰");
	}

	public static void getSum() {
		int a = 4;
		int b = 6;
		int c = a + b;
		System.out.println(c);
	}
}
public class Test02 {

	public static void main(String[] args) {
		Test02.printName();
		System.out.println("-----");
		getSum();// 在同一个类下调用时可以把类名省略
	}

	public static void printName() {
		System.out.println("小灰灰");
		Test02.getSum();// 方法之间可以互相调用(main方法除外)
	}

	public static void getSum() {
		int a = 4;
		int b = 6;
		int c = a + b;
		System.out.println(c);
		// printName();
		// 互相调用导致程序报错
	}
}
public class Test04 {

	public static void main(String[] args) {
		// 方法(无参)
		Test04.add1();
		// 方法(有参)
		Test04.add2(3, 4);
	}

	public static void add1() {
		int a = 6;
		int b = 9;
		int c = a + b;
		System.out.println(c);
	}

	public static void add2(int a, int b) {
		System.out.println("a=" + a);
		System.out.println("b=" + b);
		int c = a + b;
		System.out.println("c=" + c);
	}
}

public class Test05 {

	public static void main(String[] args) {
		Test05.rec(4, 9);// 实参-->实际的参数
		Test05.area(4.2);
		Test05.printInfo("小灰灰", 17);
	}

	// 求长方形面积
	// a和b是形式参数(形参),无关紧要,可以修改
	public static void rec(int a, int b) {
		int area = a * b;
		System.out.println(area);
	}

	public static void area(double r) {
		double area = r * r * 3.14;
		System.out.println(area);
	}

	public static void printInfo(String name, int age) {
		System.out.println("私の名前は " + name + " です");
		System.out.println("私の年齢は " + age + " 歳です");
	}
}

2.2、练习题

public class Work01 {

	public static void main(String[] args) {
		// 1
		double area=Work01.area(4.2);
		System.out.println("圆的面积:"+area);
		// 2
		Work01.strStudy();
		// 3
		String string="我并不知道想说什么";
		wantWords(string);
		// 4
		studentInfo("小灰灰", 17);
		// 5
		Work01.squareArea(4.2);
	}
	// 1、请你设计一个函数用于求圆的面积 
	public static double area(double r) {
		double area=r*r*3.14;
		return area;
	}
	// 2、请您设计一个函数用于在控制台打印5遍好好学习,天天向上
	public static void strStudy() {
		for (int i = 0; i < 5; i++) {
			System.out.println("好好学习,天天向上+"+(i+1));
		}
	}
	// 3、请您设计一个函数用于在控制台打印5遍我想说的话
	public static void wantWords(String string) {
		for (int i = 0; i < 5; i++) {
			System.out.println(string+"+"+(i+1));
		}
	}
	// 4、请您设计一个函数同时打印学生的名字和年纪大小
	public static void studentInfo(String name,int age) {
		System.out.println("姓名:"+name+"	年龄:"+age);
	}
	// 5、请您设计一个函数求正方形的面积
	public static void squareArea(double a) {
		double area=a*a;
		System.out.println("正方形面积:"+area);
	}
}
public class Work02 {

	public static void main(String[] args) {
		// 6
		isoscelesTriangle(7);
		// 7
		sum1(100, 200);
		// 8
		sum2(0, 100);
		// 9
		int[] array= {1,2,3,4};
		printArray(array);
		reverseArray(array);
		printArray(array);
		
		
	}
	// 6、请您设计一个函数打印如下类似图案(选做)
	public static void isoscelesTriangle(int layer) {
		for(int i=1;i<=layer;i++) {
			for(int j=1;j<=layer-i;j++) {
				System.out.print(" ");
			}
			for(int k=1;k<=(2*i-1);k++) {
				System.out.print("*");
			}
			System.out.println();
		}
	}
	// 7、请您设计一个函数用于求某个区间数据的总和(例如:100-200)
	public static void sum1(int min, int max) {
		int sum = 0;
		for (int i = min; i <= max; i++) {
			sum = sum + i;
		}
		System.out.println(sum);
	}
	// 8、请您设计一个函数用于求某个区间数据的奇数的总和
	// 或者偶数的总和(选做)
	public static void sum2(int min, int max) {
		int sumOdd = 0;
		int sumEven = 0;
		for (int i = min; i <= max; i++) {
			if (i % 2 == 0) {
				sumEven += i;
			} else {
				sumOdd += i;
			}
		}
		System.out.println("偶数和:" + sumEven);
		System.out.println("奇数和:" + sumOdd);
	}
	// 9、请您设计一个函数用于逆序打印int类型数组
	public static int[] reverseArray(int[] array) {
		for (int i = 0; i < array.length / 2; i++) {
			int temp = array[i];
			array[i] = array[array.length - 1 - i];
			array[array.length - 1 - i] = temp;
		}
		return array;
	}
	public static void printArray(int[] array) {
		System.out.print("{");
		for (int i = 0; i < array.length; i++) {
			System.out.print(array[i]);
			if (i != array.length - 1) {
				System.out.print(",");
			}
		}
		System.out.println("}");
	}
}
public class Work03 {

	public static void main(String[] args) {
		// 10
		String[] array= {"I","love","you"};
		words(array);
		System.out.println();
		// 11
		operations(4, 2);
		// 12
		String string="abcdgh";
		strLength(string);
	}
	// 10、请您设计一个函数用于将3个英语单词连接成一句话
	public static void words(String[] array) {
		for (int i = 0; i < array.length; i++) {
			System.out.print(array[i]+" ");
		}
	}
	
	// 11、请您设计一个函数用于求两个数的四则运算(选做)
	public static void operations(int a,int b) {
		int plus=a+b;
		int reduce=a-b;
		int ride=a*b;
		System.out.println(a+"+"+b+"="+plus);
		System.out.println(a+"-"+b+"="+reduce);
		System.out.println(a+"*"+b+"="+ride);
		if(b==0) {
			System.out.println("除数不能为0");
		}else {
			int except=a/b;
			System.out.println(a+"/"+b+"="+except);
		}
	}
	// 12、请您设计一个函数用于计算字符串的长度
	public static void strLength(String string) {
		System.out.println("字符串长度为:"+string.length());
	}
}
public class Work04 {

	public static void main(String[] args) {
		// 13
		threeFigures(287);
		// 14
		int result=80;
		String grade=grade(result);
		System.out.println(grade);
		// 15
		float[] array= {1.2F,2.3F,3.2F,2.1F};
		float difference=difference(array);
		System.out.println(difference);
	}
	// 13、请您设计一个函数分别求三位数的个位、十位,百位
	// 例如:287  在控制台打印:287的百位是2,十位是8,个位是7
	public static void threeFigures(int threeFigures) {
		int single=threeFigures%10;
		int ten=(threeFigures/10)%10;
		int hundred=threeFigures/100;
		System.out.println(threeFigures+"的百位是"+hundred+",十位是"+ten+",个位是"+single);
	}
	// 14、请您设计一个函数为学生成绩评定等级
	// 0-60 及格 60-70良好 70-80佳好 80-100优秀
	public static String grade(int result) {
		String grade = "";
		if (result >= 0 && result <= 100) {
			if (result < 60) {
				grade = "及格";
			} else if (result >= 60 && result < 70) {
				grade = "良好";
			} else if (result >= 70 && result < 80) {
				grade = "佳好";
			} else {
				grade = "优秀";
			}
		} else {
			return "输入成绩有误";
		}
		return grade;
	}
	// 15、请您设计一个函数找出float类型数组中的最大值与最小值的差值
	public static float difference(float[] array) {
		float min=array[0];
		float max=array[0];
		for (int i = 1; i < array.length; i++) {
			if(min>array[i]) {
				min=array[i];
			}
			if(max<array[i]) {
				max=array[i];
			}
		}
		float difference=max-min;
		return difference;
	}
}

3、方法小结

1.方法要先声明再使用;
2.方法不调用不执行;
3.方法调用一次执行一次;
4.方法里不能再定义方法,即不能嵌套;
5.方法在定义参数是要使用逗号隔开;
6.方法有返回值的情况下(即返回值类型不是void),一定要用retuen带回一个值;
7.函数的结果应该返回给调用者,由调用者处理;
8.return语句的执行将终止函数的执行,即表示函数执行完毕。

最后的最后,大家来猜猜本咸…本人下一篇博客又要到什么时候才写呢(ˉ▽ ̄~)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值