目录
一、方法
1、什么是方法
流程相对固定,可以反复使用,所有的方法都在类中
2、固定格式
修饰符 返回值类型 方法名(参数列表){
return 返回值;
}
主方法:
自定义方法:
3、调用
void:关键字,表示返回值类型,如果方法没有返回值,必须要写void
4、定义含有参数的方法
——提高方法重用性
方法定义三要素:
方法名:
形式参数:
返回值类型:
快捷键:/**+回车 会显示形参
实例
public class 方法 {
public static void main(String[] args) {
//调用参数,需要传递实际参数给形式参数赋值
printAD("华为手机","Mate40 RS ,保时捷设计,致敬时代!",11999,3);
printAD("苹果电脑","Apple MacBook Pro 16寸 ,高能,召唤高手!",18999,2);
printAD("小米手机","为发烧而生!",3999,5);
}
/**
* 打印广告信息的方法
* @param brand 品牌
* @param slogan 广告语
* @param price 价格
* @param count 次数
*/
public static void printAD(String brand,String slogan,double price,int count){
for (int i = 0; i < count; i++) {
System.out.println("品牌:"+brand+",广告语:"+slogan+",价格:"+price+"元");
}
}
}
#######最大值实例###########
累计求和实例
5、方法的返回值
方法没有返回值,返回值类型使用void方法有返回值
返回值类型是int,那么就需要在方法中使用return关键字返回一个int类型的整数
返回值类型是double,那么就需要在方法中使用return关键字返回一个double类型的小数
返回值类型是String,那么就需要在方法中使用return关键字返回一个String类型的字符串
返回值类型是boolean,那么就需要在方法中使用return关键字返回一个boolean类型的数
实例:统计数组中大于平均值的元素有几个
public class 统计数组中大于平均值的元素有几个 {
/*需求: 定义一个方法,获取数组中所有元素的平均值并返回
在main方法中,拿到数组的平均值
统计数组中大于平均值的元素有几个*/
public static void main(String[] args) {
// 在main方法中,拿到数组的平均值
int[] avg={12,13,14,15,16};
int ave=getAvg(avg);
// 统计数组中大于平均值的元素有几个
int sum=0;
for (int i = 0; i < avg.length; i++) {
if(avg[i]>ave){
sum++;
}
}
System.out.println(" 统计数组中大于平均值的元素有:"+sum+"个");
}
//定义一个方法,获取数组中所有元素的平均值并返回
public static int getAvg(int[] avg){
int sum=0;
for (int i = 0; i < avg.length; i++) {
sum+=avg[i];
}
return sum/avg.length;
}
}
6、方法的几种调用形式
- 直接调用:适用于“无返回值”的方法(常用),和“有返回值”的方法(不常用)
方法名(参数)
printArray(arr) ;
- 赋值调用:必须用于”有返回值“的方法
int temp = getMax(a, b);
int max = getMax(temp, c);
System.out.println("max:"+max);
- 打印调用:必须用于“有返回值“的方法
/**方法的几种调用形式
1.直接调用:
适用于没有返回值的方法,方法的返回值类型是void
方法名(参数);
public static void main(String[] args) {
int[] arr = {1, 2, 3, 4, 5};
printArray(arr);
}
public static void printArray(int[] arr){
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
2.输出调用: (了解)
适用于方法有返回值,并且返回值只使用一次
System.out.println(方法名(参数));
如果没有返回值则报错
public static void main(String[] args) {
int a= 10;
int b =20;
int c = 30;
System.out.println(getMax(getMax(a,b),c));
}
public static int getMax(int a,int b){
return a>b?a:b;
}
3.赋值调用:
适用于方法有返回值,而且返回值多次使用
方法的返回值类型 变量名 = 方法名(参数);
System.out.println(变量名);
*/
二、方法重载
——需求:定义各种求和的方法
1、定义
在一个类中,出现了方法名相同,但是参数列表不同的方法,叫方法重载
好处:
- 定义方便: 不用起很多的方法名:
- 调用方便: 像调用一个方法;
2、方法重载细节
- 参数的个数不同
- 参数的数据类型不同
- 参数数据类型的顺序不同
注意事项
- 方法重载,只和参数类型有关,和方法的返回值类型和方法参数的名字没有关系
3、基本类型参数和引用类型参数
基本类型:四类八种
引用数据类型:数组,Random,Scanner及其它“类”类型
当它们做方法的参数时,其运行机制稍有不同
- 基本数据类型作为参数传递:形参改变不影响实参
- 引用数据类型作为参数传递:形参改变影响实参 引用数据类型作为参数传递:传递的是对象的地址值
结果:两个引用变量,指向堆内存中同
一个对象一个变量修改了对象的值,另一个变量在访问,就是修改后的
案例:
#############查找数组中指定的元素#########
#######双十一销售统计#########
查找数组中指定的元素
int[] sales = {8799,8001,9210,9800,10246,10232};
需求:查找数组中指定的元素
找到了返回元素的索引 10246 4
找不到返回-1 8888
*/
public static void main(String[] args) {
int[] sales = {8799,8001,9210,9800,10246,10232,9800};
//使用键盘输入,获取用户要查找的数字
Scanner sc = new Scanner(System.in);
System.out.println("请输入你要查找的数字:");
int num = sc.nextInt();
int i = find(sales, num);
System.out.println("您查找的数字"+num+",在数组中的索引位置为:"+i);
int i2 = find2(sales, num);
System.out.println("您查找的数字"+num+",在数组中的索引位置为:"+i2);
}
/*
定义一个方法:查找数组中指定的元素
三要素:
方法名: find
参数列表:int[] arr,int num
返回值类型:int
*/
public static int find2(int[] arr,int num){
//定义一个int类型的变量,初始值为-1,记录数字的索引
int index = -1;
//遍历数组,获取每一个元素
for (int i = 0; i < arr.length; i++) {
//使用遍历得到的元素和要查找的数进行比较
if(arr[i]==num){
//找到了,给变量index,从新赋值
index=i;
//break;//结束for循环
}
}
//返回index
return index;
}
/*
定义一个方法:查找数组中指定的元素
三要素:
方法名: find
参数列表:int[] arr,int num
返回值类型:int
*/
public static int find(int[] arr,int num){
//遍历数组,获取每一个元素
for (int i = 0; i < arr.length; i++) {
//使用遍历得到的元素和要查找的数进行比较
if(arr[i]==num){
//找到了,返回元素对应的索引
return i;
}
}
//没找到对应的数字,返回-1
return -1;
}
}