返回值类型:当前方法运行之后的数据产出
方法名: 明确告知用户这里运行的方法是哪一个,执行的效果会怎么样。
形式参数列表:方法运行所需的外来数据,方法运行的必要条件。
规范:
1. 只能用英文字母(A ~ Z a ~ z), 数字(0 ~ 9),还有下划线 _
2. 见名知意,动宾结构
好的代码从方法名开始
3. 小驼峰命名法
行为规范
setXXX
getXXX
remove
add
delete
update
attribute
返回值:
1. 没有什么必要和不必要,需求分析过程
2. 返回值的数据类型
3. 返回值的数据含义
4. 返回值每一次有且只能返回一个数据
做菜:酱牛肉
牛肉,葱,姜,蒜,料酒,八角,花椒,麻椒,辣椒,小茴香,香叶,桂皮,
山奈,老抽,冰糖,耗油,黄豆酱(形式参数,实际需要但只是假想,并不存在)
实际参数:牛肉两斤,葱一根。。。
形式参数实际上是在对于方法分析过程中,了解方法运行需要必要参数,并且在参数使用必要性上做论证。
需求分析
方法名,形式参数列表,返回值类型
考虑方法的执行流程
可以采用注释辅助完成方法的执行流程
实现代码
按照注释完成代码
【不要头铁】【不要自大】【认清自我】
【知错就改】
验证
代码运行验证,正确参数情况,运行结果怎么样
错误参数是,代码反馈是什么
代码的稳定性,健壮性,安全性
【方法中需要使用参数合法性判断】
图书馆:
1. 社科类,文学类,管理类,小说类,历史类,语言类
2. 相同的书籍会存放于一个书架上 【同一个位置】
3. 每一本书都要有一个唯一的编号 【同样的称呼】 W-101
4. 同一本有10本,都会有一个唯一的索引
W-101-01 ~ W-101-10 【唯一索引】
通过图书馆我们可以概括
1. 存储位置一致,并且连续
2. 有统一的称呼,方便管理
3. 存在唯一索引,具有一定的唯一性
案例
int[] array = new int[10];
/*
赋值号左侧:
int:
告知编译器,这里创建定义的是一个int类型数组,有且只能保存int类型数据,保
证数据类型一致化
[]:
1. 告知编译器,当前定义的数据类型是一个数组类型
2. 数组名 array是一个【引用数据类型】
array:
1. 这里是一个数组名,操作数组的核心数据!!!就是一个变量名
2. 数组名 array是一个【引用数据类型】
赋值号右侧:
new:
new关键字需要在计算机中申请【连续内存空间】,这块区域在内存的【堆区】
【生活案例】这里就好比,顾客找仓库管理员申请货架,管理员一定是给你一个整
个连续区域给你使用
int:
前后呼应,告知编译器这里能够存储的数据类型是int类型,其他类型都不可以,要
求数据类型一致化
[10]:
告知编译器,当前数组的【容量 Capacity】是多少,这里是10,也就是说当前数
组中有且只能保存10个int类型数据
*/
引用在生活中很常见,比如 文献中引用,文言文注解引用,广告角标上标引用,这些目的,引入其他的内容,其他的文献,其他的操作...
引用存在的一定的【指向性】
取快递
快递小哥如何知道你的地址在哪里???
根据快递单上的地址,联系方式和姓名来找到你的位置。
快递单这里也存在一定的【指向性】
快递单中存有一个非常重要的数据【地址】
开发中的【引用数据类型】,实际上是一个指向其他内存空间的一个数据类型。引用数据类型的变量中存储的内容是其他内存空间的【首地址】。
当CPU访问到【引用数据类型】变量时,会得到其存储的地址,然后直接跳转到对应的内存空间中,执行代码,获取数据,操作内容...
定义数组:
int[] array = new int[10];
需要操作数组中哪一个元素,这里需要使用数组的【下标】
计算机内数据的开头都是从0开始,数组容量为10的情况
有效下标的范围
0 ~ 9
0 ~ 数组容量 Capacity - 1(计算机一般从0开始)
操作格式:
数组名[有效下标]
/* 演示数组的定义和使用 */
class Demo2 {
public static void main(String[] args) {
/* 这里定义一个int类型的数组,数组的容量为10 */
int[] array = new int[10];
/*
给数组中下标为0的元素赋值
格式: 数组名[有效下标]
*/
array[0] = 10;
/*
给数组中下标为5的元素赋值
*/
array[5] = 20;
/*
给数组下标为10的元素赋值30
10 已经超出了有效下标范围 0 ~ 9
array[10] = 30;
*/
/*
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10
at Demo2.main(Demo2.java:22)
ArrayIndexOutOfBoundsException 数组下标越界异常
*/
/*
给数组中下标为-1的元素赋值为20
-1 已经超出了有效下标范围 0 ~ 9
*/
// array[-1] = 20;
/*
java.lang.ArrayIndexOutOfBoundsException: -1
*/
/*
取出数组中下标为0和下标为5的元素内容
*/
System.out.println("array[0] : " + array[0]);
System.out.println("array[5] : " + array[5]);
// System.out.println("array[4] : " + array[4]);
}
}
class Demo3 {
public static void main(String[] args) {
/* 定义一个int类型数组 容量为10 */
int[] arr = new int[10];
/*
数组名.length
获取当前数组的【容量 Capacity】,获取数组的【属性】
*/
for (int i = 0; i < arr.length; i++) {
// 给数组中每一个元素赋值操作
arr[i] = i + 1;
}
// 利用循环展示数据
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
}
a. 在一个int类型数组中,存储的内容是1 ~ 10
int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
使用代码找出,元素 == 5 所在下标位置
b. 在一个int类型数组中,存储的内容是
int[] arr = {1, 3, 5, 7, 9, 2, 4, 6, 8, 10};
使用代码找出下标为5的元素
/*
在一个int类型数组中,存储的内容是
int[] arr = {1, 3, 5, 7, 9, 2, 4, 6, 8, 10};
使用代码找出下标为5的元素
*/
class Demo4 {
public static void main(String[] args) {
int[] arr = {1, 3, 5, 7, 9, 2, 4, 6, 8, 10};
System.out.println(arr[5]);
}
}
c. 在一个int类型数组中,存储的内容是
int[] arr = {1, 3, 5, 7, 9, 2, 4, 6, 8, 10};
使用代码找出数组中最大元素所在下标位置
/*
c. 在一个int类型数组中,存储的内容是
int[] arr = {1, 3, 5, 7, 9, 2, 4, 6, 8, 10};
使用代码找出数组中最大元素所在下标位置
*/
class Demo5 {
public static void main(String[] args) {
int num = 0;
int[] arr = {1, 3, 5, 7, 9, 2, 4, 6, 8, 10};
for (int i = 1; i <= arr.length;i++) {
num = arr[i];
if (num > arr[i+1]) {
num = arr[i+1];
System.out.println(num);
} else {
System.out.println(arr[i+1]);
}
}
}
}
d. 在一个int类型数组中,存储的内容是
int[] arr = {1, 3, 5, 7, 9, 2, 4, 6, 8, 10};
使用代码找出数组中最小元素所在下标位置
e. 点菜代码练习
import java.util.Scanner;
class HomeWork1 {
public static void main(String[] args) {
// 总价
int total = 0;
// 用户选择
int choose = 0;
// 准备一个Scanner扫描器变量
Scanner sc = new Scanner(System.in);
showMenu();
do {
// 从键盘上获取用户输入的int类型数据,用户选择
// 保存到choose变量中
choose = sc.nextInt();
// orderDishes方法,传入用户的选择,返回值是菜品的价格
int price = orderDishes(choose);
// 总价 + 菜品的价格
total = total + price;
// 开发中常用写法
// total += orderDishes(choose);
} while (choose != 6);
System.out.println("总消费 : " + total);
}
/**
* 展示菜单给用户使用
*/
public static void showMenu() {
System.out.println("欢迎来到骚磊老酒馆");
System.out.println("1. 青岛啤酒 8RMB");
System.out.println("2. 野格 88RMB");
System.out.println("3. 江小白 25RMB");
System.out.println("4. 乌苏 6RMB");
System.out.println("5. 1664 18RMB");
System.out.println("6. 下单");
}
/**
* 根据用户的选择,返回对应菜品的价格,如果选择6下单
*
* @param choose int数据类型,用户的选择
* @return 这里返回的数据是菜品的价格,返回0表示用户退出选择
*/
public static int orderDishes(int choose) {
int price = 0;
switch (choose) {
case 1:
System.out.println("1. 青岛啤酒 8RMB");
price = 8;
break;
case 2:
System.out.println("2. 野格 88RMB");
price = 88;
break;
case 3:
System.out.println("3. 江小白 25RMB");
price = 25;
break;
case 4:
System.out.println("4. 乌苏 6RMB");
price = 6;
break;
case 5:
System.out.println("5. 1664 18RMB");
price = 18;
break;
case 6:
System.out.println("6. 下单");
break;
default:
System.out.println("选择错误");
break;
}
return price;
}
}
/* 演示数组的定义和使用 */
class Demo2 {
public static void main(String[] args) {
/* 这里定义一个int类型的数组,数组的容量为10 */
int[] array = new int[10];
/*
给数组中下标为0的元素赋值
格式: 数组名[有效下标]
*/
array[0] = 10;
/*
给数组中下标为5的元素赋值
*/
array[5] = 20;
/*
给数组下标为10的元素赋值30
10 已经超出了有效下标范围 0 ~ 9
array[10] = 30;
*/
/*
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10
at Demo2.main(Demo2.java:22)
ArrayIndexOutOfBoundsException 数组下标越界异常
*/
/*
给数组中下标为-1的元素赋值为20
-1 已经超出了有效下标范围 0 ~ 9
*/
// array[-1] = 20;
/*
java.lang.ArrayIndexOutOfBoundsException: -1
*/
/*
取出数组中下标为0和下标为5的元素内容
*/
System.out.println("array[0] : " + array[0]);
System.out.println("array[5] : " + array[5]);
// System.out.println("array[4] : " + array[4]);
}
}
class Demo3 {
public static void main(String[] args) {
/* 定义一个int类型数组 容量为10 */
int[] arr = new int[10];
/*
数组名.length
获取当前数组的【容量 Capacity】,获取数组的【属性】
*/
for (int i = 0; i < arr.length; i++) {
// 给数组中每一个元素赋值操作
arr[i] = i + 1;
}
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
}