南宁一站网网络技术有限公司,外汇跟单网站开发,电商类网站建设需要多少钱,2019网站seo1、背景
上传图片#xff0c;需要对图片格式进行校验#xff0c;这是就可以使用数组 2.1、什么是数组#xff1f;
Java 语言中提供的数组是用来存储固定大小的同类型元素。 如#xff1a;可以声明一个数组变量#xff0c;如 numbers[100] 来代替直接声明 100 个独立变量…1、背景
上传图片需要对图片格式进行校验这是就可以使用数组 2.1、什么是数组
Java 语言中提供的数组是用来存储固定大小的同类型元素。 如可以声明一个数组变量如 numbers[100] 来代替直接声明 100 个独立变量 number0number1…number99。 注意事项 1数组中存放的元素其类型相同 2数组的空间是连在一起的 3每个空间有自己的编号其实位置的编号为0即数组的下标。 2、数组的创建及初始化
数组的创建
T[ ] 数组名 new T[N]; T表示数组中存放元素的类型 如int 、double T[ ]表示数组的类型 如int[ ] 整型数组、double[ ] 浮点型数组 N表示数组的长度 如5表示存放5个对应类型的元素 如
int[] arr1 new int [10]; //创建一个可以容纳10个int类型元素的数组 char[] arr2 new char[10]; //创建一个可以容纳10个char类型元素的数组 double[] arr4 new double[10]; //创建一个可以容纳10个double类型元素的数组 String[] array3 new String[10]; //创建一个可以容纳10个字符串的数组
3、数组的初始化
数组的初始化主要分为动态初始化以及**静态初始化 **
3.1、静态初始化
静态初始化在创建数组时不直接指定数据元素个数而直接将具体的数据内容进行指定 如
int[] arr1 new int []{0,1,2,3,4,5,6,7,8,9}; char[] arr2 new char[]{a, b,c}; double[] arr3 new double[]{1.1,2.2,3.3,4.4,5.5}; String[] arr4 new String[]{abc,efg,hij}; 也可以将new T去掉简写为
int[] arr1 {0,1,2,3,4,5,6,7,8,9}; char[] arr2 {a, b,c}; double[] arr3 {1.1,2.2,3.3,4.4,5.5}; String[] arr4 {abc,efg,hij}; 虽然省去了new T[ ], 但是编译器编译代码时还是会还原。 注意
静态初始化虽然没有指定数组的长度编译器在编译时会根据{}中元素个数来确定数组的长度。 静态初始化时, {}中数据类型必须与[]前数据类型一致。 静态初始化可以简写。
3.2、动态初始化
动态初始化在创建数组时直接指定数组中元素的个数 如
int[] arr1 new int [10]; //创建一个可以容纳10个int类型元素的数组 char[] arr2 new char[10]; //创建一个可以容纳10个char类型元素的数组 double[] arr4 new double[10]; //创建一个可以容纳10个double类型元素的数组 String[] array3 new String[10]; //创建一个可以容纳10个字符串的数组 与静态初始化不同动态初始化后续可以添加数组的内容以int[ ] arrnew int [5]; 为例
int[] arr new int[5]; arr[0]1; arr[1]2; arr[2]3; arr[3]4; arr[4]5; 静态和动态初始化也可以分为两步。
int[] array2; array2 new int[]{10, 20, 30}; //静态 int[] array1; array1 new int[10]; //动态 如果没有对数组进行初始化数组中元素有其默认值 如果数组中存储元素类型为引用类型默认值为null 3.2、数组中元素访问
数组的下标
数组在内存中是一段连续的空间空间的编号都是从0开始的依次递增该编号称为数组的下标数组可以通过下标访问其任意位置的元素。 遍历数组
length 数组的长度数组名.length 在数组中可以通过 数组对象.length 来获取数组的长度举例使用‘
public class Test1 { public static void main(String[] args) { int[] arr {1,2,3,4,5,6,7,8,9,10}; int i0; for(i0;iarr.length;i){ System.out.println(arr[i]); } } } for each语法
for(元素类型t 元素变量x : 遍历对象obj){ 引用了x的java语句; } for-each 是for循环的另外一种使用方式能够更方便的完成对数组的遍历. 可以避免循环条件和更新语句写错。 举例使用打印数组内元素
public class Test1 { public static void main(String[] args) { int[] arr {1,2,3,4,5,6,7,8,9,10}; for(int x:arr){ System.out.println(x); } } } 4、jvm内存分布
内存是一段连续的存储空间主要用来存储程序运行时数据的。 如果对内存中存储的数据不加区分的随意存储那对内存管理起来将会非常麻烦因此JVMJava虚拟机也对所使用的内存按照功能的不同进行了划分。 栈一般存储局部变量等。 堆一般存储对象等。 首先我们知道Java中数据类型分为基本数据类型和引用数据类型基本数据类型分为8种类型4大类而引用数据类型中存放的是地址。 5、数组的内存分布
对于数组来说其内存分布为 那么问题来了下面几道题打印arr2结果为什么
int[] arr1 {1,2,3,4,5}; int[] arr2 arr1; 由上图可知arr1中存放的是数组首元素的地址将arr1赋给arr2即arr2也指向{12345}都与其建立了联系。打印arr2结果为12345 如进行以下修改打印arr2结果为什么
int[] arr1 {1,2,3,4,5}; int[] arr2 arr1; arr2[0] 66; 因为arr2也与arr1所指向的内容建立了联系因此不管谁进行修改都会修改 {12345}所以修改arr2[0]为66后打印arr2结果为 662345 若进行以下修改打印arr1结果为什么
int[] arr1 {1,2,3,4,5}; int[] arr2 {100,200,300}; arr1arr2; 此时arr1中存放的地址是arr2所指向的元素的地址与 {12345} 的联系断开因为没有人与 {12345} 建立联系所以其会被销毁。arr1打印结果为100200300
空 null
null 在 Java 中表示 “空引用” , 也就是一个不指向对象的引用
int[] arr null; //arr数组不指向任何对象以后若需要可以指向其它对象 System.out.println(arr[0]);//打印会报空指针异常 null 的作用类似于C语言中的 NULL (空指针), 都是表示一个无效的内存位置. 因此不能对这个内存进行任何读写操作. 一旦尝试读写, 就会报错 NullPointerException空指针异常。