Java 复习整理day04
在我们的日常生活中,方法可以理解为要做某件事情,
而采取的解决办法。
如:小明同学在路边准备坐车来学校学习。这就面临
着一件事情(坐车到学校这件事情)需要解决,解决办法
呢?可采用坐公交车或坐出租车的方式来学校,那么,这
种解决某件事情的办法,我们就称为方法。
在java中,方法就是用来完成解决某件事情或实现某
个功能的办法。
方法实现的过程中,会包含很多条语句用于完成某些
有意义的功能——通常是处理文本,控制输入或计算数值。
我们可以通过在程序代码中引用方法名称和所需的参
数,实现在该程序中执行(或称调用)该方法。方法,一
般都有一个返回值,用来作为事情的处理结果。
- 1 /*
- 2 方法的定义格式
- 3 修饰符 返回值类型 方法的名字 (参数列表...){
- 4 方法的功能主体
- 5 循环,判断,变量,比较,运算
- 6 return ;
- 7 }
- 8
- 9 修饰符: 固定写法 public static
- 10 返回值类型: 方法在运算后,结果的数据类型
- 11 方法名: 自定义名字,满足标识符规范, 方法名字首字母小写,后面每个单词首字母大写
- 12 参数列表: 方法的运算过程中,是否有未知的数据, 如果有未知的数据,定义在参数列表上 (定义变量)
- 13 return: 方法的返回, 将计算的结果返回. 结束方法
- 14 */
- 15 public class MethodDemo{
- 16
- 17 public static void main(String[] args){
- 18 //调用方法, 方法执行起来
- 19 // 在方法main中,调用方法 getArea
- 20
- 21 int area = getArea(5,6);
- 22 System.out.println("面积是: "+area);
- 23
- 24 }
- 25 /*
- 26 要求: 计算一个长方形的面积
- 27 定义方法解决这个要求
- 28 分析方法定义过程:
- 29 1. 明确方法计算后的结果的数据类型 int 定义格式对应的就是返回值类型
- 30 2. 方法计算过程中,有没有未知的数据, 宽和长, 未知数据的数据类型 int
- 31 未知数的变量,定义在方法的小括号内
- 32 */
- 33 public static int getArea(int w, int h){
- 34 //实现方法的功能主体
- 35 //int area = w * h;
- 36 return w * h;
- 37 }
- 38 }
- 1 package com.it.demo03_method;
- 2
- 3 /*
- 4 案例: 演示方法的定义格式.
- 5
- 6 方法简介:
- 7 概述:
- 8 就是把一些具有独立功能的代码封装起来, 使其成为一个具有特殊功能的代码集, 这个代码集就叫: 方法.
- 9 目的:
- 10 提高代码的复用性. //我们把重复做事儿抽取成方法, 以后需要用到该逻辑的时候, 不需要重新编写代码了, 直接调用方法即可.
- 11 格式:
- 12 修饰符 返回值的数据类型 方法名(数据类型 参数名1, 数据类型 参数名2) {
- 13 //方法体
- 14 return 具体的返回值;
- 15 }
- 16 格式详解:
- 17 修饰符: 目前先理解为就是 public static, 面向对象详解.
- 18 返回值的数据类型: 指的是方法调用完毕后, 返回给我们一个什么类型的值.
- 19 方法名: 遵循"小驼峰命名法", 而且要符合命名规则和规范, 是帮我们调用指定方法的.
- 20 (数据类型 参数名1): 形式参数, 形容调用方法的时候, 需要传入什么类型的值, 注意: 形参没有具体指.
- 21 方法体: 具体的逻辑代码.
- 22 return 具体的返回值: 方法指定完毕后, 要返回的具体的结果.
- 23 注意事项:
- 24 1. 方法与方法之间是平级关系, 不能嵌套定义.
- 25 2. 方法只有被调用, 才会执行.
- 26 3. 定义方法的时候, 参数列表中的参数叫: 形式参数(简称: 形参), 形容调用方法需要传入什么类型的值.
- 27 4. 调用方法的时候, 参数列表中传入的具体的值叫: 实际参数(实参), 指的是具体参与操作的数据.
- 28 5. 如果方法没有明确的返回值, 则返回值的数据类型必须写成 void
- 29 6. 如果方法没有明确的返回值, 则return语句可以省略不写.
- 30 7. 方法的功能越单一越好.
- 31 学习"方法"这个技术点的小技巧:
- 32 定义方法的三个明确:
- 33 1. 明确方法名.
- 34 2. 明确参数列表.
- 35 3. 明确返回值的数据类型.
- 36
- 37 调用方法时的三个步骤:
- 38 1. 写方法名, 调用谁就写谁, 注意大小写, 不要写错了.
- 39 2. 传参. 方法要什么类型的数据, 我们就传入什么类型的值.
- 40 3. 接收返回值. 方法返回什么类型的数据, 我们就用什么类型的变量来接收.
- 41 */
- 42 public class Demo01 {
- 43 //main方法是程序的主入口, 所有的代码都是从这里开始执行的.
- 44 public static void main(String[] args) {
- 45 //调用printHello()方法
- 46 printHello();
- 47 }
- 48
- 49 //需求: 定义printHello()方法, 用来打印"Hello World!"字符串.
- 50 /*
- 51 定义方法的三个明确:
- 52 1. 明确方法名. printHello()
- 53 2. 明确参数列表. 空参
- 54 3. 明确返回值的数据类型. 无具体返回值, 即: void类型
- 55 */
- 56 public static void printHello() {
- 57 //方法体
- 58 System.out.println("Hello World! 1");
- 59 System.out.println("Hello World! 2");
- 60 System.out.println("Hello World! 3");
- 61 System.out.println("Hello World! 4");
- 62 }
- 63 }
- 1 /*
- 2 方法的定义练习
- 3 */
- 4 import java.util.Scanner;
- 5 public class MethodDemo_1{
- 6 public static void main(String[] args){
- 7 //printRect();
- 8 //int number = getNumber();
- 9 //System.out.println(getNumber());
- 10 //printRect2(3,5);
- 11 double avg = getAvg(2,2,3);
- 12 System.out.println(avg);
- 13 }
- 14
- 15 /*
- 16 定义有返回值有参数方法,如求三个数的平均值
- 17 明确方法计算后的数据类型, 返回值类型 double
- 18 明确方法未知数, 三个未知的整数
- 19 */
- 20 public static double getAvg(double a, double b,double c){
- 21 return (a+b+c)/3;
- 22 }
- 23
- 24 /*
- 25 定义无返回值有参数方法,如打印指定M行,每行N个*号的矩形
- 26 明确方法计算后结果,控制台输出图形,没有返回值的
- 27 方法中有没有未知数,图形行数,和列数,是未知的, 数据类型整数int
- 28 */
- 29 public static void printRect2(int m,int n){
- 30 for(int i = 0 ; i < m ; i++){
- 31 for(int j = 0 ; j < n ; j++){
- 32 System.out.print("*");
- 33 }
- 34 System.out.println();
- 35 }
- 36 }
- 37
- 38 /*
- 39 定义有返回值无参数方法,如键盘录入得到一个整数
- 40 明确方法计算后结果的数据类型 int
- 41 明确有没有未知数,没
- 42 */
- 43 public static int getNumber(){
- 44 Scanner sc = new Scanner(System.in);
- 45 //int number = sc.nextInt();
- 46 return sc.nextInt();
- 47 }
- 48
- 49 /*
- 50 定义无返回值无参数方法,如打印3行,每行3个*号的矩形
- 51 为什么没有返回值:
- 52 打印矩形 ,输出效果,不需要将结果返回
- 53 明确未知数: 不需要未知数
- 54 */
- 55 public static void printRect(){
- 56 for(int i = 0 ; i < 3 ; i++){
- 57 for(int j = 0 ; j < 3 ;j++){
- 58 System.out.print("*");
- 59 }
- 60 System.out.println();
- 61 }
- 62 }
- 63 }
- 1 /*
- 2 方法定义和使用的注意事项
- 3 1. 方法不能定义在另一个方法的里面
- 4 2. 写错方法名字
- 5 3. 写错了参数列表
- 6 4. 方法返回值是void,方法中可以省略return 不写
- 7 return 下面不能有代码
- 8 5. 方法返回值类型,和return 后面数据类型必须匹配
- 9 6. 方法重复定义问题
- 10 7. 调用方法的时候,返回值是void, 不能写在输出语句中
- 11 */
- 12 public class MethodDemo_2{
- 13 public static void main(String[] args){
- 14 int i = print();
- 15 System.out.println( print() );
- 16 }
- 17 public static int print(){
- 18
- 19 return 1;
- 20 }
- 21
- 22 }
- 1 /*
- 2 方法,调用中的参数传递问题
- 3 1. 方法参数是基本数据类型
- 4 2. 方法参数是引用类型
- 5 传递的是内存地址!!!
- 6 */
- 7 public class MethodDemo_3{
- 8 public static void main(String[] args){
- 9 /*int a = 1;
- 10 int b = 2;
- 11 change(a,b);
- 12 System.out.println(a); //1
- 13 System.out.println(b); // 2
- 14 */
- 15 int[] arr = {1,2,3,4};
- 16 System.out.println(arr[2]); // 3
- 17 change(arr);
- 18 System.out.println(arr[2]); // 100
- 19 }
- 20
- 21 public static void change(int[] arr){
- 22 arr[2] = 100;
- 23 }
- 24
- 25
- 26 public static void change(int a,int b){
- 27 a = a+b;
- 28 b = b+a;
- 29 }
- 30 }
- 1 /*
- 2 方法的重载特性 (overload)
- 3 在同一个类中,允许出现同名的方法,只要方法的参数列表不同即可,这样方法就是重载
- 4 参数列表不同: 参数的个数,数据类型,顺序
- 5 */
- 6 public class MethodOverLoadDemo{
- 7 public static void main(String[] args){
- 8 //对于重载的调用,根据参数传递进行区分
- 9 //System.out.println();
- 10 double sum = getSum(2.3,3.5);
- 11 System.out.println(sum);
- 12 }
- 13 /*
- 14 对参数求和,利用方法的重载特性
- 15 */
- 16 public static int getSum(int a,int b){
- 17 System.out.println("两个int参数");
- 18 return a+b;
- 19 }
- 20 public static int getSum(int a,int b,int c){
- 21 System.out.println("三个int参数");
- 22 return a+b+c;
- 23 }
- 24 public static double getSum(double a,double b){
- 25 System.out.println("两个double参数");
- 26 return a+b;
- 27 }
- 28 /*
- 29 定义方法,对参数求和
- 30 参数,没规定几个,数据类型
- 31
- 32 public static int getSum(int a ,int b){
- 33 return a+b;
- 34 }
- 35
- 36 public static double getSumDouble(double a,double b){
- 37 return a+b;
- 38 }
- 39 public static int getSum3(int a,int b, int c){
- 40 return a+b+c;
- 41 }*/
- 42 }
- 1 /*
- 2 方法重载的注意事项
- 3 1. 参数列表必须不同
- 4 2. 重载和参数变量名无关
- 5 3. 重载和返回值类型无关
- 6 4. 重载和修饰符无关
- 7 技巧: 重载看方法名和参数列表
- 8 */
- 9 public class MethodOverLoadDemo_1{
- 10 //method(1l,1)
- 11
- 12
- 13 public static void method(int a,int b){
- 14
- 15 }
- 16 public static void method(double a,int b){
- 17
- 18 }
- 19
- 20 // void method(int a,int b){
- 21 //return 1;
- 22 //}
- 23
- 24 }
- 1 /*
- 2 实现商品的库存管理
- 3 功能:
- 4 1. 展示用户选择功能清单
- 5 2. 根据选择的功能编号,进行不同的操作
- 6 A. 展示所有库存
- 7 B. 修改库存数量
- 8
- 9 分析:
- 10 1. 展示用户清单:
- 11 输出语句, 用户输入, 选择功能序号
- 12 2. 根据选择,调用不同的方法
- 13 switch语句
- 14 case 1 2 3
- 15
- 16 A 展示库存
- 17 将存储商品的数组,遍历
- 18 B 修改库存
- 19
- 20 修改所有的库存数量
- 21 */
- 22 import java.util.Scanner;
- 23 public class Shopp{
- 24 public static void main(String[] args){
- 25 //使用数组,保存商品的信息
- 26 //品名,尺寸,价格,库存数, 定义5个数组
- 27 String[] brand = {"MacBookAir","ThinkpadT450"};
- 28 double[] size = {13.3,15.6};
- 29 double[] price = {9998.97,6789.56};
- 30 int[] count = {0,0};
- 31 while(true){
- 32 int choose = chooseFunction();
- 33 switch(choose){
- 34 case 1:
- 35 //调用查看库存清单方法
- 36 printStore(brand,size,price,count);
- 37 break;
- 38
- 39 case 2:
- 40 //调用修改库存的方法
- 41 update(brand,count);
- 42 break;
- 43
- 44 case 3:
- 45 return ;
- 46
- 47
- 48 default:
- 49 System.out.println("没有这个功能");
- 50 break;
- 51 }
- 52 }
- 53 }
- 54 /*
- 55 定义方法,修改所有商品的库存
- 56 用户输入1个,修改1个
- 57 返回值,没有
- 58 参数, 库存数的数组, 品名数组
- 59 */
- 60 public static void update(String[] brand, int[] count){
- 61 //遍历数组,遍历到一个,修改一个
- 62 //接受键盘输入
- 63 Scanner sc = new Scanner(System.in);
- 64 //遍历数组
- 65 for(int i = 0; i < brand.length ; i++){
- 66 System.out.println("请输入"+brand[i]+"的库存数");
- 67 //键盘输入,录入库存, 存储到库存的数组中
- 68 int newCount = sc.nextInt();
- 69 count[i] = newCount;
- 70 }
- 71 //int chooseNumber = sc.nextInt();
- 72 }
- 73
- 74 /*
- 75 定义方法,展示所有的库存清单,遍历
- 76 返回值,没有
- 77 参数, 数组
- 78 */
- 79 public static void printStore(String[] brand,double[] size,double[] price,int[] count){
- 80 System.out.println("----------商场库存清单----------");
- 81 System.out.println("品牌型号 尺寸 价格 库存数");
- 82 //定义变量,计算总库存数,和总价格
- 83 int totalCount = 0;
- 84 int totalMoney = 0;
- 85 //遍历数组,将数组中所有的商品信息打印出来
- 86 for(int i = 0 ; i < brand.length ; i++){
- 87 System.out.println(brand[i]+" "+size[i]+" "+price[i]+" "+count[i]);
- 88 totalCount += count[i];
- 89 totalMoney += count[i]*price[i];
- 90 }
- 91 System.out.println("总库存数: "+totalCount);
- 92 System.out.println("商品库存总金额: "+totalMoney);
- 93 }
- 94
- 95 /*
- 96 定义方法,实现用户的选择功能,功能的需要返回来
- 97 返回值, int
- 98 参数, 没有
- 99 */
- 100 public static int chooseFunction(){
- 101 System.out.println("-------------库存管理------------");
- 102 System.out.println("1.查看库存清单");
- 103 System.out.println("2.修改商品库存数量");
- 104 System.out.println("3.退出");
- 105 System.out.println("请输入要执行的操作序号:");
- 106 //接受键盘输入
- 107 Scanner sc = new Scanner(System.in);
- 108 int chooseNumber = sc.nextInt();
- 109 return chooseNumber;
- 110 }
- 111 }
- 1 /*
- 2 实现随机点名器
- 3 1. 存储所有学生姓名
- 4 2. 预览所有学生姓名,遍历数组
- 5 3. 随机数作为索引,到数组中找元素
- 6
- 7 将功能独立出来, 作成方法,调用方法即可
- 8
- 9 定义三个功能, 用到同一个姓名数据
- 10 姓名存储到数组中,三个方法,使用一个数组中的数据, 方法传递参数
- 11 */
- 12 import java.util.Random;
- 13 public class CallName{
- 14 public static void main(String[] args){
- 15 //定义数组,存储学生姓名
- 16 String[] names = new String[8];
- 17 //调用添加姓名方法
- 18 addStudent(names);
- 19 //调用遍历数组方法
- 20 printStudentName(names);
- 21 //调用随机姓名的方法
- 22 String name = randomStudentName(names);
- 23 System.out.println(name);
- 24 }
- 25 /*
- 26 定义方法,随机数,做索引,数组中找到学生姓名
- 27 返回值? 学生姓名
- 28 参数? 数组
- 29 */
- 30 public static String randomStudentName(String[] names){
- 31 Random ran = new Random();
- 32 int index = ran.nextInt(names.length);
- 33 return names[index];
- 34 }
- 35
- 36 /*
- 37 定义方法,遍历数组
- 38 返回值? 没有
- 39 参数? 数组
- 40 */
- 41 public static void printStudentName(String[] names){
- 42 for(int i = 0 ; i < names.length ;i++){
- 43 System.out.println(names[i]);
- 44 }
- 45 }
- 46
- 47 /*
- 48 定义方法,实现向数组中添加学生姓名
- 49 返回值? 没有,
- 50 参数? 参数就是数组
- 51 */
- 52 public static void addStudent(String[] names){
- 53 names[0] = "张三";
- 54 names[1] = "李四";
- 55 names[2] = "王五";
- 56 names[3] = "李蕾";
- 57 names[4] = "韩梅梅";
- 58 names[5] = "小名";
- 59 names[6] = "老王";
- 60 names[7] = "小华";
- 61 }
- 62 }
- 1 package com.it.demo03_method;
- 2
- 3 /*
- 4 案例: 演示有参无返回值的方法.
- 5
- 6 需求:
- 7 1.定义方法isEvenNumber(), 该方法接收一个int类型的整数num.
- 8 2.判断num是奇数还是偶数, 并打印结果.
- 9
- 10 涉及到的关于方法的小技巧:
- 11 定义方法时的三个明确:
- 12 1. 明确方法名.
- 13 2. 明确参数列表.
- 14 3. 明确返回值的数据类型.
- 15
- 16 调用方法时的三个步骤:
- 17 1. 写方法名.
- 18 2. 传参. 方法要什么类型的数据, 我们就传入什么类型的值.
- 19 3. 接收. 方法返回什么值, 我们就用对应的数据类型来接收.
- 20 */
- 21 public class Demo02 {
- 22 public static void main(String[] args) {
- 23 //调用isEvenNumber()方法, 传入变量.
- 24 int a = 10;
- 25 isEvenNumber(a); //实参, 实际参与操作的数据
- 26 System.out.println("-------------------");
- 27 //调用isEvenNumber()方法, 传入常量.
- 28 isEvenNumber(21); //实参, 实际参与操作的数据
- 29 }
- 30
- 31 /*
- 32 需求: 定义方法isEvenNumber(), 判断指定的数字是否是偶数, 并打印.
- 33
- 34 定义方法时的三个明确:
- 35 1. 明确方法名. isEvenNumber()
- 36 2. 明确参数列表. int num
- 37 3. 明确返回值的数据类型. void
- 38 */
- 39 public static void isEvenNumber(int num) { //int num = ? //形参: 形容调用方法, 需要传入什么类型的参数.
- 40 //判断指定的数字是否是偶数, 并打印.
- 41 if (num % 2 == 0)
- 42 System.out.println(num + "是偶数");
- 43 else
- 44 System.out.println(num + "是奇数");
- 45 }
- 46 }
- 1 package com.it.demo03_method;
- 2
- 3 /*
- 4 案例: 演示无参有返回值的方法.
- 5
- 6 需求:
- 7 1.定义方法getSum(), 该方法内部有两个int类型的整数.
- 8 2.获取上述两个整数的和, 并返回.
- 9 3.在main方法中调用getSum()方法, 并打印结果.
- 10 */
- 11 public class Demo03 {
- 12 public static void main(String[] args) {
- 13 /*
- 14 需求: 调用getSum()方法
- 15 调用方法时的三个步骤:
- 16 1. 写方法名, 调用谁就写谁, 注意大小写, 不要写错了.
- 17 2. 传参. 方法要什么类型的数据, 我们就传入什么类型的值.
- 18 3. 接收返回值. 方法返回什么类型的数据, 我们就用什么类型的变量来接收.
- 19 */
- 20 //方式一: 赋值调用, 即: 如果方法有返回值, 我们用变量接收, 然后在操作, 这种情况就叫: 赋值调用. 实际开发常用.
- 21 int sum = getSum();
- 22 //int sum = 30;
- 23 System.out.println(sum);
- 24 System.out.println("---------------------");
- 25
- 26 //方式二: 输出调用, 因为方法会直接返回一个值, 所以我们可以采用输出语句直接打印. 一般在课堂使用, 为了方便我们查看方法的执行结果.
- 27 System.out.println(getSum());
- 28 System.out.println("---------------------");
- 29
- 30 //方式三: 直接调用, 无意义, 一般不用.
- 31 getSum();
- 32 //30;
- 33
- 34 }
- 35
- 36 /*
- 37 需求: 定义方法getSum(), 用来获取两个整数的和, 并返回.
- 38 定义方法的三个明确:
- 39 1. 明确方法名. getSum()
- 40 2. 明确参数列表. 空参
- 41 3. 明确返回值的数据类型. int类型
- 42 */
- 43 public static int getSum() {
- 44 //该方法内部有两个int类型的整数, 获取上述两个整数的和, 并返回.
- 45 int a = 10, b = 20;
- 46 int sum = a + b;
- 47 //返回变量sum的值
- 48 return sum;
- 49 }
- 50 }
- 1 package com.it.demo03_method;
- 2
- 3 /*
- 4 案例: 无参有返回值的方法演示.
- 5
- 6 需求:
- 7 1.定义方法isEvenNumber(), 该方法内部有一个整数num.
- 8 2.判断num是奇数还是偶数, 并返回结果.
- 9 3.在main方法中调用isEvenNumber()方法, 并打印结果.
- 10
- 11 涉及到的关于方法的小技巧:
- 12 定义方法时的三个明确:
- 13 1. 明确方法名.
- 14 2. 明确参数列表.
- 15 3. 明确返回值的数据类型.
- 16
- 17 调用方法时的三个步骤:
- 18 1. 写方法名.
- 19 2. 传参. 方法要什么类型的数据, 我们就传入什么类型的值.
- 20 3. 接收. 方法返回什么值, 我们就用对应的数据类型来接收.
- 21 */
- 22 public class Demo04 {
- 23 public static void main(String[] args) {
- 24 //调用方法, 输出调用.
- 25 System.out.println(isEvenNumber());
- 26 System.out.println("----------------------------");
- 27
- 28 //调用方法, 赋值调用.
- 29 boolean flag = isEvenNumber();
- 30 System.out.println(flag);
- 31 }
- 32
- 33 //需求: 定义方法isEvenNumber(), 该方法内部有一个整数num, 判断num是奇数还是偶数, 并返回结果.
- 34 //明确方法名: isEvenNumber(), 明确参数列表: 空参, 明确返回值的数据类型: boolean
- 35
- 36 /**
- 37 * 该方法是用来判读数字是奇数还是偶数的.
- 38 * @return true: 偶数, false: 奇数
- 39 */
- 40 public static boolean isEvenNumber() {
- 41 int num = 10;
- 42 //判断num是奇数还是偶数, 并返回结果.
- 43 /* if(num % 2 == 0)
- 44 return true;
- 45 else
- 46 return false;*/
- 47
- 48 /*boolean flag = num % 2 == 0 ? true : false;
- 49 return flag;*/
- 50
- 51 /*boolean flag = num % 2 == 0;
- 52 return flag;*/
- 53
- 54 return num % 2 == 0;
- 55 }
- 56 }
- 1 package com.it.demo04_overload;
- 2
- 3 /*
- 4 案例: 方法重载入门
- 5
- 6 方法重载概述:
- 7 同一个类中, 出现方法名相同, 但是参数列表不同的 两个或以上的方法时, 称为方法重载.
- 8 方法重载与返回值的数据类型无关.
- 9
- 10 参数列表不同解释:
- 11 1. 参数个数不同.
- 12 2. 对应参数的数据类型不同.
- 13
- 14 解决的问题:
- 15 用来解决方法功能相似, 但是方法名不能重名的问题. 简单理解: 就是用来解决方法重名问题的.
- 16 */
- 17 public class Demo01 {
- 18 public static void main(String[] args) {
- 19 //1.定义方法compare(), 用来比较两个整型数据是否相等.
- 20 //2.要求兼容所有的整数类型, 即(byte, short, int, long)
- 21
- 22 //调用compare()方法, byte类型
- 23 byte b1 = 10, b2 = 20;
- 24 System.out.println(compare(b1, b2));
- 25 System.out.println("-----------------------------");
- 26
- 27 //调用compare()方法, short类型
- 28 short s1 = 10, s2 = 20;
- 29 System.out.println(compare(s1, s2));
- 30 System.out.println("-----------------------------");
- 31
- 32 //调用compare()方法, int类型
- 33 System.out.println(compare(20, 10));
- 34 System.out.println("-----------------------------");
- 35
- 36 //调用compare()方法, long类型
- 37 long s3 = 10, s4 = 20;
- 38 System.out.println(compare(s3, s4));
- 39 }
- 40
- 41 //定义方法compare(), 用来比较两个整型数据是否相等. byte类型
- 42 public static boolean compare(byte b1, byte b2) {
- 43 System.out.println("byte类型");
- 44 return b1 == b2;
- 45 }
- 46
- 47 //定义方法compare(), 用来比较两个整型数据是否相等. short类型
- 48 public static boolean compare(short s1, short s2) {
- 49 System.out.println("short类型");
- 50 return s1 == s2;
- 51 }
- 52
- 53 //定义方法compare(), 用来比较两个整型数据是否相等. int类型
- 54 public static boolean compare(int a, int b) {
- 55 System.out.println("int类型");
- 56 return a == b;
- 57 }
- 58
- 59 //定义方法compare(), 用来比较两个整型数据是否相等. byte类型
- 60 public static boolean compare(long b1, long b2) {
- 61 System.out.println("long类型");
- 62 return b1 == b2;
- 63 }
- 64
- 65 }
- package com.it.demo04_overload;
- /*
- 案例: 演示形参是基本类型的情况.
- 结论:
- 如果是基本类型作为形参: 传递的是数值, 所以形参的改变对实参没有任何影响.
- */
- public class Demo02 {
- public static void main(String[] args) {
- int number = 100;
- System.out.println("调用change方法前:" + number); //100
- change(number); //实参.
- System.out.println("调用change方法后:" + number); //100
- }
- public static void change(int number) { //形参.
- number = 200;
- }
- }
- 1 package com.it.demo04_overload;
- 2
- 3 /*
- 4 案例: 演示形参是引用类型的情况.
- 5
- 6 结论:
- 7 如果是引用类型作为形参: 传递的是地址值, 所以形参的改变直接影响实参.
- 8 String类型除外, 当它充当形参类型的时候, 传递的是数值, 即: 用法和基本类型一致.
- 9 */
- 10 public class Demo03 {
- 11 public static void main(String[] args) {
- 12 int[] arr = {10, 20, 30}; //地址值: 0x001
- 13 System.out.println("调用change方法前:" + arr[1]); //20
- 14 change(arr);
- 15 System.out.println("调用change方法后:" + arr[1]); //200
- 16 }
- 17
- 18 public static void change(int[] arr) { //地址值: 0x001
- 19 arr[1] = 200;
- 20 }
- 21 }
- 1 package com.it.demo02_exercise;
- 2
- 3 /*
- 4 方法案例: 求和.
- 5
- 6 需求:
- 7 1.定义方法getSum(), 接收两个int类型的整数.
- 8 2.获取上述两个整数的和, 并返回.
- 9 3.在main方法中调用getSum()方法, 并打印结果.
- 10 */
- 11 public class Demo05 {
- 12 public static void main(String[] args) {
- 13 //需求: 调用getSum();
- 14 //方式一: 传入变量
- 15 int num1 = 10, num2 = 20;
- 16 int sum1 = getSum(num1, num2);
- 17 System.out.println(sum1);
- 18 System.out.println("-----------------------");
- 19
- 20 //方式二: 传入常量
- 21 /*int sum2 = getSum(22, 11);
- 22 System.out.println(sum2);*/
- 23 System.out.println(getSum(22, 11));
- 24 }
- 25
- 26 /*
- 27 定义方法的三个明确:
- 28 1. 明确方法名. getSum()
- 29 2. 明确参数列表. int a, int b
- 30 3. 明确返回值的数据类型. int
- 31 */
- 32
- 33 /**
- 34 * 该方法用于获取两个整数的和
- 35 * @param a 要进行求和运算的第一个整数.
- 36 * @param b 要进行求和运算的第二个整数.
- 37 * @return 两个整数的和
- 38 */
- 39 public static int getSum(int a, int b) { //形参, int a = ?, int b = ?
- 40 //求两个整数的和
- 41 //合并版
- 42 return a + b;
- 43
- 44 //分解版.
- 45 /*int sum = a + b;
- 46 return sum;*/
- 47 }
- 48 }
- 1 package com.it.demo02_exercise;
- 2
- 3 /*
- 4 方法案例: 判断奇偶数.
- 5
- 6 需求:
- 7 1.定义方法isEvenNumber(), 该方法接收一个int类型的整数num.
- 8 2.判断num是奇数还是偶数, 并返回结果.
- 9 3.在main方法中调用isEvenNumber()方法, 并打印结果.
- 10 */
- 11 public class Demo06 {
- 12 public static void main(String[] args) {
- 13 //需求: 调用isEvenNumber()方法
- 14 //赋值调用.
- 15 boolean flag = isEvenNumber(10);
- 16 System.out.println(flag);
- 17 System.out.println("=====================");
- 18
- 19 //输出调用
- 20 System.out.println(isEvenNumber(11));
- 21 }
- 22
- 23 //需求: 定义方法, 判断奇偶数.
- 24 //文档注释自己补充.
- 25 public static boolean isEvenNumber(int num) { //形参, int num = ?
- 26 //接收一个int类型的整数num., 判断num是奇数还是偶数, 并返回结果.
- 27 return num % 2 == 0;
- 28 }
- 29 }
- 1 package com.it.demo02_exercise;
- 2
- 3 /*
- 4 方法案例: 求最大值.
- 5
- 6 需求:
- 7 1.定义方法getMax(), 该方法接收两个整数.
- 8 2.通过该方法, 获取两个整数的最大值, 并返回.
- 9 3.在main方法中调用getMax()方法, 获取最大值并打印.
- 10 */
- 11 public class Demo07 {
- 12 public static void main(String[] args) {
- 13 //需求: 调用getMax()方法.
- 14 int max = getMax(10, 20);
- 15 System.out.println(max);
- 16 System.out.println("-------------------");
- 17
- 18 System.out.println(getMax(21, 11));
- 19 }
- 20
- 21 //需求: 定义方法, 获取两个整数的最大值.
- 22
- 23 /**
- 24 * 该方法是用于获取两个整数的最大值的.
- 25 * @param a 要操作的第一个整数.
- 26 * @param b 要操作的第二个整数
- 27 * @return 两个整数的最大值.
- 28 */
- 29 public static int getMax(int a, int b) {
- 30 //分解版
- 31 /*int max = a > b ? a :b;
- 32 return max;*/
- 33
- 34 //合并版
- 35 return a > b ? a : b;
- 36 }
- 37 }
- 1 package com.it.demo02_exercise;
- 2
- 3 /*
- 4 方法案例: 遍历数组
- 5
- 6 需求:
- 7 1.定义方法printArray(), 接收一个int类型的数组.
- 8 2.通过该方法, 实现遍历数组的功能.
- 9 3.在main方法中, 调用方法, 打印指定的数组.
- 10 */
- 11 public class Demo08 {
- 12 public static void main(String[] args) {
- 13 //需求:在main方法中, 调用方法, 打印指定的数组.
- 14 int[] arr = {1, 2, 3, 4, 5};
- 15 printArray(arr);
- 16 System.out.println("---------------------");
- 17
- 18 int[] arr2 = {100, 200, 300};
- 19 printArray(arr2);
- 20 }
- 21
- 22 //1.定义方法printArray(), 接收一个int类型的数组, 通过该方法, 实现遍历数组的功能.
- 23 /*
- 24 1. 明确方法名. printArray()
- 25 2. 明确参数列表. int[] arr
- 26 3. 明确返回值的数据类型. void
- 27 */
- 28 public static void printArray(int[] arr) {
- 29 //这里是遍历数组的代码
- 30 for (int i = 0; i < arr.length; i++) {
- 31 System.out.println(arr[i]);
- 32 }
- 33 }
- 34 }
- 1 package com.it.demo02_exercise;
- 2
- 3 /*
- 4 方法案例: 获取数组元素最值.
- 5
- 6 需求:
- 7 1.定义方法getMax(), 接收一个int类型的数组.
- 8 2.通过该方法, 获取数组元素中的最大值.
- 9 3.在main方法中, 调用方法, 打印对应的结果.
- 10 */
- 11 public class Demo09 {
- 12 public static void main(String[] args) {
- 13 //需求: 调用getMax();
- 14 int[] arr = {11, 33, 22, 55};
- 15
- 16 //赋值调用, 实际开发用.
- 17 int max = getMax(arr);
- 18 System.out.println(max);
- 19 System.out.println("-----------------------");
- 20
- 21 //输出调用, 课堂用.
- 22 System.out.println(getMax(arr));
- 23 }
- 24
- 25 /*
- 26 需求: 定义方法getMax(), 获取int数组元素的最大值.
- 27
- 28 定义方法的3个明确:
- 29 1. 明确方法名. getMax()
- 30 2. 明确参数列表. int[] arr
- 31 3. 明确返回值的数据类型. int
- 32 */
- 33 public static int getMax(int[] arr) { //形参, 形容调用方法需要给什么类型的值, int[] arr = ?
- 34 //1. 定义变量, 用来记录最大值.
- 35 int max = arr[0];
- 36 //2. 遍历数组, 获取每个元素.
- 37 for (int i = 0; i < arr.length; i++) {
- 38 //3. 判断当前获取到的元素是否大于临时变量max, 如果大就将其值赋值给变量max
- 39 if (arr[i] > max)
- 40 max = arr[i];
- 41 }
- 42 //4. 返回结果.
- 43 return max;
- 44 }
- 45 }
- 1 package com.it.demo02_exercise;
- 2
- 3 /*
- 4 方法案例: 模拟计算器.
- 5
- 6 需求:
- 7 1.定义方法, 接收两个int类型的整数.
- 8 2.分别获取这两个整数的加减乘除的运算结果, 然后返回.
- 9 3.在main方法中调用该方法, 并打印结果.
- 10 */
- 11 public class Demo10 {
- 12 public static void main(String[] args) {
- 13 //需求: 调用calculate(), 模拟计算器.
- 14 int[] arr = calculate(10, 3);//实参, 实际参与运算的数字
- 15
- 16 //遍历数组, 查看结果.
- 17 for (int i = 0; i < arr.length; i++) {
- 18 System.out.println(arr[i]);
- 19 }
- 20 }
- 21
- 22 //需求: 定义方法calculate(), 模拟计算器.
- 23 /*
- 24 定义方法的三个明确:
- 25 1. 明确方法名. calculate()
- 26 2. 明确参数列表. int a, int b
- 27 3. 明确返回值的数据类型. int[] 因为要同时返回加减乘除这四个值, 所以用数组.
- 28 */
- 29
- 30 /**
- 31 * 定义方法, 模拟计算器, 即: 获取两个整数的加减乘除运算结果.
- 32 * @param a 要操作的第一个整数
- 33 * @param b 要操作的第二个整数
- 34 * @return 返回这两个整数加减乘除的运算结果.
- 35 */
- 36 public static int[] calculate(int a, int b) { //形参, int a = ?, int b = ?
- 37 //1. 定义int[]数组, 长度为4, 分别表示: 加减乘除的运算结果.
- 38 int[] arr = new int[4];
- 39 //2. 进行加减乘除运算, 并把结果存储到数组中.
- 40 arr[0] = a + b;
- 41 arr[1] = a - b;
- 42 arr[2] = a * b;
- 43 arr[3] = a / b;
- 44 //3. 返回数组.
- 45 return arr;
- 46 }
- 47 }
- 1 package com.it.demo02_exercise;
- 2
- 3 /*
- 4 案例: 按照格式打印数组.
- 5
- 6 需求:
- 7 1.定义方法printArray(), 该方法用来打印数组. [11, 22, 33, 44, 55]
- 8 2.打印格式为: [11, 22, 33, 44, 55]
- 9 */
- 10 public class Demo11 {
- 11 public static void main(String[] args) {
- 12 //需求: 调用printArray()方法
- 13 int[] arr = {11, 22, 33, 44, 55};
- 14 printArray(arr);
- 15 }
- 16
- 17 //需求: 定义方法printArray(), 该方法用来打印数组.
- 18 public static void printArray(int[] arr) {
- 19 //里边写的是具体的打印数组元素的操作.
- 20 //1. 先输出"[", 记得不要换行.
- 21 System.out.print("[");
- 22 //2. 遍历数组, 获取每一个元素.
- 23 for (int i = 0; i < arr.length; i++) {
- 24 //arr[i]就是数组中的每个元素.
- 25 //3. 判断当前元素是否是最后一个元素, 如果是, 就输出: 元素 + "]" + 换行
- 26 if (i == arr.length - 1)
- 27 System.out.println(arr[i] + "]");
- 28 else
- 29 //4. 如果不是最后一个元素, 就输出: 元素 + ", ", 不换行
- 30 System.out.print(arr[i] + ", ");
- 31 }
- 32
- 33 }
- 34 }
方法调用图解
有参无返回调用图解
方法参数传递问题图解
方法的参数传递问题——引用类型
Java 复习整理day04的更多相关文章
- java 复习整理(一 java简介和基础语法)
现在公司用的是封装太多东西的平台开发,觉着之前学的东西很多都忘了,所以想好好总结回顾一下.之前总是想学很多编程语言像python.s6.node.react,但现在越来越体会到编程语言只是一个开发的工 ...
- java复习整理(六 异常处理)
一.异常简介 在 Java 中,所有的异常都有一个共同的祖先 Throwable(可抛出).Throwable 指定代码中可用异常传播机制通过 Java 应用程序传输的任何问题的共性. ...
- java 复习整理(五 类加载机制与对象初始化)
类加载机制与对象初始化 一 . 类加载机制 类加载机制是指.class文件加载到jvm并形成Class对象的机制.之后应用可对Class对象进行实例化并调用.类加载机制可在运行时动态加载外部的类, ...
- java 复习整理(四 String类详解)
String 类详解 StringBuilder与StringBuffer的功能基本相同,不同之处在于StringBuilder是非线程安全的,而StringBuffer是线程安全的,因此效率上S ...
- java 复习整理(三 修饰符)
访问控制修饰符 Java中,可以使用访问控制符来保护对类.变量.方法和构造方法的访问.Java支持4种不同的访问权限. 默认的,也称为default,在同一包内可见,不使用任何修饰符. 私有的,以pr ...
- java 复习整理(二 数据类型和几种变量)
源文件声明规则 当在一个源文件中定义多个类,并且还有import语句和package语句时,要特别注意这些规则. 一个源文件中只能有一个public类 一个源文件可以有多个非public类 源文件的名 ...
- Java 复习整理day10
package com.it.demo01_quickstart; /* 案例: 讲解网络编程相关概念. 网络编程简介: 概述: 网络编程也叫: 套接字编程, Socket编程, 就是用来实现 网络互 ...
- Java 复习整理day09
package com.it.demo01_thread; /* 案例: 多线程简介. 概述: 指的是进程有多条执行路径, 统称叫: 多线程. 进程: 指的是可执行程序, 文件(例如: .exe) 大 ...
- Java 复习整理day08
package com.it.demo02_lambda; //接口, 表示动物. //public abstract class Animal { //报错, Lambda表达式只针对于接口有效 p ...
随机推荐
- 「译」用 Blazor WebAssembly 实现微前端
原文作者: Wael Kdouh 原文链接:https://medium.com/@waelkdouh/microfrontends-with-blazor-webassembly-b25e4ba3f ...
- DRF之访问权限控制和访问频率控制(节流)
权限控制 前言 用户验证用户权限,根据不同访问权限控制对不同内容的访问. 建议了解视图.token验证的内容. 使用流程 自定义访问权限类,继承BasePermission,重写has_permiss ...
- IDEA:配置Tomcat并运行应用
1.File->ProjectStructre->Artifacts 如下界面 3.下一步:如图所示 4.选择相应的Module就行 5.第一次运行程序时最好选择运行的配置,否则可能运行的 ...
- 【JDBC核心】获取数据库连接
获取数据库连接 要素一:Driver 接口实现类 Driver 接口: java.sql.Driver 接口是所有 JDBC 驱动程序需要实现的接口.这个接口是提供给数据库厂商使用的,不同数据库厂商提 ...
- LeetCode561 数组拆分 I
给定长度为 2n 的数组, 你的任务是将这些数分成 n 对, 例如 (a1, b1), (a2, b2), ..., (an, bn) ,使得从1 到 n 的 min(ai, bi) 总和最大. 示例 ...
- 关于软件架构中的b/s
**B/S架构 b/s只需要一个浏览器,用户就可以通过不同的网址访问不同的服务器程序. 优点:开发,安装,部署,维护简单 缺点:对硬件要求过高,用户的体验会受到影响 首先是资源分类:**可以分为静态资 ...
- wpf 中 Ellipse 对象对动画性能的影响
vs2019 .NetFramework 4.8 win10-64 1909 接手一个wpf项目,某窗口中包含大量的 Shape 对象(线,矩形,圆形等). 这些内容要匀速的向左平移,类似于游戏&qu ...
- 【Nginx】yum安装nginx
这里是nginx的yum安装源: centos7: rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-cent ...
- 【RAC】安装rac的时候。报错checking for oracle home incompatibilities failed
背景:由于oracle安装的时候中途出现了问题,解决过后,发现报错了 图形化安装的时候,有这个问题出现 解决办法: 删除安装过的所有缓存,和文件即可 1.删除ORACLE_BASE下的所有文件 2.删 ...
- LeetCode965. 单值二叉树
题目 1 class Solution { 2 public: 3 int flag = 0; 4 bool isUnivalTree(TreeNode* root){ 5 isUnivalTree1 ...