1、数组的定义
数组:用来储存同一种类型的数据
1.1、创建数组
数组定义的三种方法:
动态初始化
int[] array1 = new int[10];//前面的int[]为数组的类型,后面的int[10]为其能够存放的大小,array1为其数组名称
静态初始化
int[] array2 = {1,2,3,4,5};
int[] array3 = new int[]{1,2,3,4,5};
1.2、初始化数组
初始化数组有动态初始化和静态初始化两种
动态初始化:在创建数组时,只定义数组中元素的个数,并未给里面的元素进行赋值
例如:int [] array = new int [ 10 ];
静态初始化:在创建数组时不定义数据元素个数,而直接将数组里的数据内容进行赋值,编译器会自己判定数组有几个元素, 后面的数据必须与前面定义的数据类型一致
例如:int[] array1 = {0,1,2,3,4,5,6,7,8,9};
初始化能分为两步
int [] array ;
array = new int []{ 10 , 20 , 30 };
new不可省略
1.3、默认值:当数组中的元素为动态初始化时,会有对应的默认值
2、数组的使用
2.1、访问数组
通过数组的下标进行访问,数组在内存中是一块连续的内存空间,索引从0开始后推
2.1.1、取值
public class Test {
public static void main(String[] args) {
int[] array = {1,2,3,4,5};
System.out.println(array[3]);
}
}
public class Test {
public static void main(String[] args) {
int[] array = {1,2,3,4,5};
System.out.println(array[5]);
}
}
超过会报异常
2.1.2、赋值
public class Test {
public static void main(String[] args) {
int[] array = {1,2,3,4,5};
array[4]=10;
System.out.println(array[4]);
}
}
超过会报异常
3、数组长度属性:length
数组的下标是从0开始的,所以数组用下标访问最大能到数组长度-1(前提:数组中存在数据)
public class Test {
public static void main(String[] args) {
int[] array = {1,2,3,4,5};
System.out.println(array.length);
}
}
超过数组索引长度会提示索引越界异常
4、遍历数组
数组有3种打印方式
1)for循环打印数组
public class Test {
public static void main(String[] args) {
int[] array = {1,2,3,4,5};
for (int i = 0; i < array.length; i++) {
System.out.print(array[i]+" ");
}
}
}
2)foreach打印数组(增强for循环)
public class Test {
public static void main(String[] args) {
int[] array = {1,2,3,4,5};
for (int x:array) {
System.out.print(x+" ");
}
}
}
3)toString打印数组
import java.util.Arrays;
public class Test {
public static void main(String[] args) {
int[] array = {1,2,3,4,5};
System.out.println(Arrays.toString(array));//使用toString方法需要导包,类似C语言中的头文件
}
}
5、找数组中的最大值
public class demo{
public static void main(String[] args){
int[] arr=new int[]{15,29,324,42,43,45,654};
int max=arr[0];
for(int i=0;i<arr.length;i++){
if(max<arr[i]){
max=arr[i]
}
}
}
System.out.println("最大值为:"+max);
}
6、数组反转
public class demo{
public static void main(String[] args){
int[] arr=new int[]{15,29,324,42,43,45,654};
for(int i=0;j<arr.length-1;i<j;i++;j--){
定义一个临时变量记住后一个位置
int lin=arr[i];
后一个值等于前一个值
arr[j]=arr[i];
前一个值等于临时变量保存的后一个值
arr[i]=lin;
}
for(int i=0;i<arr.length;i++){
System.out.println(arr[i]);
}
}
}
7、随机排名
public class demo03 {
public static void main(String[]
args){
/随机排名
1/定义一个动态数组用子存储
intl] a = new int[5];
//提示灵入工号
Scanner s = new Scanner (System. in);
for (int i = 0; i <a.length; i++) {
system.out.println("请您输入第"+(i+ 1)+"个工号");
a[i] = s.nextInt();
}
//打乱数组
Random r=new Random;
for (int i=0;i< a.length;i++){
1/每遍历一个数组数据,都随机一个案引范国内的值,然后以当前位置的数交换
int index=r.nextInt( bound: 5); //0-4 int Lin=alindex]; a[index]=alil;
a[il=Lin;
//適历
for (int i=0;i< a.length;i++){
System.out.println(a[il);
8、有关数组方法的使用
8.1、toString
toString方法的作用是将数组的数据变成字符串类型数据
import java.util.Arrays;
public class Test {
public static void main(String[] args) {
int[] array = {1,2,3,4,5};//定义一个数组
String arrays = Arrays.toString(array);//用字符串类型接受方法的返回值
System.out.println(arrays);
}
}
模拟实现toString
public class Test {
public static String toString(int[] array){//返回类型为字符串类型
String array1 = "[";//定义一个字符串类型数据
for (int i = 0; i < array.length; i++) {
array1+=array[i];
if(i!= array.length-1){
array1+=",";
}
}
array1+="]";
return array1;
}
public static void main(String[] args) {
int[] array = {1,2,3,4,5};//定义一个数组
String arrays = toString(array);//用字符串类型接收方法的返回值
System.out.println(arrays);
}
}
8.2、copyOf
public static int[ ] copyOf(int[ ] original,int newLength)
第一个参数original
要复制的数组
第二个参数newLength
要返回的副本的长度
import java.util.Arrays;
public class Test {
public static void main(String[] args) {
int[] array = {1,2,3,4,5};
int[] newArray = new int[array.length];//新数组
newArray = Arrays.copyOf(array,array.length);
System.out.println(Arrays.toString(newArray));
}
}
模拟copyOf
import java.util.Arrays;
public class Test {
public static int[] copyOf(int[] array,int length){
int[] newArray = new int[array.length];
for (int i = 0; i < array.length; i++) {//循环赋值
newArray[i] = array[i];
}
return newArray;
}
public static void main(String[] args) {
int[] array = {1,2,3,4,5};
int[] newArray = copyOf(array, array.length);
newArray[2] = 30;//将拷贝好的数组的第3个元素赋值为30,观察该改变是否对原数组是否有影响
System.out.println("array:"+Arrays.toString(array));
System.out.println("newArray:"+Arrays.toString(newArray));
}
}