本帖最后由 谁用了我的名字 于 2018-8-27 21:16 编辑
Java学习第5天,今天学习了数组,下附总结笔记
1、掌握数组的定义方式
a、动态初始化:在创建数组的时候,直接指定数组当中的数据元素个数(即数组长度)
数据类型[] 数组名称 = new 数据类型[数组长度];
int[] arrayA = new int[300];
Stirng[] arrayB = new String[300];
使用动态初始化创建数组的时候,其中的元素将会自动拥有一个默认值:
如果是整数类型:那么默认为0;
如果是浮点类型:那么默认为0.0;
如果是字符类型:那么默认为'\u0000';
如果是布尔类型,那么默认为false;
如果是引用类型,那么默认为null
b、静态初始化:在创建数组的时候,不直接指定元素个数多少,而是直接将具体的元素内容进行指定
标准格式:数据类型[] 数组名称 = new 数据类型[]{元素1,元素2,...};
省略格式:数据类型[] 数组名称 = {元素1,元素2,...};
Stirng[] arrayB = new Stirng[]{"我", "你", "他", ...};
int[] arrayA = {1,2,3,4,5};
Stirng[] arrayB = {"我", "你", "他", ...};
注意事项:
静态初始化没有直接指定长度,但是仍然会自动推算得到长度
静态初始化标准格式可以拆分为两个步骤
int[] arrayA;
arrayA = new int[]{5, 10, 15};
静态初始化一旦使用省略格式,就不能拆分为两个步骤了
注意事项:
数组有定长特行,数组一旦创建,程序运行期间,长度不可改变
数组是一种引用数据类型
数组当中的多个元素,类型必须统一
2、使用索引访问数组的元素
格式:数组名称[索引];
索引:每一个存储到数组的元素,都会自动的拥有一个编号,从0开始,这个自动编号称为数组索引(index),可以通过数组的索引访问到数组中的元素。
索引值就是一个int数字,表示数组当中元素的编号
索引值从0开始,一直到“数组的长度-1”为止
给数组中的元素赋值:
数组名[索引]=数值,为数组中的元素赋值
获取数组中的元素:
数据类型 变量=数组名[索引],获取出数组中的元素
3、了解空指针和越界异常
空指针异常:
如果数组只是赋值了一个null,没有进行new创建,那么将会发生空指针异常NullPointerException
越界异常:
数组越界就是提供的下标超出边界(out of bound),比如
int[] a = new int[10];
那么 a[-1] 和 a[11]就是越界。
4、掌握数组的遍历
就是将数组中的每个元素分别获取出来
public static void main(String[] args) {
int[] arr = { 1, 2, 3, 4, 5 };
for (int i = 0; i < arr.length; i++) {
System.out.println(arr);
}
}
5、了解数组的内存图解
Java的内存需要划分成为5部分:
栈:存放的都是方法中的局部变量。方法的运行一定要在栈当中运行
局部变量:方法的参数,或者是方法{}内部的变量
作用域:一旦超出作用域,立刻从栈内存当中消失
堆:凡是new出来的东西,都在堆当中
堆内存里面的东西都有一个地址值
堆内存里面的数据,都有默认值、规则:
如果是整数类型:那么默认为0;
如果是浮点类型:那么默认为0.0;
如果是字符类型:那么默认为'\u0000';
如果是布尔类型,那么默认为false;
如果是引用类型,那么默认为null
方法区:存储.class相关信息,包含方法的信息
本地方法栈:与操作系统相关
寄存器:与CPU相关
程序执行流程:
a、main方法进入方法栈执行
b、创建数组,JVM会在堆内存中开辟空间,存储数据
c、数组在内存中会有自己的内存地址,以十六进制数表示
d、数组中有3个元素,默认值0
e、JVM将数组的内存地址赋值给引用类型变量arr
d、变量arr保存的是数组内存中的地址,而不是一个具体数值,因此称为引用数据类型
6、掌握数组最大值的获取
public static void main(String[] args) {
//创建数组
int[] array = {5, 15, 2000, 10000, 100, 4000};
//假设索引为0的元素为数组中的最大值
int max = array[0];
//遍历数组,获取每一个元素和max作比较
for (int i = 0; i < array.length; i++) {
if(max < array){
max = array;
}
}
System.out.println("数组中的最大值为:"+max);
}
7、了解数组反转的原理
public static void main(String[] args) {
//创建数组
int[] array = {5, 15, 2000, 10000, 100, 4000};
//数组反转即第一个元素和最后一个元素互换,第二个元素和倒数第二个元素互换。。。
//定义数组前面的元素定义为min,后面的元素定义为max,min和max其实就是数组的索引值,每次min和max互换后,min自增1(min++),max自减1(max--)
//定义一个变量,最有前后两个数据互换的中间值
//当min等于或者大于max是停止互换
for(int min = 0, max = array.length - 1; min <= max; min++, max--){
int temp = array[max];
array[max] = array[min];
array[min] = temp;
}
//遍历反转后的数组
for (int i = 0; i < array.length; i++) {
System.out.println(array);
}
}
8、了解数组作为方法参数传递
数组作为方法参数传递,传递的参数是数组内存的地址
9、了解数组作为方法的返回值
数组作为方法的返回值,返回的是数组的内存地址
|
|