目 录
第1章 方法
1.1 方法概述
1.2 定义方法的语法格式
1.3 方法调用
1.4 方法定义练习
1.5 方法的重载
1.5.1 重载的注意事项
1.5.2 参数传递
第2章 随机点名机制 案例
第3章 库存管理 案例
第1章 方法
1.1方法概述
①为什么要有方法
* 提高代码的复用性
②什么是方法
* 完成特定功能的代码块。
1.2定义方法的语法格式
1)定义方法的格式:
修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2…) {
方法体语句;
return 返回值;
}
2)方法的格式说明
- 修饰符:目前就用 public static。后面再讲解其他的修饰符。
- 返回值类型:方法在运行后,会结果,那么结果的类型就是返回值类型。
- 方法名:自定义满足标识符规范即可。方法名字首字母小写,其余单词每个首字母大写。
- 参数列表:方法的运算过程中是否有未知数据,如果有则定义在列表中,即参数类型 参数1……等等。
- 方法体语句:就是完成功能的代码,里边可以包含循环/判断/变量/比较/运算等。
- return:结束方法。
- 返回值:就是功能的结果,由return带给调用者。
3)练习案例: 计算一个长方形的面积
① 分析方法定义过程:
1.明确方法计算后的结果的数据类型,int,定义格式对应的就是返回值类型。
2.方法计算过程中有没有未知数据,有,就是长和宽,未知数据的数据类型就是int。
【注意:代码编写时必须写在类中,且不能在另一个方法之内】
② 定义方法代码编写(这里只是定义方法并不能输出,因为没有调用方法):
public static int getArea(int w, int h){
//实现方法的功能主体
//int area = w * h;
return w * h;
}
1.3方法调用
①在main函数中调用方法,让方法执行起来,同时方法返回什么类型的值我们就用对应的数据类型的变量在main中接收
比如上一例子中的调用:
②调用方法执行流程
a: 方法的定义是没有顺序的,写在main函数的上边或者下边都可以。
b: 方法只有被调用才会执行。
③方法调用的图解
④方法调用的内存图
1.4方法定义练习
1)
/*
定义无返回值无参数方法,如打印3行每行三个“*”的矩形。
为什么没有返回值,因为打印矩形不需要将结果返回
不需要未知数
*/
public class MethdDemo {
public static void printRect() {
for(int i= 0;i<3;i++) {
for(int j= 0;j<3;j++) {
System.out.print("*");
}System.out.println();
}
}
public static void main(String[] args) {
printRect();
}
}
2)
/*
定义有返回值无参数方法,如
*/
import java.util.Scanner;
public class MethdDemo {
public static void main(String[] args) {
//int number=getNumber();简化
System.out.println(getNumber() );
}
public static int getNumber() {
Scanner sc = new Scanner (System.in);
//int number = sc.nextInt();简化
return sc.nextInt();
}
}
3)
/*
定义无返回值有参数方法,如打印指定M行,每行N个*号
明确方法计算结果,控制台输出图形,没有返回值
有没有未知数,行数和列数是未知量,数据类型int
*/
public class MethdDemo {
public static void main(String[] args) {
printRect2(4, 3);
}
public static void printRect2(int m, int n) {
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
System.out.print("*");
}
System.out.println();
}
}
}
4)
/*
定义有返回值有参数方法,如三個數的平均值
明确方法计算结果,返回值int
有没有未知数,三個未知數,数据类型int
*/
public class MethdDemo {
public static void main(String[] args) {
System.out.println(getAvg(1,2,3));
}
public static int getAvg(int a, int b,int c) {
return (a+b+c)/3;
}
}
5)方法定义和调用的注意事项:
①不能定义在另一个方法里
②写错方法名字,严格区分大小写
③写错参数列表
④方法返回值是void(单向的意思),方法中可以省略return 不写,
如果写return则return下面不能有任何代码
⑤方法返回值类型,和return 后面数据类型必须匹配
⑥方法重复定义问题,不允许
⑦调用方法的时候,返回值是void,意味没有返回值, 则方法不能写在输出语句中
1.5方法的重载
在同一个类中,允许方法名相同,只要参数列表不同。与返回值类型无关。
* 参数列表不同:
* A:参数个数不同
* B:参数类型不同
* C:参数的顺序不同(算重载,但是在开发中不用)
例如:
/*
定义有返回值有参数方法,如三個數的平均值
明确方法计算结果,返回值int
有没有未知数,三個未知數,数据类型int
*/
public class MethdDemo {
public static void main(String[] args) {
System.out.println();
//int sum = getSum(2,3,3); //输出结果为“三个int参数 8”
double sum = getSum(2,3.5);//输出结果为“一个int参数和一个double参数 5.5”
System.out.println(sum);
}
public static int getSum(int a,int b){
System.out.println("两个int参数");
return a+b;
}
public static int getSum(int a,int b,int c){
System.out.println("三个int参数");
return a+b+c;
}
public static double getSum(int a,double b){
System.out.println("一个int参数和一个double参数");
return a+b;
}
}
1.5.1重载的注意事项
- a: 参数列表必须不同
- b: 重载和参数变量名无关
- c: 重载和返回值类型无关
- d: 重载和修饰符无关
e: 技巧: 重载看方法名和参数列表
关于重载的设定:
可以:
但不可以:
1.5.2参数传递
① 方法参数是基本数据类型:方法参数是基本类型时,传递的是值。
图解:
② 方法参数是引用数据类型:方法参数是引用类型时,传递的是内存地址值。
第2章 随机点名机制 案例
2.1案例介绍
与上一节课的案例相同,要求在屏幕出现全面班同学的姓名,并随机出现一位同学姓名。
2.2需求分析
1. 存储所有学生姓名
2. 预览所有学生姓名,遍历数组
3. 随机数作为索引,到数组中找名字元素
与上一节不同在于将功能独立出来, 作成方法,调用方法即可
定义三个功能, 用到同一个姓名数据,姓名存储到数组中,三个方法,使用一个数组中的数据, 方法传递参数。
2.3实现代码步骤
import java.util.Random;
public class CallName_2{
public static void main(String[] args){
//定义数组,存储学生姓名
String[] names = new String[8];
//调用添加姓名方法
addStudent(names);
//调用遍历数组方法
printStudentName(names);
//调用随机姓名的方法
String name = randomStudentName(names);
System.out.println(name);
}
/*
定义方法,随机数,做索引,数组中找到学生姓名
返回值? 学生姓名
参数? 数组
*/
public static String randomStudentName(String[] names){
Random ran = new Random();
int index = ran.nextInt(names.length);
return names[index];
}
/*
定义方法,遍历数组
返回值? 没有
参数? 数组
*/
public static void printStudentName(String[] names){
for(int i = 0 ; i < names.length ;i++){
System.out.println(names[i]);
}
}
/*
定义方法,实现向数组中添加学生姓名
返回值? 没有,
参数? 参数就是数组
*/
public static void addStudent(String[] names){
names[0] = "张三";
names[1] = "李四";
names[2] = "王五";
names[3] = "李蕾";
names[4] = "韩梅梅";
names[5] = "小名";
names[6] = "老王";
names[7] = "小华";
}
}
第3章 库存管理案例
3.1案例介绍
1.展示用户选择功能清单
2.根据选择的功能编号,进行不同的操作
A. 展示所有库存
B. 修改库存数量
3.2需求分析
分析:
1.展示用户清单:
输出语句, 用户输入, 选择功能序号
2.根据选择,调用不同的方法
switch语句
case 1 2 3
A 展示库存: 将存储商品的数组,遍历
B 修改库存:修改所有的库存数量
3.3实现代码步骤
/*
实现商品的库存管理
功能:
1.展示用户选择功能清单
2.根据选择的功能编号,进行不同的操作
A. 展示所有库存
B. 修改库存数量
分析:
1.展示用户清单:
输出语句, 用户输入, 选择功能序号
2.根据选择,调用不同的方法
switch语句
case 1 2 3
A 展示库存
将存储商品的数组,遍历
B 修改库存
修改所有的库存数量
*/
import java.util.Scanner;
public class Shopp{
public static void main(String[] args){
//使用数组,保存商品的信息
//品名,尺寸,价格,库存数, 定义5个数组
String[] brand = {"MacBookAir","ThinkpadT450"};
double[] size = {13.3,15.6};
double[] price = {9998.97,6789.56};
int[] count = {0,0};
while(true){
int choose = chooseFunction();
switch(choose){
case 1:
//调用查看库存清单方法
printStore(brand,size,price,count);
break;
case 2:
//调用修改库存的方法
update(brand,count);
break;
case 3:
return ;
default:
System.out.println("没有这个功能");
break;
}
}
}
/*
定义方法,修改所有商品的库存
用户输入1个,修改1个
返回值,没有
参数, 库存数的数组, 品名数组
*/
public static void update(String[] brand, int[] count){
//遍历数组,遍历到一个,修改一个
//接受键盘输入
Scanner sc = new Scanner(System.in);
//遍历数组
for(int i = 0; i < brand.length ; i++){
System.out.println("请输入"+brand[i]+"的库存数");
//键盘输入,录入库存, 存储到库存的数组中
int newCount = sc.nextInt();
count[i] = newCount;
}
//int chooseNumber = sc.nextInt();
}
/*
定义方法,展示所有的库存清单,遍历
返回值,没有
参数, 数组
*/
public static void printStore(String[] brand,double[] size,double[] price,int[] count){
System.out.println("----------商场库存清单----------");
System.out.println("品牌型号 尺寸 价格 库存数");
//定义变量,计算总库存数,和总价格
int totalCount = 0;
int totalMoney = 0;
//遍历数组,将数组中所有的商品信息打印出来
for(int i = 0 ; i < brand.length ; i++){
System.out.println(brand[i]+" "+size[i]+" "+price[i]+" "+count[i]);
totalCount += count[i];
totalMoney += count[i]*price[i];
}
System.out.println("总库存数: "+totalCount);
System.out.println("商品库存总金额: "+totalMoney);
}
/*
定义方法,实现用户的选择功能,功能的需要返回来
返回值, int
参数, 没有
*/
public static int chooseFunction(){
System.out.println("-------------库存管理------------");
System.out.println("1.查看库存清单");
System.out.println("2.修改商品库存数量");
System.out.println("3.退出");
System.out.println("请输入要执行的操作序号:");
//接受键盘输入
Scanner sc = new Scanner(System.in);
int chooseNumber = sc.nextInt();
return chooseNumber;
}
}