方法
等同于其他编程语言的函数,功能
pubilc static void main(String[] args){
//程序的入口
}
1.组成部分
[1.访问权限修饰符 public privat protected 默认(缺省)defaul]
[2.访问修饰符 static final abstract]
3.返回值类型 ①无返回值类型 void ②有返回值类型(数据类型)有且只有一个
4.方法名 规范:变量名称规范 小写驼峰
5.形式参数():①无参() ②有参(具体的参数类型)(int num,String str)
参数个数:不要超过四个
形参(局部变量)
[6.方法体:{}]
2.方法分类
针对于返回值类型和形式参数而言:
1.有参无返回值
2.无参有返回值
3.有参无返回值
4.有参有返回值
3.创建方法
方法与方法是平级的关系
3.1无参无返回值
public class Method1 {
public static void main(String[] args) {
System.out.println("main开始。。。。。。");
noArgsNoReturn2();
System.out.println("main结束。。。。。。");
}
//创建方法
public static void noArgsNoReturn2() {
//调用noArgsNoReturn1()的方法
//语法: 方法名();(无参的方法)
System.out.println("noArgsNoReturn2......");
noArgsNoReturn1();
}
/**
* 无参无返回值的方法
* 如果不调用,只是存在于文件中
* 调用方法: 在方法里面调用方法(程序执行必须依赖于main)
*/
public static void noArgsNoReturn1() {
int[] score = {2, 432, 5221, 235, 5352, 1, 53, 5, 3, 5364};
//去除最高分+最低分
Arrays.sort(score);//升序排列
System.out.println(Arrays.toString(score));
int totalScore = 0;
int len = score.length;
for (int i = 1; i < len - 1; i++) {
totalScore += score[i];
}
System.out.println(totalScore / (len - 2));
}
}
3.2无参有返回值
public static void main(String[] args) {
System.out.println("main开始。。。。。");
//调用方法(无参有返回值): 接收返回数据(赋值给某个变量)
boolean result = userLogin();
if(!result){
System.out.println("登录失败");
return;
}
System.out.println("登录成功");
System.out.println("main结束。。。。。");
}
/**
* 模拟用户登录的功能(成功 失败) boolean int-->0 1
* 任意的类型都可以充当返回值类型
* 返回值类型: 返回的结果的数据类型(谁调用方法就把这个结果给调用者)
* return 数据;
*/
public static boolean userLogin() {
String trueName = "admin";
int truePass = 1234;
Scanner input = new Scanner(System.in);
System.out.println("请录入用户名");
String name = input.nextLine();
System.out.println("请录入密码");
int pass = input.nextInt();
//使用卫语句 (只要遇见return语句 当前方法结束了)
if (!trueName.equals(name) || truePass != pass) {
return false;
}
return true;
}
3.3有参无返回值
形式参数:方法中的其中一个部分
实际参数:调用方法的时候 传递的参数
public static void main(String[] args) {
//调用max方法
//对于有参的方法: 调用的时候 需要传参(实际参数 实参)
int num1 = 100, num2 = 200;
// a,b作为参数传递的时候? 传的是什么? 在整个java语言里面 参数传递: 值传递
// 基本数据类型: 数据传递
max(num1, num2);
System.out.println("main........num1:" + num1);//100
}
//形式参数: 规范 (任意类型都可以充当形参)
/**
* 求2个整数的最大值
*
* @param num1
* @param num2
*/
public static void max(int num1, int num2) {
int max = (num1 > num2) ? num1 : num2;
System.out.println("最大值:" + max);//200
num1 = 10;
System.out.println("max.......num1:" + num1);//10
}
//调用modifyArray
int[] num = {1, 2, 3};
//num作为实参传递: 传递的内存的地址值 引用类型(作为实参传递 传递的是内存的地址值) 排除String+包装类
modifyArray(num);
System.out.println("main....num:" + Arrays.toString(num));// [-100, 2, 3]
public static void modifyArray(int[] array) {
//1.预判: null
if (array == null) {
System.out.println("参数不能为null");
return;
}
//2.判断数组的长度
if (array.length == 0) {
System.out.println("[]");
return;
}
//3.遍历数组元素
for (int i : array) {
System.out.println("元素:" + i);
}
//修改第一个数据
array[0] = -100;
System.out.println("modifyArray...array:" + Arrays.toString(array));
}
String str = new String("hello");
// private final char value[]; 维护String的数据 final 常量(值不可变)
int num = 100;
modifyStr(str, num);
System.out.println("main........");
System.out.println(str);//hello
System.out.println(num);//100
public static void modifyStr(String str, int num) {
System.out.println(str);
System.out.println(num);
System.out.println("modifyStr。。。。修改之后。。。。");
str = new String("hello world");
num = 200;
System.out.println(str);
System.out.println(num);
}
3.4有参有返回值
public static void main(String[] args) {
// System.out.println(10 / 0);
//调用calculate
Scanner input = new Scanner(System.in);
System.out.println("请录入第一个数据:");
double num1 = input.nextDouble();
System.out.println("请录入第2个数据:");
double num2 = input.nextDouble();
System.out.println(calculate((int) num1, (int) num2, '/'));
}
/**
* 模拟计算器的功能: 算术运算 + - * / %
*
* @param num1
* @param num2
* @param operator 算术运算符
* @return 运算之后结果
*/
public static double calculate(int num1, int num2, char operator) {
double result = 0;
switch (operator) {
case '+':
result = num1 + num2;
break;
case '-':
result = num1 - num2;
break;
case '*':
result = num1 * num2;
break;
case '/':
//num2!=0
if (num2 == 0) {
System.out.println("除数不能为0");
//结束当前整个程序
System.exit(0);//java项目中有效
// web项目(运行服务器) throw
}
result = num1 / num2;
break;
case '%':
result = num1 % num2;
break;
}
return result;
}
public static String demo(int num, String str) {
return "";
}
方法重载
在一个文件中 出现了重名的方法。 Arrays.toString() Arrays.sort()
方法名必须相同
形参类型(数量)必须不同
不考虑返回值以及修饰符
public static long max(long num1, long num2) {
return Math.max(num1, num2);
}
final int max(long num1, int num2) {
return 100;
}
public static double max(double num1, double num2) {
return 0;
}
public static int max(int num1, int num2) {
return (num1 > num2) ? num1 : num2;
}