java 数组

数组动态初始化( 声明并开辟数组):
数据类型[] 数组名称 = new 数据类型 [⻓度] ;int[] arr=new int[3];
1.数组的访问 注意:数组从0开始,因此可以访问范围就是0~数组长度-1;假设现在开辟了3个空间的数组,那么可以访问的是:0、1、2。
如果访问超过数组长度,会产生"java.lang.ArrayIndexOutOfBoundsException"异常信息。
2.当数组采⽤动态初始化开辟空间之后,数组之中的每个元素都是该数据类型的默认值;
3.数组本身是⼀个有序的集合操作,所以对于数组的内容操作往往采⽤循环的模式完成。(数组是⼀个有限的集合,采⽤for循环);
4.在Java中有⼀种动态取得数组⻓度的⽅法:数组名称.length;
**注意:**数组属于引⽤数据类型,因此在使⽤之前⼀定要开辟空间(实例化),否则就会产⽣NullPoninterException
数组静态初始化:
简化格式:数据类型[] 数组名称 = {值,值,…};
完整格式:数据类型[] 数组名称 = new 数据类型[] {值,值,…};
数组作为引⽤数据类型,也⼀定可以发⽣引⽤传递。
引⽤传递空间:同⼀块堆内存空间可以被不同的栈内存所指向。
数组的拷贝:
for 、 clone 、Array.copyof(原数组,目标数组长度)、System.arraycopy(原数组,起始位置,目标数组,目标数组起始点,拷贝长度);
System.arraycopy() 、Array.copyof()、 clone、for循环拷贝对于基本类型来说他是深拷贝
array2=array.clone()
native标志了System.arraycopy()拷贝最快 底层代码由c/c++
4种拷贝方式对于引用类型来说都是浅拷贝

数组的数组就是二维数组
定义一个二维数组 (数组并不是等列数组 非矩阵)

public static void main(String[] args) { 
  int[][] data = new int[][] {    {1,2,3},{4,5},{6,7,8,9}  };  
  for (int x = 0; x<data.length ; x++)
   {   for (int y = 0; y<data[x].length ; y ++) 
   {    System.out.println("data{"+x+"] ["+y+"]="+data[x][y]+"̵") ;   }  
    System.out.println();  } } }

Java中实现数组排序: java.util.Arrays.sort(arrayName) ;

public class ArrayDemo{
 public static void main(String[] args) {
 int[] intData = new int[]{1,65,55,23,100} ; 
 char[] charData = new char[]{'z','a','c','b'} ;
 java.util.Arrays.sort(intData) ;
 java.util.Arrays.sort(charData) ;
 printArray(intData) ; 
 printArray(charData) ;
 }
 public static void printArray(int[] temp) {
for (int i = 0 ; i<temp.length ; i++) { 
  System.out.println(temp[i]) ;  } 
   System.out.println() ; }  
   public static void printArray(char[] temp) {
 for (int i = 0 ; i<temp.length ; i++) { 
   System.out.println(temp[i]) ;  }  
   System.out.println() ; } }

对象数组

上面介绍的都是基本类型的数组,对象数组往往是以引⽤数据类型为主的定义,例如:类、接口。
对象数组的初始化也分为动态初始化

``动态初始化

class Person {
 private String name ; 
 private int age ;
 public Person(String name, int age) {
 this.name = name ; 
 this.age = age ; 
 }
 public void getInfo() {
 System.out.println("姓名"+this.name+",年龄"+this.age) ;
 }
}
public class Test {
 public static void main(String[] args){
 Person[] per = new Person[3] ; // 动态初始化,每个元素都是对应数据类型的默认值
  per[0] = new Person("张三",1) ; 
 per[1] = new Person(“李四",2) ;
 per[2] = new Person("王五",3) ;
 for (int x = 0 ; x < per.length ; x++) {
 per[x].getInfo() ;
 }
 }
}

静态初始化

    class Person {
 private String name ; 
 private int age ;
 public Person(String name, int age) {
 this.name = name ; 
 this.age = age ; 
 }
 public void getInfo() {
 System.out.println("姓名"+this.name+",年龄"+this.age) ;
 }
}
public class Test {
 public static void main(String[] args){
 Person[] per = new Person[] {
 new Person("张三",1) ,
 new Person("李四",2) ,
 new Person("王五",3)
 } ; // 静态初始化
 for (int x = 0 ; x < per.length ; x++) {
 per[x].getInfo() ;
 }
 }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值