Java学习笔记(五)

本文详细介绍了Java中如何生成随机数,包括基本用法和应用实例,如猜数字游戏。接着讲解了数组的概念,包括动态初始化、静态初始化、数组访问、内存分配、多数组操作以及注意事项,并提供了具体的代码示例。此外,还展示了如何遍历数组和求数组最大值的方法。
摘要由CSDN通过智能技术生成

在完成对C语言的学习后,我最近开始了对C++和Java的学习,目前跟着视频学习了一些语法,也跟着敲了一些代码,有了一定的掌握程度。现在将跟着视频做的笔记进行整理。本篇博客是整理Java知识点的第五篇博客。

本篇博客介绍了Java的随机值和数组。

本系列博客所有Java代码都使用IntelliJ IDEA编译运行,版本为2022.1。所用JDK版本为JDK11

目录

随机数

数组

动态初始化

数组元素访问

内存分配

多个数组

静态初始化

数组操作的注意事项

遍历数组

求最大值


随机数

Java可以产生随机数。首先需要导包 import java.util.Random,然后需要创建一个Random类对象,格式是 Random r = new Random(),r是变量名称,可以更改。然后r.nextInt()可以获取一个随机整数。括号内需要一个整数类型参数,表示随机数的最大范围。如果是10,会产生0 - 9中的一个整数(不包括10)。获得1 -100中的一个数可以把参数设置为100,然后结果+1。

import java.util.Random;
public class randomnumber {
    public static void main(String[] args){
        Random r = new Random();
        int time = 0;
        for(time = 0; time < 10 ; time += 1){
            int number = r.nextInt(100)+ 1;
            System.out.println(number);
        }
    }
}

这段代码获取并输出10个1-100的随机数。

一次运行结果是

99
91
2
68
67
75
97
66
49
12

可以由此写一个简单的猜数字游戏。下面的程序产生一个1-100之间的随机数,要求用户输入数据进行猜数,并且在失败5次后判定失败。

import java.util.Scanner;
import java.util.Random;
public class guessnumber {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        Random r = new Random();

        int time = 0;
        int number = r.nextInt(100) + 1;
        int guess;

        System.out.print("Please enter the number: ");
        guess = sc.nextInt();

        while(true){
            if(guess > number){
                System.out.println("It is bigger");
            }else if( guess < number){
                System.out.println("It is smaller");
            }else{
                System.out.println("You are right");
                break;
            }

            time += 1;
            if(time >= 5){
                System.out.println("You have failed!");
                System.out.println("The answer is " + number);
                break;
            }
            System.out.print("Please enter again: ");
            guess = sc.nextInt();
        }
    }
}

下面是一次运行结果

Please enter the number: 5
It is smaller
Please enter again: 55
It is bigger
Please enter again: 35
It is bigger
Please enter again: 22
It is bigger
Please enter again: 10
It is smaller
You have failed!
The answer is 16

下面是一次运行结果

Please enter the number: 85
It is bigger
Please enter again: 25
It is bigger
Please enter again: 12
It is smaller
Please enter again: 17
It is smaller
Please enter again: 22
You are right

数组

数组是用来存储多个相同类型数据的存储模型。

数组定义格式:

数据类型[] 变量名

也可以是:

数据类型 变量名[]

数组必须先初始化,才能使用。初始化就是为数组元素分配内存空间,并为元素赋值。数组初始化包括动态初始化静态初始化

动态初始化

动态初始化在初始化时只指定数组长度,由系统分配初始值。

动态初始化格式为 

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

new申请内存空间。

数组元素访问

数组变量可以直接通过数组名访问。访问数组内部数据的方式是数组名[索引]。

索引是数组中数据的编号方式,索引从0开始,依次递增,最大值是数组大小-1。

内存分配

Java程序在运行时,需要分配空间,为了提高效率,对空间进行了不同区域的划分。每一片区域有特定的处理数据方式和内存管理方式。

内存存储局部变量,使用完毕立即消失。

内存存储new出来的内容(实体、对象)。每个new出来的东西都有一个地址值。使用完毕后在垃圾回收器空闲时回收。

数组初始化时,会为存储空间添加默认值,整数为0,浮点数为0.0,布尔值为false,字符为空字符,引用数据类型为null

字符串、数组、对象等是引用数据类型。

下面程序创建了一个数组,但是首先没有赋初始值,然后给部分元素赋值。

