Day004_数组

 


1. 数组

1. 数组概念:数组(array)是一种容器,用来存储同种数据类型的多个数据。

2. 数组特点:

  可以存储多个数据

  多个数据的类型必须保持一致

  数组的长度一旦确定,将永远不可以发生改变

3. 数组的定义格式:

复制代码
//  静态初始化
// 格式一: 
int[] array = new int[]{1,2,3};

// 格式二:
int array2[] = new int[]{1,2,3};

// 格式三:
int[] array3 = {1,2,3};

// 动态初始化
// 格式一:
int[] array = new int[3];

// 格式二:
int array2[] = new int[3]; 
复制代码

第一种初始化方式:

  • 左侧数据类型: 表示该数组容器中可以存储什么类型的数据
  • 左侧[] : 代表数组的意思
  • 数组名称: 就是一个标识符,方便使用数组
  • = : 表示赋值的意思,把=号右侧的数组容器在内存中的地址值,赋值给=号左侧的数组变量
  • new : JVM在内部创建数组的过程
  • 右侧数据类型: 和左侧保持一致
  • 长度: 规定了数组容器中可以存储多少个数据

4. 数组内存分配

  • 栈内存: 运行方法的,存储方法中定义的变量的
  • 堆内存: 存储的是所有new出来的内容

  栈存储变量,堆存储变量值。堆内存把变量赋给变量时不会直接把值给变量,会生成一个地址值,把地址值赋值给变量。

  java 取值根据下标取值,从 0 开始。例如:arr数组中第一个值100的下标为0,200的下标为1,400的下标为3。

int[] arr = new int[]{100,200,300,400};
int[] arr2 = new int[]{10,20,30,40};

 

 

5. 数组赋值和打印:

复制代码
int[] array = new int[3];
array[0] = 10; // 赋值数组第一个值为:10
// 取值并打印
System.out.println("数组第一个值:" + array[0]);
// array.length 是数组的长度
System.out.println("数组长度:" + array.length);

//数组赋值
for (int i = 0; i < array.length; i++) {
    array[i] = i * 100 + 100;
}

// 打印数组
for (int i = 0; i < array.length; i++) {
    System.out.println("数组第" + (i + 1) + "个值是:" + array[i]);
}
复制代码

 

 练习:

 利用随机数产生一组双色球,其实就是由两组指定范围的的数字组成
  1.有6个红球: 1到33 包含1和33 [1,33] -> [0,32] + 1 -> [0,33) + 1-> r.nextInt(33)+1
  2.有1个蓝球: 1到16 包含1和16 [1,16] -> [0,15] + 1 -> [0,16) + 1-> r.nextInt(16)+1
  3.这7个数字打印在一行上每个数字之间用空格隔开

  打印效果如下:
  13 1 8 13 19 15 10

复制代码
package com.itheima;

import java.util.Scanner;
import java.util.Random;

public class ZuoYe {
    public static void main(String[] args) {
        tiMuLiu();

    }

    public static void tiMuLiu() {
        // 创建 Random 对象
        Random r = new Random();
        // 定义 int[] 数组
        int[] arr = new int[7];
        // 循环添加 6个红球
        for (int i = 0; i < arr.length - 1; i++) {
            // 打印随机数并添加到数组
            arr[i] = r.nextInt(33) + 1;
            // 循环判断是否有重复数字 当 j<i 时说明数据大于 1个
            for (int j = 0; j < i; j++) {
                // 判断已经添加的值 和现在的值是否一样
                if (arr[j] == arr[i]) {
                    System.out.println("arr[j] : " + arr[j] + "\t" + j);
                    System.out.println("arr[i] : " + arr[i] + "\t" + i);
                    // 一样这个值的下标减 1,下标不变再重新赋值。
                    i--;
                    // 有重复数据,后边数据不用循环了,结束当前循环。
                    break;
                }
            }
        }
        // 添加一个篮球。
        arr[arr.length - 1] = r.nextInt(16) + 1;
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + " ");
        }
    }
}
复制代码

 

posted @   Amoヽ柠檬  阅读(24)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· SpringCloud带你走进微服务的世界
点击右上角即可分享
微信分享提示