java_Day09知识总结

方法总结和数组初识

1 方法的三要素

返回值类型:当前方法运行之后的数据产出
方法名: 明确告知用户这里运行的方法是哪一个,执行的效果会怎么样。
形式参数列表:方法运行所需的外来数据,方法运行的必要条件。

1.1 方法名

规范:
1. 只能用英文字母(A ~ Z a ~ z), 数字(0 ~ 9),还有下划线 _
2. 见名知意,动宾结构
好的代码从方法名开始
3. 小驼峰命名法
行为规范
setXXX
getXXX
remove
add
delete
update
attribute

1.2 返回值类型

返回值:
1. 没有什么必要和不必要,需求分析过程
2. 返回值的数据类型
3. 返回值的数据含义
4. 返回值每一次有且只能返回一个数据

1.3 形式参数列表

做菜:酱牛肉
	牛肉,葱,姜,蒜,料酒,八角,花椒,麻椒,辣椒,小茴香,香叶,桂皮,
	山奈,老抽,冰糖,耗油,黄豆酱(形式参数,实际需要但只是假想,并不存在)
	实际参数:牛肉两斤,葱一根。。。

形式参数实际上是在对于方法分析过程中,了解方法运行需要必要参数,并且在参数使用必要性上做论证。

2 方法的完成过程

  1. 需求分析
    方法名,形式参数列表,返回值类型

  2. 考虑方法的执行流程
    可以采用注释辅助完成方法的执行流程

  3. 实现代码
    按照注释完成代码
    【不要头铁】【不要自大】【认清自我】
    【知错就改】

  4. 验证
    代码运行验证,正确参数情况,运行结果怎么样
    错误参数是,代码反馈是什么
    代码的稳定性,健壮性,安全性
    【方法中需要使用参数合法性判断】

3 数组

3.1 生活中的数组

图书馆:
1. 社科类,文学类,管理类,小说类,历史类,语言类
2. 相同的书籍会存放于一个书架上 【同一个位置】
3. 每一本书都要有一个唯一的编号 【同样的称呼】 W-101
4. 同一本有10本,都会有一个唯一的索引
W-101-01 ~ W-101-10 【唯一索引】

通过图书馆我们可以概括
1. 存储位置一致,并且连续
2. 有统一的称呼,方便管理
3. 存在唯一索引,具有一定的唯一性

3.2 java中创建数组的方式

案例
    int[] array = new int[10];
/*
赋值号左侧:
	int:
		告知编译器,这里创建定义的是一个int类型数组,有且只能保存int类型数据,保
		证数据类型一致化
	[]:
		1. 告知编译器,当前定义的数据类型是一个数组类型
		2. 数组名 array是一个【引用数据类型】
	array:
		1. 这里是一个数组名,操作数组的核心数据!!!就是一个变量名
		2. 数组名 array是一个【引用数据类型】

赋值号右侧:
	new:
		new关键字需要在计算机中申请【连续内存空间】,这块区域在内存的【堆区】
		【生活案例】这里就好比,顾客找仓库管理员申请货架,管理员一定是给你一个整
		个连续区域给你使用
	int:
		前后呼应,告知编译器这里能够存储的数据类型是int类型,其他类型都不可以,要
		求数据类型一致化
	[10]:
		告知编译器,当前数组的【容量 Capacity】是多少,这里是10,也就是说当前数
		组中有且只能保存10个int类型数据
*/

3.3 引用数据类型

引用在生活中很常见,比如 文献中引用,文言文注解引用,广告角标上标引用,这些目的,引入其他的内容,其他的文献,其他的操作... 
引用存在的一定的【指向性】

取快递
快递小哥如何知道你的地址在哪里???
根据快递单上的地址,联系方式和姓名来找到你的位置。
快递单这里也存在一定的【指向性】

快递单中存有一个非常重要的数据【地址】

开发中的【引用数据类型】,实际上是一个指向其他内存空间的一个数据类型。引用数据类型的变量中存储的内容是其他内存空间的【首地址】。
当CPU访问到【引用数据类型】变量时,会得到其存储的地址,然后直接跳转到对应的内存空间中,执行代码,获取数据,操作内容...

3.4 定义数组和使用

定义数组:
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]);
		}
	}
}

3.5 数组内存分析图

java_Day09知识总结_第1张图片
java_Day09知识总结_第2张图片

4 练习题

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]);
	}
}

java_Day09知识总结_第3张图片

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;
    }
}

java_Day09知识总结_第4张图片

/* 演示数组的定义和使用 */
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]);
		}
	}
}

你可能感兴趣的:(java)