java基础-4 switch、case和数组

本文详细介绍了Java中switch语句的使用方法及其特性,包括case穿透性,并通过实例展示了如何利用这一特性简化代码。此外,还深入探讨了数组的概念、不同类型的数组声明方式及常见操作,包括一维数组和二维数组的遍历与运算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1 switch

1.1 if…else

1.2 switch特性: case的穿透性

2 数组

2.1 二维数组


1 switch

1.1 if…else

if…else语句来实现,但是由于判断条件比较多,实现起来代码过长,不便于阅读。Java中提供了一种switch语句来实现这种需求.

switch (表达式){
	case 目标值1:
		执行语句1
		break;
	case 目标值2:
		执行语句2
		break;
	......
	case 目标值n:
		执行语句n
		break;
	default:
		执行语句n+1
		break;
}

1.2 switch特性: case的穿透性

case 后面的常量,和switch中的数据相同,没有break,一直向下穿透
case 后面没有break。程序就会一直向下穿透

 

例如:当输入的数字为1、2、3、4、5时就视为工作日,否则就视为休息日

public class SwitchDemo02 { 
    public static void main(String[] args) { 
        int week = 2; 
        switch (week) { 
        case 1: 
        case 2: 
        case 3: 
        case 4: 
        case 5: 
           // 当 week 满足值 1、2、3、4、5 中任意一个时,处理方式相同 
           System.out.println("今天是工作日"); 
           break; 
        case 6: 
        case 7: 
           // 当 week 满足值 6、7 中任意一个时,处理方式相同 
           System.out.println("今天是休息日"); 
           break; 
        } 
    } 
} 

 

 

2 数组

它是一个用来存储同一个数据类型多个元素的一个容器(数组长度是固定的,数组中存储的元素的数据类型要求一致) 
格式: 

  格式1: 

    数据类型[] 数组名 = new 数据类型[数组长度]; 

    如:int[ ] x = new int[100]; 

  格式2: 

    数据类型[] 数组名 = new 数据类型[]{元素值1,元素值2,..}; 

  格式3: 

    数据类型[] 数组名 = {元素值1,元素值2,..}; 

数组操作的常见问题:

 (1)NullPointerException: 空指针异常

1  int[] arr = new int[3]; // 定义一个长度为3的数组
2  arr[0] = 5; // 为数组的第一个元素赋值
3  System.out.println("arr[0]=" + arr[0]); // 访问数组的元素
4  arr = null; // 将变量arr置为null
5  System.out.println("arr[0]=" + arr[0]); // 访问数组的元素

运行结果:

 

(2)ArrayIndexOutOfBoundsException: 数组越界异常。并且内存地址只能给一次,再给一次无效。

int[] arr = new int[4]; // 定义一个长度为4的数组
System.out.println("arr[0]=" + arr[4]); // 通过角标4访问数组元素

 

JVM对自己的内存进行了划分,分成5个区域
寄存器:内存和CPU之间
本地方法栈:JVM调用系统中的功能
方法和数据共享:运行时期class文件,进入的地方
方法栈:所有的方法运行的时候,进入的内存
堆:存储的是容器和对象

 

数组的内存图解:

 

2.1 二维数组

存储的是一维数组内存地址

定义格式:

方法1:int[][] arr = new int[3][4];

方法2:int[][] arr = new int[3][];

方法2:int[][] arr = {{1,2},{3,4,5,6},{7,8,9}};

例1:二维数组元素遍历与数组元素累加和:     

class ArrayDemo09 {
	public static void main(String[] args) {
		// 一维数组的求累加和并遍历
		int[] arr = { 10, 20, 30, 40, 50 };
		int sum = 0;
		for (int i = 0; i < arr.length; i++) {
			// System.out.println(arr[i]);
			sum += arr[i];
		}
		System.out.println("sum= " + sum);
		System.out.println("---------------------");
		// 二维数组的求累加和并遍历
		int[][] arr2 = { { 1, 2 }, { 3, 4, 5 }, { 6, 7, 8, 9, 10 } };
		int sum2 = 0;
		for (int i = 0; i < arr2.length; i++) {
			for (int j = 0; j < arr2[i].length; j++) {
				// System.out.println(arr2[i][j])
				sum2 += arr2[i][j];
			}
		}
		System.out.println("sum2= " + sum2);
	}
}
	public static void main(String[] args) {
		// 一维数组的求累加和并遍历
		int[] arr = { 10, 20, 30, 40, 50 };
		int sum = 0;
		for (int i = 0; i < arr.length; i++) {
			// System.out.println(arr[i]);
			sum += arr[i];
		}
		System.out.println("sum= " + sum);
		System.out.println("---------------------");
		// 二维数组的求累加和并遍历
		int[][] arr2 = { { 1, 2 }, { 3, 4, 5 }, { 6, 7, 8, 9, 10 } };
		int sum2 = 0;
		for (int i = 0; i < arr2.length; i++) {
			for (int j = 0; j < arr2[i].length; j++) {
				// System.out.println(arr2[i][j])
				sum2 += arr2[i][j];
			}
		}
		System.out.println("sum2= " + sum2);
	}
}

例2:公司销售总和练习:

例如要统计一个公司三个销售小组中每个小组的总销售额以及整个公司的销售额。如下所示

第一小组销售额为{11, 12}万元

第二小组销售额为{21, 22, 23}万元

第三小组销售额为{31, 32, 33, 34}万元。

public class ArrayArrayDemo_3 {

	public static void main(String[] args) {
		//
		int[][] arr = { { 11, 12 }, { 21, 22, 23 }, { 31, 32, 33, 34 } };
		int sum = 0;
		int groupSum = 0;
		for (int i = 0; i < arr.length; i++) {
			for (int j = 0; j < arr[i].length; j++) {
				groupSum += arr[i][j];
			}
			System.out.println(groupSum);
			sum += groupSum;
			groupSum = 0;
		}
		System.out.println(sum);
	}
}

例3:随机点名器:

1.存储全班同学名字

2.打印全班同学每一个人的名字

3.在班级总人数范围内,随机产生一个随机数,查找该随机数所对应的同学名字

import java.util.Random;

public class CallName {
	public static void main(String[] args) {
		// 存储姓名,姓名存储到数组中
		// 数组存储姓名,String
		String[] names = { "张三", "李四", "王五", "we", "hsaihau" };
		// 预览:遍历数组,打印所有姓名
		for (int i = 0; i < names.length; i++) {
			System.out.println(names[i]);
		}
		System.out.println("=====================");
		Random ran = new Random();
		// 随机数,范围0-数组的最大索引
		int index = ran.nextInt(names.length);
		System.out.println(names[index]);
	}
}

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值