05_java之方法
01方法的概述
* A: 为什么要有方法
* 提高代码的复用性
* B: 什么是方法
* 完成特定功能的代码块。
02方法的定义格式
* A: 方法的格式
*
修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2...) {
方法体语句;
return 返回值;
}
* B: 方法的格式说明
* 修饰符:目前就用 public static。后面我们再详细的讲解其他的修饰符。
* 返回值类型:就是功能结果的数据类型。
* 方法名:符合命名规则即可。方便我们的调用。
* 参数:
* 实际参数:就是实际参与运算的。
* 形式参数;就是方法定义上的,用于接收实际参数的。
* 参数类型:就是参数的数据类型
* 参数名:就是变量名
* 方法体语句:就是完成功能的代码。
* return:结束方法的。
* 返回值:就是功能的结果,由return带给调用者。
03定义方法计算面积
* A: 定义方法计算面积
public class MethodDemo{
public static void main(String[] args){
//调用方法, 方法执行起来
// 在方法main中,调用方法 getArea int area = getArea(5,6);
System.out.println("面积是: "+area); }
/*
要求: 计算一个长方形的面积
定义方法解决这个要求
分析方法定义过程:
1.明确方法计算后的结果的数据类型 int 定义格式对应的就是返回值类型
2.方法计算过程中,有没有未知的数据, 宽和长, 未知数据的数据类型 int
未知数的变量,定义在方法的小括号内
*/
public static int getArea(int w, int h){
//实现方法的功能主体
//int area = w * h;
return w * h;
}
}
04调用方法
* A: 调用方法
* a: 在main函数中调用方法,让方法执行起来
* b: 方法的形参
* 方法要什么参数我们就给什么类型的参数。
* c: 方法的返回值
* 方法返回什么类型的值我们就用对应的数据类型的变量来接收
05调用方法执行流程
* A: 调用方法执行流程
* a: 方法的定义是没有顺序的,写在main函数的上边或者下边都可以。
* b: 方法的执行,是把实参传递给形参,从而来执行的。
* c: 方法只有被调用才会执行。
06方法调用的内存图
* A: 方法调用的内存图
07方法调用的练习
* A: 案例代码
/*
方法的定义练习
*/
import java.util.Scanner;
public class MethodDemo_1{
public static void main(String[] args){
//printRect();
//int number = getNumber();
//System.out.println(getNumber());
//printRect2(3,5);
double avg = getAvg(2,2,3);
System.out.println(avg);
} /*
定义有返回值有参数方法,如求三个数的平均值
明确方法计算后的数据类型, 返回值类型 double
明确方法未知数, 三个未知的整数
*/
public static double getAvg(double a, double b,double c){
return (a+b+c)/3;
} /*
定义无返回值有参数方法,如打印指定M行,每行N个*号的矩形
明确方法计算后结果,控制台输出图形,没有返回值的
方法中有没有未知数,图形行数,和列数,是未知的, 数据类型整数int
*/
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();
}
} /*
定义有返回值无参数方法,如键盘录入得到一个整数
明确方法计算后结果的数据类型 int
明确有没有未知数,没
*/
public static int getNumber(){
Scanner sc = new Scanner(System.in);
//int number = sc.nextInt();
return sc.nextInt();
} /*
定义无返回值无参数方法,如打印3行,每行3个*号的矩形
为什么没有返回值:
打印矩形 ,输出效果,不需要将结果返回
明确未知数: 不需要未知数
*/
public static void printRect(){
for(int i = 0 ; i < 3 ; i++){
for(int j = 0 ; j < 3 ;j++){
System.out.print("*");
}
System.out.println();
}
}
}
08方法的定义和使用的注意事项
* A: 方法的定义和使用的注意事项
* a: 方法不能定义在另一个方法的里面
* b: 写错方法名字
* c: 写错了参数列表
* d: 方法返回值是void,方法中可以省略return 不写
return 下面不能有代码
* e 方法返回值类型,和return 后面数据类型必须匹配
* f: 方法重复定义问题
* g: 调用方法的时候,返回值是void, 不能写在输出语句中
09方法的重载
* A: 方法的重载
* 在同一个类中,方法名相同,参数列表不同。与返回值类型无关。
* 参数列表不同:
* A:参数个数不同
* B:参数类型不同
* C:参数的顺序不同(算重载,但是在开发中不用)
* B: 案例代码
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(double a,double b){
System.out.println("两个double参数");
return a+b;
}
10方法重载注意事项
* A: 方法重载注意事项
* a: 参数列表必须不同
* b: 重载和参数变量名无关
* c: 重载和返回值类型无关
* d: 重载和修饰符无关
* e: 技巧: 重载看方法名和参数列表
11方法参数是基本数据类型
* A: 方法参数是基本数据类型
* a: 方法参数是基本类型时,传递的是值。
12方法参数是引用数据类型
* A: 方法参数是引用数据类型
* a: 方法参数是引用类型时,传递的是内存地址值。
13随机点名器
* A: 案例代码
/*
实现随机点名器
1.存储所有学生姓名
2.预览所有学生姓名,遍历数组
3.随机数作为索引,到数组中找元素 将功能独立出来, 作成方法,调用方法即可 定义三个功能, 用到同一个姓名数据
姓名存储到数组中,三个方法,使用一个数组中的数据, 方法传递参数
*/
import java.util.Random;
public class CallName{
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] = "小华";
}
}
14库存案例代码实现_1
* A: 案例代码
/*
实现商品的库存管理
功能:
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){ } /*
定义方法,展示所有的库存清单,遍历
返回值,没有
参数, 数组
*/
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;
}
}
15库存案例代码实现_2
* A: 案例代码
/*
定义方法,修改所有商品的库存
用户输入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();
}
16库存案例代码测试
* A: 案例
/*
实现商品的库存管理
功能:
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;
}
}
05_java之方法的更多相关文章
- javaSE27天复习总结
		
JAVA学习总结 2 第一天 2 1:计算机概述(了解) 2 (1)计算机 2 (2)计算机硬件 2 (3)计算机软件 2 (4)软件开发(理解) 2 (5) ...
 - 05_Java基础语法_第5天(方法)_讲义
		
今日内容介绍 1.方法基础知识 2.方法高级内容 3.方法案例 01方法的概述 * A: 为什么要有方法 * 提高代码的复用性 * B: 什么是方法 * 完成特定功能的代码块. 02方法的定义格式 * ...
 - mapreduce多文件输出的两方法
		
mapreduce多文件输出的两方法 package duogemap; import java.io.IOException; import org.apache.hadoop.conf ...
 - 【.net 深呼吸】细说CodeDom(6):方法参数
		
本文老周就给大伙伴们介绍一下方法参数代码的生成. 在开始之前,先补充一下上一篇烂文的内容.在上一篇文章中,老周检讨了 MemberAttributes 枚举的用法,老周此前误以为该枚举不能进行按位操作 ...
 - IE6、7下html标签间存在空白符,导致渲染后占用多余空白位置的原因及解决方法
		
直接上图:原因:该div包含的内容是靠后台进行print操作,输出的.如果没有输出任何内容,浏览器会默认给该空白区域添加空白符.在IE6.7下,浏览器解析渲染时,会认为空白符也是占位置的,默认其具有字 ...
 - 多线程爬坑之路-Thread和Runable源码解析之基本方法的运用实例
		
前面的文章:多线程爬坑之路-学习多线程需要来了解哪些东西?(concurrent并发包的数据结构和线程池,Locks锁,Atomic原子类) 多线程爬坑之路-Thread和Runable源码解析 前面 ...
 - [C#] C# 基础回顾 - 匿名方法
		
C# 基础回顾 - 匿名方法 目录 简介 匿名方法的参数使用范围 委托示例 简介 在 C# 2.0 之前的版本中,我们创建委托的唯一形式 -- 命名方法. 而 C# 2.0 -- 引进了匿名方法,在 ...
 - ArcGIS 10.0紧凑型切片读写方法
		
首先介绍一下ArcGIS10.0的缓存机制: 切片方案 切片方案包括缓存的比例级别.切片尺寸和切片原点.这些属性定义缓存边界的存在位置,在某些客户端中叠加缓存时匹配这些属性十分重要.图像格式和抗锯齿等 ...
 - [BOT] 一种android中实现“圆角矩形”的方法
		
内容简介 文章介绍ImageView(方法也可以应用到其它View)圆角矩形(包括圆形)的一种实现方式,四个角可以分别指定为圆角.思路是利用"Xfermode + Path"来进行 ...
 
随机推荐
- Google内部培训过1.8万人的机器学习速成课
			
什么是(监督)机器学习?简而言之,它是以下几点: ML系统学习如何组合输入以产生对从未见过的数据的有用预测. 我们来探讨基本的机器学习术语. 标签 一个标签是我们预测物品的属性,比如变量y在简单线性回 ...
 - Cannot setup mail box on Android
			
Error: “You don’t have permission to sync with this server” Solution: “You have 10 phone partnershi ...
 - 求 LCA 的三种方法
			
(YYL: LCA 有三种求法, 你们都知道么?) (众神犇: 这哪里来的傻叉...) 1. 树上倍增 对于求 LCA, 最朴素的方法是"让两个点一起往上爬, 直到相遇", &qu ...
 - new Date()相关获取当月天数和当月第一天
			
var myDate = new Date(); //获取本月第一天周几 var monthFirst = new Date(myDate.getFullYear(), parseInt(myDat ...
 - Java并发--进程与线程由来
			
下面是本文的目录大纲: 一.操作系统中为什么会出现进程? 二.为什么会出现线程? 三.多线程并发 一.操作系统中为什么会出现进程? 说起进程的由来,我们需要从操作系统的发展历史谈起. 也许在今天,我们 ...
 - SqlServer使用CONVERT 对时间进行格式化
			
前言 在最近使用SqlServer的时候遇到时间格式的转换,特此记录下. 本文参考:https://www.cnblogs.com/xiaoleiel/p/8301027.html,如有侵权,请联系删 ...
 - CALayer4-自定义层
			
一.自定义层的方法1 方法描述:创建一个CALayer的子类,然后覆盖drawInContext:方法,使用Quartz2D API进行绘图 1.创建一个CALayer的子类 2.在.m文件中覆盖dr ...
 - Linux驱动程序接口
			
§1. Linux驱动程序接口 系统调用是操作系统内核与应用程序之间的接口,设备驱动程序则是操作系统内核与机器硬件的接口.几乎所有的系统操作最终映射到物理设备,除了CPU.内存和少数其它设备,所有的设 ...
 - 【数据库】sql连表查询
			
SQL总结 连表查询 连接查询包括合并.内连接.外连接和交叉连接,如果涉及多表查询,了解这些连接的特点很重要. 只有真正了解它们之间的区别,才能正确使用. 1.Union UNION 操作符用于合并两 ...
 - Tornado部署与运行
			
运行多个Tornado实例 网页响应不是特别的计算密集型处理多个实例充分利用 CPU多端口怎么处理4.使用Supervisor监控Tornado进程安装(注意看是否需要指定使用python2版本) s ...
 
			
		