第四天:数组
day04 数组
学习目录
熟悉数组定义
(资料图片仅供参考)
掌握数组初始化
动态初始化
静态初始化
掌握数组相关操作
索引
求数组长度
遍历数组
求最大值
求最小值
求和
求平均值
冒泡排序
数组数组操作中出现问题
索引越界异常
空指针异常
了解数组的内存图
java 内存结构
单个数组的内存图
多个数组指向各自堆内存的内存图
多个数组指向同一个堆内存的内存图
1.数组定义和定义格式
数组是一个容器用来存储相同数据类型数据的容器 格式: 数据类型 [] 数组名; int [] arr; 数据类型 数组名 []; int arr[]
2.数组的初始化
2.1数组动态初始化
2.1.1数组动态初始化的格式
/* 动态初始化格式: 数据类型 [] 数组名 = new 数据类型[长度]; //必须是>=0正整数 int [] arr = new int[3]; //定义一个能够存储 int类型相匹配的数据长度为3的数组 */public class Demo01 { public static void main(String[] args) { int [] arr = new int[3]; System.out.println(arr); //[I@119d7047 /* [I@119d7047 [: 这个地址是数组的 I:int类型 @:分隔符 119d7047:数组在内存中16进制地址 */ }}
2.2动态初始化数组的操作
2.2.1动态初始化数组取值
/* 动态初始化数组取值: 格式:数组数据类型 变量名 = 数组名[索引]; 索引: 索引就是数中每个初始化空间的编号,索引从0开始 到数组长度减一 ,索引是连续的,每次递增一 动态初始化数组有默认: byte short int long 类型的数组有默认值 0 float double 类型的数组有默认值 0.0 char 类型的数组有默认值 '\u0000' boolean 类型的数组有默认值 false 引用数据类型数据有默认值: null */public class Demo02动态初始化数组取值 { public static void main(String[] args) { int [] arr = new int[3]; System.out.println(arr); //[I@119d7047 //数组索引 就是 0 1 2 //格式:数组数据类型 变量名 = 数组名[索引]; int a = arr[0]; System.out.println(a); int b = arr[1]; System.out.println(b); int c = arr[2]; System.out.println(c); System.out.println("--------"); byte[] brr = new byte[3]; System.out.println(brr[0]); System.out.println(brr[1]); System.out.println(brr[2]); System.out.println("--------"); short[] crr = new short[3]; System.out.println(crr[0]); System.out.println(crr[1]); System.out.println(crr[2]); System.out.println("--------"); long[] drr = new long[3]; System.out.println(drr[0]); System.out.println(drr[1]); System.out.println(drr[2]); System.out.println("--------"); float[] err = new float[3]; System.out.println(err[0]); System.out.println(err[1]); System.out.println(err[2]); System.out.println("--------"); double[] frr = new double[3]; System.out.println(frr[0]); System.out.println(frr[1]); System.out.println(frr[2]); System.out.println("--------"); char[] grr = new char[3]; System.out.println(grr[0]); System.out.println(grr[1]); System.out.println(grr[2]); System.out.println("--------"); boolean[] hrr = new boolean[3]; System.out.println(hrr[0]); System.out.println(hrr[1]); System.out.println(hrr[2]); System.out.println("--------"); String[] srr = new String[3]; System.out.println(srr[0]); System.out.println(srr[1]); System.out.println(srr[2]); }}
2.2.2数组遍历
/* 动态初始化数组的遍历: 1.索引是连续的,每次递增一 2.使用循环遍历获取数组的索引 3.根据索引获取值 */public class Demo03动态初始化数组的遍历 { public static void main(String[] args) { //定义长度为5的数组 int [] arr = new int[5]; System.out.println(arr); /*System.out.println(arr[0]); System.out.println(arr[1]); System.out.println(arr[2]); System.out.println(arr[3]); System.out.println(arr[4]);*/ for (int i = 0; i < 5; i++) { //打印索引// System.out.println(i); System.out.println(arr[i]); } }}
2.2.3动态初始化数组的赋值
/* 动态初始化数组的赋值: 格式: 数组名[索引] = 值; */public class Demo04动态初始化数组的赋值 { public static void main(String[] args) { int [] arr = new int[3]; // 数组名[索引] = 值; arr[0] = 10; arr[1] = 20; arr[2] = 30; //使用for循环遍历数组 取值 for (int i = 0; i < 3; i++) { System.out.println(arr[i]); } }}
2.3数组静态初始化
2.3.1数组静态初始化格式
/* 数组静态初始化格式: 格式1: 数据类型 [] 数组名 = new 数据类型[]{... ...} int [] arr = new int[]{1,2,3,4,5,6,7,8,9}; 格式2: 数据类型 [] 数组名 = {... ...} int [] arr = {1,2,3,4,5,6,7,8,9}; 静态初始化数组用来存放已知值 求数组的长度: 格式:数组名.length 遍历数组的通用格式: for (int i = 0; i < 数组名.length; i++) { System.out.println(数组名[i]); } */public class Demo05数组静态初始化格式 { public static void main(String[] args) { //数据类型 [] 数组名 = new 数据类型[]{... ...} int[] arr = new int[]{1, 2, 3, 4, 5, 6, 7, 8, 9}; //数据类型 [] 数组名 = {... ...} int[] brr = {1, 2, 3, 4, 5, 6, 7, 8, 9}; //遍历数组 for (int i = 0; i < 9; i++) { System.out.println(brr[i]); } System.out.println("----------------------------"); int[] crr = {1, 2, 3, 4, 5, 6, 7, 8, 9}; //求数组的长度:格式:数组名.length// int length = crr.length;// System.out.println(length); for (int i = 0; i < crr.length; i++) { System.out.println(crr[i]); } }}
2.4数组操作
2.4.1 求和
/* 需求:某部门5名员工的销售额分别是:16、26、36、6、100,请计算出他们部门的总销售额。 分析: 1.定义变量用来存储最终和 2.遍历数组获取数组中的每一个元素 3.累加求和 4.输出最终和 */public class Demo01 { public static void main(String[] args) { int [] arr = {16,26,36,6,100}; //1.定义变量用来存储最终和 int sum = 0; //2.遍历数组获取数组中的每一个元素 for (int i = 0; i < arr.length; i++) { //3.累加求和 sum+= arr[i]; } //4.输出最终和 System.out.println("总销售额:"+sum+"万元"); }}
2.4.2 求最大值
/* 数组元素求最大值: int[] faceScores = {15, 9000, 10000, 20000, 9500, -5}; 分析: 1.先定义最大值 ,最大值从数组取,默认取第一个 2.遍历数组获取数组中的每一个元素 3.和最大值比较,如果比最大值还要大,跟新最大值 4.求出最大值并输出 */public class Demo02 { public static void main(String[] args) { int[] faceScores = {15, 9000, 10000, 20000, 9500, -5}; //1.先定义最大值 ,最大值从数组取,默认取第一个 int max = faceScores[0]; //2.遍历数组获取数组中的每一个元素 for (int i = 0; i < faceScores.length; i++) { //3.和最大值比较,如果比最大值还要大,跟新最大值 if (faceScores[i]>max){ max = faceScores[i]; } } //4.求出最大值并输出 System.out.println("颜值最高的美女是:"+max); }}
2.4.3 求最小值
/*` 数组元素求最小值: 1.定义一个最小值,最小值从数组中取,默认是第一个元素 2.遍历数组,获取中的每一个元素 3.和最小值比较,如果比最小值还要小,就更新最小值 4.求出最小值并输出 */public class Demo03 { public static void main(String[] args) { int[] arr = {10, 20, 98, 78, 2, 5}; //1.定义一个最小值,最小值从数组中取,默认是第一个元素 int min = arr[0]; //2.遍历数组,获取中的每一个元素 for (int i = 0; i < arr.length; i++) { //3.和最小值比较,如果比最小值还要小,就更新最小值 if (arr[i]<min){ min = arr[i]; } } //4.求出最小值并输出 System.out.println("数组中元素的最小值:"+min); }}
2.4.4 数组随机排序
/* 某公司开发部5名开发人员,要进行项目进展汇报演讲,现在采取随机排名后进行汇报。请先依次录入5名员工的工号,然后展示出一组随机的排名顺序。 22 33 35 13 88 分析: 1.先使用数组 存储 员工号 int [] arr = {22,33,35,13,88} 2.定义新的数组 int [] brr = new int[arr.length]; 3.生成随机数 取值范围 0 -- 4 4.使用随机数当做索引 从arr数组取出元素存放到brr 数组中【提示判断工号是否已经被存储】 */public class Demo04 { public static void main(String[] args) { //1.先使用数组 存储 员工号 int[] arr = {22, 33, 35, 13, 88}; //2.定义新的数组 int[] brr = new int[arr.length]; //3.生成随机数 取值范围 0 -- 4 Random random = new Random(); for (int i = 0; i < arr.length; i++) { //获取随机数 取出随机数对应的数组中元素 int id = arr[random.nextInt(5)]; //引入第三方变量 判断数字是否被使用 默认是没有被使用 boolean falg = true; //判断id 是否在brr中 for (int j = 0; j < brr.length; j++) { int x = brr[j]; if (x == id) { falg = false; i--; break; } } if (falg) { brr[i] = id; } } System.out.println(Arrays.toString(brr)); }}
2.4.5 冒泡排序
import java.util.Arrays;/* 1.相邻的两个数据 两两比较如果前面大于后面的就交换位置 2.第一轮交换完成后,确定最大值 3.数组有多长,我们就是交换多少轮 */public class Demo05 { public static void main(String[] args) { int [] arr = {5,4,3,2,1}; for (int j = 0;j < arr.length; j++) { for (int i = 0; i < arr.length-1 -j; i++) { if (arr[i]>arr[i+1]){ int temp = arr[i]; arr[i] = arr[i+1]; arr[i+1] = temp; } } System.out.println("第"+(j+1)+"轮交换结果:"+Arrays.toString(arr)); } System.out.println(Arrays.toString(arr)); }}
3.数组的内存图
3.1java的内存分配
/* java的内存结构: 栈:方法运行时所进入的内存 堆:new 出来的东西会在这块内存中开辟空间并产生地址 方法区:字节码文件加载时进入的内存 本地方法栈:和操作系统交互 程序计数器:每个线程都拥有一个独立的程序计数器,用于记录当前线程所要执行的字节码指令,该类内存区域为“线程私有”内存 寄存器:和cpu相关 */public class Demo01 {}
3.2单个数组的内存图
/* 单个数组指向自己的堆内存,无论如何修改数据,最后取值的时候,取得是修改后的最新值 */public class Demo02 { 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[1] = 20; arr[2] = 30; System.out.println(arr); System.out.println(arr[0]); System.out.println(arr[1]); System.out.println(arr[2]); }}
3.3多个数组的内存图 指向各自的堆内存
/*多个数组指向各自的堆内存,无论如何修改自己的堆内存中数据,再去取值的时候,取得是修改后的最新值 */public class Demo03 { public static void main(String[] args) { int[] arr = new int[2]; System.out.println(arr); System.out.println(arr[0]); System.out.println(arr[1]); arr[0] = 10; arr[1] = 20; System.out.println(arr); System.out.println(arr[0]); System.out.println(arr[1]); int[] brr = new int[2]; System.out.println(brr); System.out.println(brr[0]); System.out.println(brr[1]); brr[0] = 11; brr[1] = 22; System.out.println(brr); System.out.println(brr[0]); System.out.println(brr[1]); }}
3.4多个数组的内存图 指向同一片的堆内存
/* 多个数组指向同一个对内存,无论谁修改堆内存中的数据,后来取值的时候取得是修改后的最新值 */public class Demo04 { public static void main(String[] args) { int[] arr = new int[2]; arr[0] = 10; arr[1] = 20; System.out.println(arr); System.out.println(arr[0]); System.out.println(arr[1]); int[] brr = arr; System.out.println(brr); System.out.println(brr[0]); System.out.println(brr[1]); brr[0] = 11; brr[1] = 22; System.out.println(brr); System.out.println(brr[0]); System.out.println(brr[1]); System.out.println(arr); System.out.println(arr[0]); System.out.println(arr[1]); }}
4.数组操作中常见问题
public class Demo01 { public static void main(String[] args) { int [] arr = new int[3]; //访问了不存在索引 ArrayIndexOutOfBoundsException //System.out.println(arr[3]);//ArrayIndexOutOfBoundsException// arr[5] = 20; arr = null;// arr[0] = 10; //NullPointerException }}
标签:
-
2022-02-07 14:57:45
奇迹!绝杀!女足亚洲杯逆转夺冠!<
刚刚,中国女足上演逆转绝杀奇迹!她们在亚洲杯决赛中3:2力克韩国队,时隔16年再夺亚洲杯冠军!
-
2022-02-07 14:57:45
中国政府与阿根廷共和国政府签署共建“一带一路”谅解备忘录<
新华社北京2月6日电(记者安蓓)国家发展改革委6日称,国家发展改革委主任何立峰与阿根廷外交、国际贸易和宗教事
-
2022-02-07 14:57:43
中华人民共和国和阿根廷共和国关于深化中阿全面战略伙伴关系的联合声明(全文)<
新华社北京2月6日电中华人民共和国和阿根廷共和国关于深化中阿全面战略伙伴关系的联合声明一、应中方邀请,阿根廷
-
2022-02-07 14:57:40
春节假期国内旅游出游2.51亿人次<
春节遇冬奥,旅游年味浓。根据文化和旅游部数据中心测算,2022年春节假期7天,全国国内旅游出游2 51亿人次,同比
-
2022-02-07 14:57:40
中吉签署关于经典著作互译出版的备忘录 开启两国人文交流互鉴新阶段<
新华社北京2月6日电(记者史竞男)国家主席习近平6日会见来华出席北京2022年冬奥会开幕式的吉尔吉斯斯坦总统扎帕
-
2023-05-16 12:08:02
第四天:数组
day04数组学习目录熟悉数组定义掌握数组初始化动态初始化静态初始化掌握数组相关操作索引求数组长度遍历数
-
2023-05-16 11:53:46
中消协:加大对虚假宣传等侵害消费者合法权益行为的打击力度 让消费者愿消费
【中消协:加大对虚假宣传等侵害消费者合法权益行为的打击力度让消费者愿消费】当前我国消费者权益保护工作
-
2023-05-16 11:19:22
淘宝虚假发货赔偿规则2023 淘宝虚假发货|世界热点评
今天来聊聊关于淘宝虚假发货赔偿规则2023,淘宝虚假发货的文章,现在就为大家来简单介绍下淘宝虚假发货赔偿
-
2023-05-16 10:57:07
价格11日连涨 交易再度活跃 碳酸锂景气度有望持续回升 热门
接连的“万元级”上涨,让跌了大半年的碳酸锂价格似有“卷土重来”之势。上海钢联5月15日数据显示,当日电
-
2023-05-16 10:24:05
海通证券与交银金租签署战略合作协议_通讯
5月15日上午,海通证券、交银金融租赁有限责任公司举办战略合作协议签约仪式。海通证券董事长周杰表示,希
-
2023-05-16 09:54:11
国家级医学人工智能赛事启动 直击临床应用需求
5月12日,第一届中国数字健康创新应用大赛——医学人工智能主题赛启动会在浙江杭州举办。此次主题赛将聚焦
-
2023-05-16 09:17:00
win7怎么锁屏快捷键(win7锁屏快捷键)
1、对于Win7系统的使用,我相信电脑用户应该都不陌生,因为在长期的使用中,对Win7系统也有了一定的了解。2
-
2023-05-16 09:05:25
世界新资讯:南昌到九江
驾车路线:全程约130 1公里,2小时5分钟起点:南昌市1 南昌市内驾车方案1)从起点向东北方向出发,行驶140米,右
-
2023-05-16 08:15:18
通策医疗:5月15日融资买入2339.54万元,融资融券余额15.57亿元
5月15日,通策医疗(600763)融资买入2339 54万元,融资偿还2122 54万元,融资净买入217 0万元,融资余额15 43亿元。
-
2023-05-16 07:46:54
当前速递!深交所与中国电子签署战略合作协议
5月15日,深交所与中国电子信息产业集团有限公司(简称中国电子)在2015年全面深化战略合作基础上,签署了
-
2023-05-16 06:27:11
厦门居民消费价格4月同比上涨0.5%
昨日,国家统计局厦门调查队发布最新数据显示,今年4月,厦门市居民消费价格(CPI)环比由3月下降0 2%转为上
-
2023-05-16 05:44:09
环球观点:当日快讯:龙虎榜丨江中药业今日跌停,沪股通专用买入5367.96万元并卖出5071.93万元
5月15日,江中药业今日跌停,龙虎榜数据显示,上榜营业部席位全天成交62亿元,占当日总成交金额比例为478%
-
2023-05-16 03:56:47
结节性甲状腺肿是什么意思严重吗_结节性甲状腺肿是什么意思-世界视点
1、你好结节性甲状腺肿(nodulargoiter) 甲状腺结节是一种常见的甲状腺病症 结节性甲状腺肿是一种良性疾
-
2023-05-16 01:03:51
射精带血一般是什么原因引起的怎么治疗_射精带血一般是什么原因引起的-环球新要闻
1、带血射精一般是精囊炎引起的,精囊炎称为血精,一般认为与精囊炎有关,但这里所说的精囊炎不是精囊感染
-
2023-05-15 22:59:10
焦点热讯:柏堡龙实控人夫妇被采取强制措施 去年曾遭行政处罚并被市场禁入
5月15日晚间,*ST柏龙(SZ002776,股价2 71元,市值14 58亿元,下称柏堡龙)发布公告称,公司收到实际控制
-
2023-05-15 21:51:14
环球新资讯:芳乃夏露露壁纸_芳乃夏露露
1、您好~D C3已经和前作关系不大了。2、所以我建议楼主还是别拿着3去和2扯关系了。3、按照D,C3的游戏,D,C3更
-
2023-05-15 21:07:55
蓝猫龙骑团之生命之花优酷_蓝猫龙骑团之生命之花-世界微动态
1、我记得有一集歪歪从下水道逃出来后(自从被龙骑团五龙合一打败后躲在下水道),突然晴天霹雳,产生了黑
-
2023-05-15 20:22:38
同化顺_同化
1、同化与顺应是皮亚杰从生物学移植到心理学和认识论中的概念。2、它们的最早提出见于1936年出版的皮亚杰的
-
2023-05-15 19:25:06
凯立新材:部分董监高拟940万元-1880万元增持公司股份
【凯立新材:部分董监高拟940万元-1880万元增持公司股份】凯立新材(688269)5月15日晚间公告,公司董事长、
-
2023-05-15 18:47:26
风云三号G星首套图发布!用卫星拍降水,三维结构长啥样?
风云三号G星首套图发布!用卫星拍降水,三维结构长啥样?---今天(15日),我国首颗低倾角轨道降水测量卫星
-
2023-05-15 18:19:35
央行展望中国宏观经济:我国经济运行有望持续整体好转 其中二季度在低基数影响下增速可能明显回升
央行第一季度中国货币政策执行报告,展望未来,经济延续复苏态势有诸多有利条件。一是居民收入增长有所恢复
-
2023-05-15 17:50:05
必创科技控股股东拟减持不超4.68%股份
必创科技公告,持公司股份37,560,246股(占公司总股本比例18 70%)的控股股东、实际控制人代啸宁,计划以集
-
2023-05-15 17:00:33
拉波尔塔谈梅西转会:我们的关系已经恢复,巴萨是他永远的家
拉波尔塔表示,自己同梅西之间保持了良好的关系,双方在近期刚刚互发信息。在双方的交谈当中,拉波尔塔向梅
-
2023-05-15 16:26:36
天天短讯!分工明确,肖战督促孙颖莎王楚钦混双训练,邱贻可也另有任务安排
国乒混双组长肖战也在亲自督促王楚钦和孙颖莎训练。由于孙颖莎和王楚钦都是身兼三项的主力队员,因此各项的
-
2023-05-15 16:13:29
天天热头条丨一般人是否有必要考取CFA证书?
CFA证书对于一般人是否有必要考取,需要根据个人情况进行权衡和决策。无论您是否考取CFA证书,我们都应该始
-
2023-05-15 15:34:04
手工棉鞋鞋帮鞋垫缝合方法(手工鞋垫怎么缝)-快播报
下面所介绍的是,棉鞋帮和鞋底的缝合方法。其实缝合方法都是差不多的,只不过缝合的步骤不一样罢了。下面就
-
2023-05-15 15:01:36
宁夏回族书画研究院|世界观速讯
1、宁夏回族书画研究院,民办非企业单位。2、2019年10月8日,宁夏回族自治区民政厅拟给予宁夏回族书画研究院等
-
2023-05-15 14:24:42
看热讯:如涵回应“如涵控股注销”:正常安排 业务由其他公司运营
5月15日消息,针对杭州如涵控股股份有限公司工商经营状态由存续变更为注销一事,近日如涵一名工作人员回应
-
2023-05-15 13:48:42
岚图汽车销售总经理上任不满一年离职 一季度销量不足6000辆|世界新要闻
东风汽车旗下高端新能源品牌岚图近期发布人事任免公告,据公告显示,岚图汽车科技有限公司(岚图汽车)销售
-
2023-05-15 13:05:12
褚橙褚时健_诸橙 全球微动态
1、对诸橙网络营销案例成功原因的研究,不仅仅综合了实地研究、调查研究、实验研究等规范的科学研究方法,
-
第四天:数组
2023-05-16 12:08:02 -
中消协:加大对虚假宣传等侵害消费者合法权益行为的打击力度 让消费者愿消费
2023-05-16 11:53:46 -
淘宝虚假发货赔偿规则2023 淘宝虚假发货|世界热点评
2023-05-16 11:19:22 -
价格11日连涨 交易再度活跃 碳酸锂景气度有望持续回升 热门
2023-05-16 10:57:07 -
海通证券与交银金租签署战略合作协议_通讯
2023-05-16 10:24:05 -
国家级医学人工智能赛事启动 直击临床应用需求
2023-05-16 09:54:11 -
win7怎么锁屏快捷键(win7锁屏快捷键)
2023-05-16 09:17:00