public class arrcreate1 {
    public static void main(String[] args){
        int[] arr = new int[3];
        System.out.println(arr);
        System.out.println(arr[0]);
        System.out.println(arr[1]);
        System.out.println(arr[2]);

        arr[0] = 10;
        arr[2] = 20;
        System.out.println(arr);
        System.out.println(arr[0]);
        System.out.println(arr[1]);
        System.out.println(arr[2]);
    }
}

下面是输出结果

[I@3ac3fd8b
0
0
0
[I@3ac3fd8b
10
0
20

第一行和第四行的数据会变化。

多个数组

下面的程序创建了两个数组

public class arrcreate2 {
    public static void main(String[] args){
        int[] arr1 = new int[2];
        int[] arr2 = new int[3];

        System.out.println(arr1);
        System.out.println(arr1[0]);
        System.out.println(arr1[1]);

        System.out.println(arr2);
        System.out.println(arr2[0]);
        System.out.println(arr2[1]);
        System.out.println(arr2[2]);

        arr1[0] = 100;
        arr2[0] = 200;
        arr2[2] = 300;
        System.out.println(arr1);
        System.out.println(arr1[0]);
        System.out.println(arr1[1]);

        System.out.println(arr2);
        System.out.println(arr2[0]);
        System.out.println(arr2[1]);
        System.out.println(arr2[2]);
    }
}

下面是输出结果(省略了一些换行,以空格代替):

[I@3ac3fd8b   0   0
[I@5594a1b5   0   0   0
[I@3ac3fd8b   100   0
[I@5594a1b5   200   0   300

多个数组可能指向同一块内存,此时通过一个数组名就可以修改数据。定义数组时,可以指向原先的数组(等号后为已定义的数组名),此时不开辟新空间。随后可以通过此数组修改原数组的成员。

public class arrcreate3 {
    public static void main(String[] args){
        int[] arr1 = new int[3];
        arr1[0] = 100;
        arr1[1] = 200;
        arr1[2] = 300;

        System.out.println(arr1);
        System.out.println(arr1[0]);
        System.out.println(arr1[1]);
        System.out.println(arr1[2]);

        int[] arr2 = arr1;
        arr2[0] = 111;
        arr2[1] = 222;
        arr2[2] = 333;
        System.out.println(arr1);
        System.out.println(arr1[0]);
        System.out.println(arr1[1]);
        System.out.println(arr1[2]);
        System.out.println(arr2);
        System.out.println(arr2[0]);
        System.out.println(arr2[1]);
        System.out.println(arr2[2]);

    }
}

下面是输出结果(省略了一些换行,以空格代替):

[I@5594a1b5   100   200   300
[I@5594a1b5   111   222   333
[I@5594a1b5   111   222   333

后两行的输出一致。

静态初始化

静态初始化在初始化时指定每个元素的初始值,由系统决定数组长度。

格式: 数据类型[] 变量名 = new 数据类型[]{值1,值2,值3...}

也可以写成:数据类型[] 变量名 = {值1,值2,值3...}

这段代码使用静态初始化

public class arrcreate4 {
    public static void main(String[] args){
        int[] arr = new int[]{1,2,3};
        System.out.println(arr);
        System.out.println(arr[0]);
        System.out.println(arr[1]);
        System.out.println(arr[2]);
    }
}

程序的输出为

[I@3ac3fd8b
1
2
3

数组操作的注意事项

不要访问数组中不存在的索引对应的元素,否则会造成索引越界。

不要访问数组中不再指向堆内存的数据,否则会造成空指针异常。

null是空值,是引用数据类型的默认值,表示不指向任何有效对象。

遍历数组

数组名.length获取数组的长度。

public class arrtest1 {
    public static void main(String[] args){
        int[] arr = new int[]{11,22,33,44,55};
        int i;
        for(i = 0;i < arr.length;i += 1){
            System.out.println(arr[i]);
        }
    }
}

程序对数组进行遍历输出,输出结果为:

11
22
33
44
55

求最大值

public class arrtest2 {
    public static void main(String[] args){
        int[] arr = new int[]{12,45,98,73,60};
        int max = arr[0];

        int i;
        for(i = 0;i<arr.length;i+=1){
            if(arr[i] > max){
                max = arr[i];
            }
        }
        System.out.println("The max is " + max);
    }
}

输出结果为

The max is 98
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值