java中关于switch语句,random类和数组的一些小知识

本文介绍了Java编程中switch语句的case穿透技巧以及JDK12后的新特性,同时详细讲解了Random类的使用、生成随机数的方法以及数组(包括静态和动态初始化、默认值、内存分配)的深入解析。
摘要由CSDN通过智能技术生成

switch语句

1.case穿透:

        语句体中没有写break导致的,程序会执行下一个case,直到遇到break或者}结束

使用场景:如果多个case的语句体重复了,可以考虑使用case穿透去简化代码。

switch (number){
    case 1:
    case 2:
    case 3:
        System.out.println("hello");
        break;
}

或者

switch (number){
    case 1,2,3:
        System.out.println("hello");
        break;
}

注:default可以省略,语法不会有问题,但不建议省略

2.switch新特性(jdk12后支持

正常写法:

int number = 1;
switch (number){
    case 1:
        System.out.println("one");
        break;
    case 2:
        System.out.println("two");
        break;
    case 3:
        System.out.println("three");
        break;
    default:
        System.out.println("none");
        break;
}

 采用switch新特性后-->用->{}代替,可以省略break

int number = 1;
switch (number){
    case 1->{
        System.out.println("one");
    }
    case 2->{
        System.out.println("two");
    }
    case 3->{
        System.out.println("three");
    }
    default -> {
        System.out.println("none");
    }
}

 特别的,如果case后语句体只有一行,{}也可以省略,从而进一步简化代码

int number = 1;
switch (number) {
    case 1 -> System.out.println("one");
    case 2 -> System.out.println("two");
    case 3 -> System.out.println("three");
    default -> System.out.println("none");
}

2.Random类

1.使用

①导包

import java.util.Random;

②创建对象

Random r=new Random();

③生成随机数

(在小括号中,书写的使随机生成数的范围,这个范围一定是从0开始的,到这个数-1结束

int number=r.nextInt(随机数的范围);

2.生成任意范围的随机数 

 如7~15 :

        ①让头和尾都减去一个值x,使这个范围从0开始--> (7~15)-7 -->0~8

        ②尾巴+1 -->8+1=9

        ③最终的结果,再加上第一步减去的值x

Random r=new Random();
int number=r.nextInt(9)+7;
System.out.println(number);

3.数组

1.静态初始化

①完整格式:

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

        如:int[] array = new int[]{1,2,3};

②简化格式:

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

        如:int[] array = {1,2,3};

2.扩展:解释地址值的格式含义

int[] array=new int[]{1,2,3};
System.out.println(array);//[I@4eec7777

[        :表示当前是一个数组

I        :表示当前数组里面的元素类型都是(I)int类型的

@     :表示一个间隔符号(固定格式) 

4eec7777         :数组真正的地址值

注:但平时我们习惯会把这个整体叫做数组的地址值

3.动态初始化和默认初始值

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

String[] arr=new String[5];
arr[0]="zhangsan";
arr[1]="lisi";
System.out.println(arr[0]);
System.out.println(arr[1]);
//此时arr[2]没有赋值,打印出来的是默认初始化值null
System.out.println(arr[2]);

数组默认初始化值:

        整数类型-->默认初始化0

        小数类型-->默认初始化0.0

        字符类型-->默认初始化'/u0000' 即空格

        布尔类型-->默认初始化false

        引用数据类型-->默认初始化null

4.栈空间与堆内存

数组初始化分三步:

        ①先在栈空间里开辟一个空间,变量名为数组名

        ②在堆内存中开辟一个空间,存放数组元素(new创建的,会在堆内存中开辟空间并产生地址)

        ③将堆内存中的地址值赋值给栈空间中的变量

int[] arr1={11,22};
// 这里arr2只在栈空间定义了一个名为arr2的变量,值为arr1所存储的地址值
// 并没有在堆内存中重新开辟一个空间,所以arr2和arr1的值一样,共用堆内存中的同一块区域
int[] arr2=arr1;
//修改前的值
System.out.println(arr1[0]);//11
System.out.println(arr2[0]);//11
arr2[0]=3;
//修改后的值
System.out.println(arr1[0]);//3
System.out.println(arr2[0]);//3

4.二维数组

1.静态初始化

①完整格式 

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

        int[][] arr = new int[][]{{1, 2, 3}, {4, 5, 6, 7, 8}};

注:二维数组中一维数组的长度可以是不一样的

②简化格式

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

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

为了方便阅读,我们习惯把每个一维数组单独写成一行

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

2.动态初始化

 数据类型[][] 数组名 = new 数据类型[m][n];

m表示这个二维数组,可以存放多少个一维数组

n表示每一个一维数组,可以存放多少个元素

注:在n给定情况下-->java会自动创建一维数组所有一维数组长度均一样,均为n,初始化默认值

int[][] arr = new int[3][4];
arr0][0] = 1;
for (int i = 0; i < arr.length; i++) {
    for (int j = 0; j < arr[i].length; j++) {
        System.out.print(arr[i][j] + " ");
    }
    System.out.println("");
}

运行结果:

 

特别的,如果n不给定,java将不会自动创建一维数组,此时arr[i]的值应为null

但优点在于更加灵活,一维数组长度可以随意构建,可以不一样长(new int[]不能省略)

int[][] arr = new int[2][];
System.out.println(arr[0]);//null
//但优点在于更加灵活,一维数组长度可以随意构建,可以不一样长(new int[]不能省略)
arr[0]=new int[]{11,22};
arr[1]=new int[]{33,44,55};
System.out.println(arr[0]);//[I@4dd8dc3
for (int i = 0; i < arr.length; i++) {
    for (int j = 0; j < arr[i].length; j++) {
        System.out.print(arr[i][j] + " ");
    }
    System.out.println("");
}

运行结果:

3.二维数组的内存图

①int[][] arr = new int[2][3];

②int[][] arr = new int[2][];

int[][] arr = new int[2][];

int[] arr1 = {11,22};

int[] arr2 = {44,55,66}

arr[0] = arr1;

arr[1] = arr2;

  • 15
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值