java 一维数组

一维数组

  • 数组是引用数据类型

数组的理解

数组

数组:一个变量可以存一组(0~n)个相同类型值的数据类型。(数组是具有相同数据类型并且按照一定的次序排列的一组变量的集合体)。``java`为数组分配一段连续的空间(存储数据的个数是一定的)。

数组元素

构成数组的每一个元素

数组下标

表示元素在数组中的位置,用整数表示,从0开始

数组的大小

数组中元素的个数

使用数组

数组的使用步骤:

1.定义数组

2.为数组分配内存

3.数组元素初始化

4.使用数组

使用数组:

1.定义数组

例:

int arr[];
int[] arr;
  • 定义数组相当于向JVM申请内存

  • JVM 将数组的名称存储在栈(先进后出的数据结构)中,数组名在栈底

  • 内存编号是由JVM分配的,是16进制表示,0x开头

2.为数组分配内存

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

例:

arr = new int[10];
  • [10]表示数组长度是10
  • new 关键字是在 堆(heap)内存中开辟空间.数组的长度就固定了

定义数组和分配内存空间可以写成一步:

int[] arr = new int[5]; 

image-20230808112500926

3.数组元素初始化

  • 初始化第一次赋值的意思

  • 没有初始化,也有默认值

    image-20230807164942813

数组名[下标] = 值

例:通过下标给数组赋值

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


    }
}

image-20230807165501777

  • 定义数组、分配内存、数组元素初始化可以写成一步
int[] 数组名 = new 数据类型[] {值1,值2....}
int[] 数组名 ={值1,值2.....}

例:

int[] arr1 = new int[]{1, 2, 3, 4, 5, 6};
int[] arr2 = {1, 2, 3, 4};
  • 数组的长度由{ }中元素的个数决定

4.使用数组

例:输入十位同学的成绩并且输出

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

        int[] arr = new int[5];
        for (int i = 0;i<arr.length;i++){
            System.out.printf("请输入第 %d 位同学成绩:",i+1);
            arr[i] = sc.nextInt();
        }
        //遍历数组
        for(int i = 0;i < arr.length;i++){
            System.out.println(arr[i] +"\t");

        }    }
}
System.out.println(arr[i] +"\t");
  • "t"是字符串,'t’是字符会进行数值运算。

增强循环

for(元素类型 变量名 :要迭代的对象){

}

例:用增强循环遍历数组元素

public class ArrayDemo {
    public static void main(String[] args) {
        int[] arr ={13,26,7,65,43};
        for( int item: arr){
            System.out.println("数组的元素依次是:"+item);

        }
    }
}

随机数/伪随机数

Random  random.nextInt(value)   [0, value)
Math.random()  0 ~ 1   [0, 1)
例:
random.nextInt(40) 
  • 表示取0~40的随机数,包括0,不包括40
public class ArrayDemo {
    public static void main(String[] args) {
        
        Random random = new Random();

        // 取 1 ~ 40
        for (int i = 0; i < 10; i ++){
            System.out.println(random.nextInt(40) + 1);
//            System.out.println((int)(Math.random() * 40 + 1));
        }
    }
}

image-20230807193734874

二分查找

import java.util.Random;
import java.util.Scanner;
public class ArrayDemo {
    public static void main(String[] args) {
        Random random = new Random();
        int n = random.nextInt(100);
        Scanner sc = new Scanner(System.in);
        for(int i = 1;i < 7;i++) {
            System.out.println("请输入你猜的数字" );
            int b = sc.nextInt();
            if (b == n){
                System.out.println("你猜对了");
            } else if (b >n) {
                System.out.println("你猜大了");
            } else if (b < n) {
                System.out.println("你猜小了");
            }
        }

    }
}

image-20230807200245502

异常

1.下标越界

public class ArrayDemo {
    public static void main(String[] args) {
        int[] arr = new int [5];
        arr [5] = 89;
    }
}

image-20230807200551724

  • 下标超出数组大小
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值