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] + " "); } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· SpringCloud带你走进微服务的世界