Day06数组加强和方法

  1. 数组加强练习【掌握】

数组在实际工作及很多底层都有使用到,因此做一个加强练习。

完成以下关于数组相关练习题

1. 统计一个字符在字符数组中第一次出现的下标(直接输出)

2. 统计一个字符在字符数组中出现的次数(直接输出)

3. 已知这样的整型数组 int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 22}; 计算出其中的奇数和以及偶数和

4. 现在有数组 double[] scores = {11, 34, 76, 77, 88, 99, 58, 97, 56};统计并打印出每一个阶段的学生人数(分段方式:0-60; 60-80;80-100)

5. 翻转传入数组中的元素

例如有这样的数组

调用完上面的方法之后,arr中的内容是这样的{'育', '教', '码', '代', '源'};

 

6. 使用嵌套循环打印下面图形

 

7. 移除数组int[] arr = {1, 2, 3, 4, 5, 1, 9, 4, 12, 67, 1};中1这个元素,返回一个新的数组 (不带有1)。即新数组为int[] arr2 = {2, 3, 4, 5, 9, 4, 12, 67};

  1. 方法

3.1 方法引入【了解】

先来看看,我们之前写的代码:

public class _03Method {

public static void main(String[] args) {

// 需求1:求1-10的和

int sum = 0;

for (int i = 1; i <= 10; i++) {

sum += i;

}

System.out.println("1~10的和:" + sum);

// 需求2:求1-100的和

int sum2 = 0;

for (int i = 1; i <= 100; i++) {

sum2 += i;

}

System.out.println("1~100的和:" + sum2);

// 需求3:求1-100010的和

int sum3 = 0;

for (int i = 1; i <= 100010; i++) {

sum3 += i;

}

System.out.println("1~100010的和:" + sum3);

}

}

大家可以看到,按照之前的做法,求1-n的和,n不同我们就需要重复写类似的代码,这会导致我们写代码重复,开发效率底下,代码可读性也很差,那么有没有什么方式可以解决这种问题? 用方法解决

先看效果

public class _03Method {

public static void main(String[] args) {

// 需求1:求1-10的和

_03Method.getSum(10);// 在main方法中调用下面的getSum()方法

// 需求2:求1-100的和

_03Method.getSum(100);// 在main方法中调用下面的getSum()方法

// 需求3:求1-1000的和

_03Method.getSum(1000);// 在main方法中调用下面的getSum()方法

}

/**

 * 求1~n的和

 * 复制main方法到当前类中,跟main方法平级的地方

 * @param 

 */

public static void getSum(int n) {

int sum = 0;

for (int i = 1; i <= n; i++) {

sum += i;

}

System.out.println("和:" + sum);

}

}

3.2 方法概念和作用【了解】

3.2.1 概念:

方法,也叫函数,但是一般在java中都叫方法,可以看成是一个可以完成独立功能的代码块,可以重复使用,每次使用都是独立的!存在于类的结构体。

3.2.2 作用:

方法可以复用代码,提高效率和程序的可读性。

3.3 方法结构组成【理解】

方法相关术语:

1 修饰符:

作用,决定方法的调用方式。例如,是用类名调用,还是用对象名调用

2 返回值类型:就是返回值的数据类型   最近今天会直接告诉大家,需要不需要返回值

作用:决定在调用方法的时候,是否可以用一个变量接收方法的结果值。

如果返回值类型是void,表示没有任何返回值,不能用变量接收结果值。

返回值:就是处理完业务后的结果反馈。通过关键字 return 返回数据

返回值类型分类:

基本类型:byte/short/int/long/float/double/boolean/char

    引用类型:类、抽象类、接口、枚举、数组

void : 表示没有任何返回值

3 方法名:

作用:决定调用哪一个方法(就是用来找到要使用的方法的)

命名原则:见名知意,小驼峰,不能以关键字命名。

4 形参列表: 

作用,就是用了接收调用方法的时候,传入的实际参数(值/变量)的

5 方法体:

  就是根据实际需求,处理数据的代码

 

6 方法签名: 同一个类中,只能有一个独一无二的方法签名

方法名+形参列表(参数的顺序、类型和个数),跟形参名字无关

7 形参列表3要素(方法小括号中的):参数的顺序、类型和个数

 

3.4 方法定义【重点】

 

需求:求2个int类型变量的和,并且返回和

1 方法的声明(定义)步骤:(最重要)

1. 复制main方法到当前类中,跟main方法平级的地方

2. 根据需求分析方法的四要素:

1. 返回值类型:

2. 方法名:

3. 形参列表:

4. 方法体:

3. 根据实际需求,修改方法的四要素

案例代码1:

public class _04Method {

/**

* 需求:求2个int类型变量的和,并且返回和

  * 方法定义步骤:

  * 1. 复制main方法到当前类中,跟main方法平级的地方

2. 根据需求分析方法的四要素:

1. 返回值类型:int 

2. 方法名:getSum

3. 形参列表:int a, int b

4. 方法体:

将2个参数a和b相加,并且通过关键字return返回

3. 根据实际需求,修改方法的四要素

* @param a int参数

* @param b int参数

*/

public static int getSum(int a, int b) {

/* // 将2个参数a和b相加

int sum = a + b;

// 通过关键字return返回sum

return sum; // return是优先级最低的运算,会等所有return右边的计算结束后执行返回

将上面两步合二为一

*/

return a + b;// return是优先级最低的运算,会等所有return右边a + b计算结束后执行返回和

}
}

3.5 方法调用【重点】

方法的调用语法重点

看调用方法是否有static修饰:

1 有static修饰,用:当前类名.方法名(实参(变量/值));

2 没有static修饰,用:当前类的对象名.方法名(实参(变量/值)); //这几天都不用

特殊情况:

