1、数组
数组是一种数据类型,属于引用数据类型,存储相同数类型的一组数据。
1 public class MyTest02 { 2 public static void main(String[] args) { 3 //数组定义语法 数据类型[] 数组名 4 int[] a; 5 //分配空间:告诉系统,当前数组存储多个元素 6 //new:Java关键字,给引用数据类型变量分配内存空间 7 //new就是在堆中分配若干个连续的可用空间,赋默认值:int-0,double-0.0,boolean-false 8 a=new int[5]; 9 //数组元素通过下标访问,第一个元素的下标是0 10 System.out.println(a[0]); 11 System.out.println(a[1]); 12 System.out.println(a[2]); 13 System.out.println(a[3]); 14 System.out.println(a[4]); 15 //数组使用不要超出下标,数组越界异常 16 //Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException 17 System.out.println(a[5]); 18 } 19 }
引用类型和基本类型的区别
内存空间分配方式不同
赋值方式不同
遍历
foreach增强语句,注意一点就行,只是把元素取出来赋值(是在宅里面改变),并不会改变堆里面元素的值,所以foreach语句只用来进行遍历
数组扩容
就是用把要扩容的数组赋值给另一个开辟空间大的数组,暂时是这样
1 public static void main(String[] args) { 2 int[] a=new int[]{1,2,3}; 3 int[] b=new int[10]; 4 for (int i = 0; i < a.length; i++) { 5 b[i]=a[i]; 6 } 7 a=b; 8 for (int i:a){ 9 System.out.print(i+"\t"); 10 } 11 }
数组反转
1 public static void main(String[] args) { 2 int[] a={1,2,3,4}; 3 // 反转前 4 System.out.println("反转前:"); 5 for (int i = 0; i < a.length; i++) { 6 System.out.print(a[i]+"\t"); 7 } 8 // 反转后 9 System.out.println("反转后:"); 10 int temp=0; 11 for (int i = 0; i < a.length/2; i++) { 12 temp=a[i]; 13 a[i]=a[a.length-1-i]; 14 a[a.length-1-i]=temp; 15 } 16 for (int i = 0; i < a.length; i++) { 17 System.out.print(a[i]+"\t"); 18 } 19 }
数组添加
1 package com.Oct25; 2 3 import java.util.Scanner; 4 5 //添加数组元素 6 public class MyTest06 { 7 public static void main(String[] args) { 8 System.out.println("请输入添加的值:"); 9 Scanner scanner = new Scanner(System.in); 10 int num = scanner.nextInt(); 11 // 定义数组存放成绩,一些成绩已经有了,-1代表还没有填入成绩的空值 12 int[] score= {12,34,53}; 13 // 思路:添加元素到-1,但必须是第一个-1的位置 14 // 所有应该查找第一个-1元素所在的位置 15 int index=-1; 16 for (int i = 0; i < score.length; i++) { 17 if (score[i]==-1){ 18 index=i; 19 break; 20 } 21 } 22 if (index!=-1){ 23 score[index]=num; 24 System.out.println("添加成功"); 25 }else { 26 System.out.println("没有空间再给你添加了"); 27 } 28 for (int i = 0; i < score.length; i++) { 29 if (score[i]==-1){ 30 break; 31 } 32 33 System.out.print(score[i]+"\t"); 34 } 35 36 } 37 }
数组删除
1 package com.Oct25; 2 3 import java.util.Scanner; 4 5 //删除数组 6 public class MyTest07 { 7 public static void main(String[] args) { 8 int[] a= {1,3,2,4,5,-1,-1}; 9 int index=-1; 10 Scanner scanner = new Scanner(System.in); 11 System.out.println("请输入要删除的元素:"); 12 int num = scanner.nextInt(); 13 for (int i = 0; i < a.length; i++) { 14 if (a[i]==num){ 15 index=i; 16 break; 17 } 18 } 19 if (index!=-1){ 20 for (int i =index+1; i < a.length; i++) { 21 a[i-1]=a[i]; 22 } 23 }else { 24 System.out.println("没有要删除的元素"); 25 } 26 27 for (int i = 0; i < a.length; i++) { 28 if (a[i]==-1){ 29 break; 30 } 31 System.out.println(a[i]); 32 } 33 } 34 }
Arrays工具类
JDK提供了一些操作数组的方法
Arrays.toString:将数组转换成字符串的形式
二维数组
含义:可以看成一个一维数组,里面又存储一个一维数组
int[ ][ ] a=new int[ 2][ 3] 两行三列的数组
就这样子存储的:{ {1,3,2} , {2,5,6} }