源自视频课程的本人总结,推荐课程链接
何谓方法
- System.out.println(),println()就是一个方法
- Java方法就是语句的集合,他们一起执行一个功能;
- Java方法在程序中创建,在其他地方引用;
- Java方法,一个方法只完成一个功能,符合规范 ;
- Java方法命名规则:首字母小写,遵循驼峰原则。
示例:方法调用
package menthod;
public class Demo01 {
//main方法
public static void main(String[] args) {
int sum = add(2, 3);
System.out.println(sum); //5
}
//加法 static修饰符将该方法变为类方法,才可以在main方法里调用
public static int add(int a, int b){
return a + b;
}
}
方法的定义及调用
- 方法定义
修饰符 返回值类型 方法名(参数类型 参数名){
...
方法体
...
return 返回值;
}
- 修饰符:可选,eg.public、static、final…;
- 返回值类型:int、double…无返回值类型woid;
- 命名:遵循命名规则
- 参数类型:可选,方法中可以没有参数,此参数为形参;实际传递的参数为实参;
- 方法体:功能
- return:如果有返回值的方法必须在方法体中return返回值。
- 方法调用:对象名.方法名(实参列表)
- 当方法返回一个值的时候,方法调用通常被当做一个值:
int larger = max(30,40);
- 当方法返回值是woid,方法调用一定是一条语句:
System.out.println("hello wrold!);
示例:
package menthod;
public class Demo02 {
public static void main(String[] args) {
int max = max(10, 10);
System.out.println(max);
}
//比大小,返回大值
public static int max(int a, int b){
if (a==b){
System.out.println("a==b");
return 0; //终止方法
}else if(a>b){
return a;
}else{
return b;
}
}
}
方法重载
- 重载:一个类里可以有多个相同方法名的方法,但必须形参类型不同
package menthod;
public class Demo02 {
public static void main(String[] args) {
double max = max(10.0, 20.0);
System.out.println(max);
}
//比大小,返回大值
public static int max(int a, int b){
//执行语句
return;
}
public static double max(double a, double b){
//执行语句
return;
}
//三个数比大小
}
- 方法的重载的规则:
- 方法名称必须相同;
- 参数列表必须不同,可以是个数不同、类型不同、参数排列不同等;
- 方法的返回类型可以相同,也可以不同;
- 仅仅返回类型不同不足以构成重载。
示例:三个方法,重载
package menthod;
public class Demo02 {
public static void main(String[] args) {
double max = max(10.0, 20.0);
int max3 = max(10,20,30);
System.out.println(max); //20.0
System.out.println(max3); //30
}
//比大小,返回大值
public static int max(int a, int b){
if (a==b){
System.out.println("a==b");
return 0; //终止方法
}else if(a>b){
return a;
}else{
return b;
}
}
public static double max(double a, double b){
if (a==b){
System.out.println("a==b");
return 0; //终止方法
}else if(a>b){
return a;
}else{
return b;
}
}
//三个数比大小
public static int max(int a, int b, int c){
if (a==b && b==c){
System.out.println("a==b==c");
return 0; //终止方法
}else if(a>b && a>c){
return a;
}else if(b>a && b>c){
return b;
}
else{
return c;
}
}
}
命令行传参(不常用,了解)
- main方法中用命令行调用实现
package menthod;
public class Demo03 {
public static void main(String[] args) {
//args.length 数组长度
for (int i = 0; i < args.length; i++){
System.out.println("args["+i+"]:"+args[i]); //输出所有数组
}
}
}
- 找到Demo03路径,用cmd打开
可变参数
- 传递同类型的可变参数(个数可变);
- 在方法声明中,在指定参数类型后面加一个省略号(…);
- 一个方法中只能声明一个可变参数,且该可变参数必须是方法的最后一个参数,其他普通参数声明必须在它之前
示例:
package method;
public class Demo04 {
public static void main(String[] args) {
//调用可变参数的方法
printMax(34,4,23,42,4,2); //The max value is 42.0
printMax(new double[]{1,23,4,56,6}); //The max value is 56.0
}
public static void printMax(double... numbers){
if (numbers.length == 0){
System.out.println("No argument passed");
return;
}
double result = numbers[0];
//排序
for (int i = 1; i < numbers.length; i++) {
if (numbers[i]>result){
result = numbers[i];
}
}
System.out.println("The max value is "+result);
}
}
递归
层层递进,再返回值。
练习
- 实现计算器功能,即加减乘除,并且能够循环接收新数据,通过用户交互实现
思想:(1)加减乘除四个类方法;(2)Scanner接收键盘输入交互;(3)while循环判断IO输入循环接收;(4)switch判断加减乘除符号
package method;
import java.util.Scanner;
public class Cal {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNextLine()){ //实现循环接收新数据
double result = 0.0;
int i = scanner.nextInt();
char c = scanner.next().charAt(0); //
int j = scanner.nextInt();
//判断计算符
switch (c){
case '+':
result = add(i, j);
break;
case '-':
result = cha(i, j);
break;
case 'x':
result = chen(i, j);
break;
case '/':
result = chu(i, j);
break;
default:
System.out.println("输入有误!");
}
System.out.println(result);
}
scanner.close();
}
//Add
public static int add(int a, int b){
int sum = a + b;
return sum;
}
//Cha
public static int cha(int a, int b){
int cha = a - b;
return cha;
}
//Chen
public static int chen(int a, int b){
int chen = a * b;
return chen;
}
//Chu
public static double chu(int a, int b){
double chu = a / b;
return chu;
}
}