如果调用方(目前就是指main方法)和被调用方都在同一个类中,且都有或者都没有static修饰,可以简写为:方法名(实参(变量/值));

注意:

1. 调用方法的时候,传入的参数数量、数据类型、顺序必须和 声明方法的一致

2. static方法中不能直接调用非static修饰的方法,但是非static方法中可以调用static修饰的方法

代码如下:【main方法代码跟上面定义的getSum(int a, int b)方法在同一个类中】

public static void main(String[] args) {

// 需求:求2个int类型变量的和,并且返回和

// 在main方法中调用下面定义好的方法:getSum(int a, int b)

// 求1和2的和

/*

 * 2 方法的调用:(最重要)

看要调用方法是否有static修饰:

1 有static修饰,用:当前类名.方法名(实参(变量/值));

2 没有static修饰,用:当前类的对象名.方法名(实参(变量/值)); // 这几天都不用

 */

/*

 *  因为当前getSum方法有static修饰,所以,用当前类_04Method调用。

 *  并且因为该方法返回值类型int,所以,可以用一个int变量sum获取方法计算结果。

 */

int sum = _04Method.getSum(1, 2);

// 打印一下sum

System.out.println(sum);

// 求3和5的和

int sum2 = _04Method.getSum(3, 5);

// 打印一下sum2

System.out.println(sum2);

// 求6和9的和

/*

 * 方法调用特殊情况:

 如果调用方(目前就是指main方法)和被调用方都在同一个类中,且都有或者都没有static修饰,可以简写为:

 方法名(实参(变量/值));

 */

int sum3 = getSum(6, 9);

// 打印一下sum3

System.out.println(sum3);

}

需求:输入:泽泽老师,调用方法:welcome

案例2代码:

public class _05Method {

public static void main(String[] args) {

// 需求:设计一个方法,请输入一个姓名name,输出一句话,格式如下:name,您好,欢迎光临*马会所!祝你玩的愉快!!!

// 在main方法中调用下面定义好的方法:

// 需求:输入:泽泽老师,调用方法:welcome

/*

 * 2 方法的调用:(最重要)

 看要调用方法是否有static修饰:

 1 有static修饰,用:当前类名.方法名(实参(变量/值));

 2 没有static修饰,用:当前类的对象名.方法名(实参(变量/值)); // 这几天都不用

 */

/*

 *  因为当前welcome方法有static修饰,所以,用当前类_0Method调用。

 *  并且因为该方法没有任何返回值,所以,不能用变量保存方法计算的结果,也不能直接打印方法结构。

 */

_05Method.welcome("泽泽老师");

// 输入:菲菲老师,调用方法:welcome

_05Method.welcome("菲菲老师");

// 输入:熊熊波波老师,调用方法:welcome

welcome("熊熊波波老师");// 当前方法welcome和main方法都在同一个类_05Method中,都有static修饰,可以简写为:方法名(...)调用

}

/**

* 需求:设计一个方法,请输入一个姓名name,输出一句话,格式如下:name,您好,欢迎光临*马会所!祝你玩的愉快!!!

* 1. 方法的声明(定义):(最重要)

    1. 复制main方法到当前类中,跟main方法平级的地方

 2. 根据需求分析方法的四要素:

1. 返回值类型:void

2. 方法名:welcome

3. 形参列表:String name

4. 方法体:将参数name和字符串",您好,欢迎光临*马会所!祝你玩的愉快!!!"拼接,打印

3. 根据实际需求,修改方法的四要素

*/

public static void welcome(String name) {

System.out.println(name + ",您好,欢迎光临*马会所!祝你玩的愉快!!!");

}

}

3.6 方法重载overload

3.6.1. 概念:在同一个类中,方法名相同,形参列表不同,就是方法重载

3.6.2. 作用:

1. 可以减少命名冲突

2. 可以减少程序员记忆成本,方便解决了一类问题

3.6.3. 使用:

声明方法的时候,写不同的形参即可。

调用方法的时候,程序会根据参数数量、类型、顺序自动匹配调用的

代码案例:

public class _06MethodOverload {

public static void main(String[] args) {

// 需求:求2个int类型变量的和,并且返回和

int sum = getSum(1, 2);

System.out.println(sum);

// 需求:求3个int类型变量的和,并且返回和

int sum2 = getSum(1, 2, 3);

System.out.println(sum2);

// 需求:求4个int类型变量的和,并且返回和

int sum3 = getSum(1, 2, 3, 4);

System.out.println(sum3);

}

/**

* 该方法和下面两个方法是重载方法

* 求2个int类型变量的和,并且返回和

* @param a

* @param b

* @return

*/

public static int getSum(int a, int b) {

System.out.println("2个参数");

return a + b;

}

/**

 * 该方法和另外两个方法是重载方法

 * 求3个int类型变量的和,并且返回和

 * @param a

 * @param b

 * @param c

 * @return

 */

public static int getSum(int a, int b, int c) {

System.out.println("3个参数.....");

return a + b + c;

}

/**

 * 该方法和上面两个方法是重载方法

 * 求4个int类型变量的和,并且返回和

 * @param a

 * @param b

 * @param c

 * @param d

 * @return

 */

public static int getSum(int a, int b, int c, int d) {

System.out.println("4个参数---------------");

return a + b + c + d;

}

}

3.7 方法注意事项

1 方法调用的时候,实参(变量/值) 必须和 形参完全一致(参数类型,类型顺序,参数个数)

2 一个类中,只能有一个独一无二的方法签名

3 返回值类型是void,不能用变量接受,不能放在打印语句中

4 返回值不是void,必须return一个数据,并且数据类型和返回值类型完全一致

5  return的数据,如果在if或者循环语句中,必须保证在条件语句和循环语句不成立的情况下,也有数据的返回

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值