java一维数组初始化,声明,遍历,Arrays类常见用法

一维数组数组

一、数组的本质

  • 数组也是对象!!!
  • 数组是用来存储相同类型数据的有序集合。
  • 数组一旦被创建,它的大小是固定的。
  • 数组也是对象,数组中的元素相当于对象的属性

二、 数组的初始化

2.1 数组的声明
  • 声明的时候并没有实例化对象,只有在实例化数组对象时,JVM才分配空间,这时才与长度有关。

  • 声明数组的时候,数组并没有真正被创建

      类似变量,变量若不初始化,就不能使用。
    
  • 构造一个数组,需要指定长度。

2.2 示例: 创建一个数组

基本数据类型

public class ArrayTest {  
  
    public static void main(String[] args) {  
  
        int[] s;            //数组声明  
        s = new int[10];    //数组初始化  
  
        for (int i=0;i<10;i++){         //用循环对数组进行存取操作  
            s[i] = i;                   //往数组内放值  
            System.out.println(s[i]);   //将值从数组中取出  
        }  
  
    }  
}

引用类型

class Person{             //创建person类  
   private int age;              //创建属性  
   private String name;  
  
    public Person(int age, String name) { //重写构造方法  
        this.age = age;  
        this.name = name;  
    }  
  
    public int getAge() {               //数据需要读取,所以创建get、set方法与数组知识点无关  
        return age;  
    }  
  
    public void setAge(int age) {  
        this.age = age;  
    }  
  
    public String getName() {  
        return name;  
    }  
  
    public void setName(String name) {  
        this.name = name;  
    }  
}  
  
public class ArrayPerson {                      //主类  
  
    public static void main(String[] args) {    //main方法  
  
        Person[] p = new Person[10];            //声明并初始化数组,数组类型为引用类型  
        Person p1 = new Person(16,"小王");   //实例化对象  
        Person p2 = new Person(17,"小张");  
  
        p[0] = p1;                              //将实例化的对象放入数组中  
        p[1] = p2;  
  
        System.out.println(p[0].getAge());      //输出:16  
        System.out.println(p[0].getName());     //输出:小王  
    }  
}

三、 数组的三种初始化方式

3.1 默认初始化
  • 数组是对象,它的元素相当于对象的属性;每个元素也按照属性的方式默认初始化
int[] c = new int[2];          //默认值:0,0  

boolean[] d = new boolean[2];  //默认值:false,false  

String[] s = new String[2];    //默认值:null,null
3.2 静态初始化
//基本数据类型
int[] a = {1,2,34,5,6,7,8};
//引用类型
Person[] p = {new Person(18,"张三"),new Person(19,"李四")};
3.3 动态初始化
//初始化数组并分配空间
int[] b = new int[2];  
//给数组元素赋值
b[0] = 1;  
//给数组元素赋值
b[1] = 2;

四、数组的两种遍历方式

  • 遍历是指:通过循环对数组中的所有元素进行操作。
4.1 for 循环遍历
  • 我们可以通过for循环数据自增的特性,通过下标对数组进行遍历。

【例:使用for循环遍历数组】

public class ArrayFor {  
  
    public static void main(String[] args) {  
  
        int[] a = new int[10];  
        //使用for循环往数组中存数据  
        for(int i=0;i<a.length;i++){  
            a[i] = i;  
        }  
  
        //使用for循环往数组中读数据  
        for(int i=0;i<a.length;i++){  
            System.out.println(a[i]);  
        }  
    }  
}
	输出结果为 :
	1
	2
	3
	4
	5
	...
	9
4.2 for each 循环遍历(增强型for循环)
  • for each 专门用来读取 数组容器中所有的元素。
  • for each 遍历过程中不能修改数组中某个元素的
  • 只用于遍历,不涉及索引有关的操作。
  • 优点:代码简介 缺点:只能读取

使用for each循环遍历数组


public class ArrayFor {  
  
    public static void main(String[] args) {  
  
        int[] a = new int[10];  
        //使用for循环往数组中存数据  
        for(int i=0;i<a.length;i++){  
            a[i] = i;  
        }  
     //int 遍历元素的数据类型   s 变量名   a 需要遍历的数组遍历名  
       for (int s:a) {         
	    System.out.println(s);   
		} 
    }  
}
	输出结果为 :
	1
	2
	3
	4
	5
	...
	9

五、数组的拷贝

  • 拷贝数组,需要使用System.arraycopy方法。

  • arraycopy(Object src, int srcPos, Object dest, int destPos, int length);

      Object src  原数组   int  srcPos 原数组的起始位置
      Object dest  目标数组  int destPos 目标数组其实位置
      int leng 拷贝长度
    

**使用System.arraycopy 拷贝数组

public class ArrayCopy {  
  
    public static void main(String[] args) {  
  
        int[] a = {1,2,3,4,5,6};           //声明并初始化a,b两数组  
        int[] b = new int[6];  
  
        System.arraycopy(a,0,b,0,a.length);  //将a的所有信息复制给b  
  
        for(int c :b){                      //遍历b  
            System.out.print(c);  
        }  
    }  
}

六、java.util.Arrays 类常见用法

6.1 输出数组中的元素 tostring
  • System.out.println();是不能直接输出数组元素的。

  • 想要通过System.out.println();输出数组元素,需要使用toString方法。

      此处的 Arrays.toString()方法是 Arrays 类的静态方法,不是 Object 的 toString()
    

方法。

使用 Arrays类下的toString方法输出数组

public class ArrayToString {  
  
    public static void main(String[] args) {  
  
        int[] a = {1,2,3,4,5,6};  
  
        System.out.println(Arrays.toString(a)); //打印数组元素的值  
  
    }  
}
	结果为: [1, 2, 3, 4, 5, 6]
6.2 使用Arrays类对数组元素进行排序
  • 想要将一个乱序的数组按升序排序,可以使用 java.util.Arrays类下的sort()方法。
  • Arrays.sort(排序数组)。
    数组排序
int[] a = {1,4,5,2,3};  
System.out.println(Arrays.toString(a)); //排序前  
Arrays.sort(a);//对数组进行排序  
System.out.println(Arrays.toString(a)); //排序后
	输出结果:
		[1, 4, 5, 2, 3]
		[1, 2, 3, 4, 5]
6.3 使用 Arrays 类实现二分法查找法
  • 二分法查找是查找算法中查找次数少,效率高的一种算法。使用的前提是数组必须是有序的数组。
  • 可以配合 上面的sort()方法使用。
  • 二分法查找的方法是 Arrays.binarySearch( 查找数组,查找值 )。

Arrays 类实现二分法查找法

public class ArrayBinarySearch {  
  
    public static void main(String[] args) {  
  
        int[] a = {1,2,3,542,234,5,23,423,34};  
  
        Arrays.sort(a);  //先对数组进行排序
  
        System.out.println(Arrays.binarySearch(a,23));//使用二分法查找,返回值所对应的数组下标。  
    }  
}
	输出结果: 4
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沈苏程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值