Hi,我是小颜在Study,大家晚上好,标题虽然改了,但依然是接着前面的七篇更新,希望喜欢的继续支持,我也会一直更新到学习完。先挑战个一百天。加油!!!!!
第八天学习java
一、数组
①数组的概述:一次性可以存很多相同类型的数据。例如:你的考试成绩,我的java学习全篇。
②是什么:数组(arry)是一种用于存储多个相同类型数据的存储模型。
③数组的定义格式:
数据类型 变量名 [ ]
举例:int arr [ ]
数据类型 [ ] 变量名
举例: int [ ] arr————推荐使用这种
解释: 定义了一个int类型的变量,变量名是arr数组。
④数组的初始化概述:
在java中,数组必须先初始化才能使用。初始化就是一开始给他个值。在数组中就是为数组元素分配内存空间,并为每个数组元素赋值。
分类:动态和静态。
⑤初始化方式——动态
初始化时只指定数组长度,由系统为数组分配初始值。
格式: 数据类型 [ ] 变量名 = new 数据类型 [ 数组长度 ]
举例: int [ ] arr = new int [3] ;
⑥数据元素访问:
(1)数组变量访问方式:
格式:数组名
(2)数组内部保存的数据访问方式
格式: 数组名[索引]
解释: 索引就是数组的每个元素对应的编码,计算机都是从零开始,到结束。例如 定义了长度为 3,那么它的索引就是 0 、 1、 2 。
(3)索引是数据中数据的编号方式:
特征:索引是从零开始的,索引是连续的,索引是逐一增加的,每次加一。
⑦内存分配:
(1)在java中,程序运行为了使效率变高,java就对空间进行不了不同的区域划分。每片区域都有特定的处理数据方式和内存管理模式。
(2)具体分配:
int [ ] arr = new int [ 3 ] ;
——特点:
左边我们称为栈内存(储存在局部变量,在定义方法中的变量,使用完毕就会消失。)
右边我们称为堆内存(是new出来的实体内存,对象,数组在初始化时,会存储空间添加默认值。 整数 :0 浮点数:0.0 布尔 false 字符:空字符 引用数据类型: null)
Tip:每一个被new出来的东西都有一个地址值,在使用完毕后,只有空闲时才会被java的垃圾回收机制回收。
——所以整个流程模式是这样的:
int [ ] arr = new int [ 3 ] ;
arr 会进行 new int [ 3 ] ;地址访问。这里我们假设为001.。
然后 new int [ 3 ] 也就是001 里面有个三个元素,是我们赋值的,分别为 0 、 1 2 。这是他们对应的索引。
——当我们操作时:
System.out.println(arr); 这里将会输出 arr 访问 001 的地址值
System.out.println(arr [ 1 ] ); 这里将会输出 索引1号对应的值,因为这里没有赋值,所以输出的是0.
System.out.println(arr[ 0 ]); 这里将会输出 索引0号对应的值,因为这里没有赋值,所以输出的是0.
⑧数组内存图(单个数组)
在上面的操作之后。我们可以通过索引赋值。
arr [ 0 ] = 100 ;
arr [ 1 ] = 200 ;
这样原来数组访问对应的索引是零就变成了现在改的值了。例如:
System.out.println(arr [ 1 ] ); 这里将会输出 索引1号对应的值,因为这里重新赋值了200,所以输出的是200
System.out.println(arr[ 0 ]); 这里将会输出 索引0号对应的值,因为这里赋值了100,所以输出的是100。
⑨多个数组
int [ ] arr = new int [ 2 ];
int [ ] arr2 = new int [ 3 ] ;
System.out.println(arr) ;
System.out.println(arr[ 0 ]) ;
System.out.println(arr[ 1 ]) ;
System.out.println(arr2);
System.out.println(arr2 [ 0 ]) ;
System.out.println(arr 2[ 2 ]) ;
arr [ 1 ] = 100 ;
arr [ 0] = 200;
arr2 [ 0 ] = 190;
arr2 [ 2] = 10;
System.out.println(arr) ;
System.out.println(arr[ 0 ]) ;
System.out.println(arr[ 1 ]) ;
System.out.println(arr2);
System.out.println(arr2 [ 0 ]) ;
System.out.println(arr 2[ 2 ]) ;
Tip 和当个数组是一样的意思。不懂往上看。
⑩ 多个数组指向同一个地址(相同)
int [ ] arr = new int [3];
arr [ 0 ] = 100 ;
arr [ 1 ] = 200;
arr [ 2] = 300 ;
System.out.println(arr);
System.out.println(arr[ 0 ]);
System.out.println(arr[ 1 ]);
System.out.println(arr[ 2 ]);
Tip:到这一步和上面讲的都是一样。
int [ ] arr2 = arr
arr2 [ 0 ] = 120;
arr2 [ 1 ] = 90 ;
tip:这时,由于指向一样了,这里修改了,那么也就是会变。
System.out.println(arr 2);
System.our.println(arr2 [ 0 ] );
System.out.println(arr );
System.out.println(arr [ 0 ] );
这里输出结果:就是arr 和arr2的地址值一样,索引获取的值也一样。