数组基础常识

数组的定义与使用

1.动态初始化

数据类型[] 数组名称 = new 数据类型 [长度] ;

2.多个栈内存,指向同一个堆
总结:数组int[] x=null时,在栈上开辟了空间,当它x = new int[3] ;时,在堆上才开辟了空间
当temp=x时,是把本来栈上temp指向NULL的箭头指向了x所指向的堆的地址,这时,因为temp指向的是堆上的地址,修改temp[0],因为是通过地址修改,所以是有效的

public class ArrayDemo{
public static void main(String[] args) {
int[] x = null ;
int[] temp = null ; // 声明对象
x = new int[3] ;
System.out.println(x.length) ;
x[0] = 1 ; // 数组第一个元素
x[1] = 2 ; // 数组第二个元素
x[2] = 3 ; // 数组第三个元素
for (int i = 0; i<x.length ; i++) {
System.out.println(x[i]) ; // 通过循环控制索引下标更改
}
temp = x ; //如果要发生引用传递,不要出现[]
temp[0] = 55 ; // 修改数据
System.out.println(x[0]) ; //55
}
}
  1. 数组静态初始化
简化版:数据类型[] 数组名称 = {值,值,....};
完整版:数据类型[] 数组名称 = new 数据类型[] {值,值,....};
备注:以后使用静态方式定义数组的时候,请使用完整格式

4.二维数组

动态初始化:数据类型[][] 对象数组 = new 数据类型[行个数][列个数] ;
静态初始化:数据类型[][] 对象数组 = new 数据类型[][]{{值,值,..},{值,值,..},..};

5.方法接收数组

public class ArrayDemo{
public static void main(String[] args) {       
int[] data = new int[] {1,2,3,4,5} ;       
printArray(data) ; // 其效果等价于 int[] temp = data ;
    }
    public static void printArray(int[] temp) {
        for (int i = 0 ; i<temp.length ; i++)
{
            System.out.println(temp[i]) ;
       }
    }
}

自我总结:觉得灰常没必要,直接可以调用data,主要是因为,在大的项目里,肯要重复使用,所以直接就把打印这个功能,变成一个方法,直接调用就OK了

6.方法返回数组

public class ArrayDemo{
public static void main(String[] args) {
        int[] data = init() ;
        printArray(data) ;
     }
    // 定义一个返回数组的方法
    public static int[] init(){
        return new int[] {1,2,3,4,5} ; // 匿名数组
    }
   public static void printArray(int[] temp) {
        for (int i = 0 ; i<temp.length ; i++)
{
            System.out.println(temp[i]) ;
       }
   }
}

自我总结:我觉得这个返回经常用到,所以要超级注意了,
他的名字是public+static+数据类型[] 方法名(){return new 数据类型[]{数据}}

7.方法修改数组

public class ArrayDemo{
    public static void main(String[] args) {
        int[] data = init() ;
        bigger(data) ;
        printArray(data) ;
     }
    // 定义一个返回数组的方法
    public static int[] init(){
        return new int[] {1,2,3,4,5} ; // 匿名数组
    }
    // 将数组中每个元素的值扩大5倍
    public static void bigger(int[] arr){
        for (int i =0 ; i<arr.length ; i++) {
            arr[i]*=5 ; // 每个元素扩大5倍
        }
    }
    public static void printArray(int[] temp) {
        for (int i = 0 ; i<temp.length ; i++) {
            System.out.println(temp[i]) ;
        }
}
}

自我总结:用方法来修改数组,首先把方法单独拎出来,但是,还是在这个类里面,因为是利用地址修改,所以不需要返回值,直接修改完就OK,
所以修改数组的方法名是public static void +方法名(){}

8.数组的排序
已有写好的代码,可以直接使用:java.util.Arrays.sort(数组名);
自我总结:可以直接在所有代码之前加载 import java.util.Arrays.*;

9.数组里内容的拷贝
(1)数组部分拷贝
方法:(需要有两个数组)arraycopy
System.arraycopy(源数组名称,源数组开始点,目标数组名称,目标数组开始点,拷贝长度);
例:

System.arraycopy(dataB,4,dataA,1,3) ;
目标数组A: 1、2、3、4、5、6、7、8、9
源数组B: 11、22、33、44、55、66、77、88、99
替换后: 1、55、 66、77、5、6、7、8、9

自我总结:这个拷贝方法,也是可以直接拿来使用的,但是对这种拷贝,需要有前提条件,首先要有两个数组,最终拷贝好的代码存在目标数组中。
(2)数组全部拷贝

数组拷贝: java.util.Arrays.copyOf(源数组名称,新数组长度) //
import java.util.Arrays;
public class fors {
public static void main(String[] args) {
  int[] original = new int[]{1,3,5,7,9};
//开辟了10个空间,result是一个长度为10的数组
  int[] result = Arrays.copyOf(original,10);
  for (int temp : result) {
         System.out.println(temp);
         }
         }
         }

10.for的增强型

for(ElementType element:arrayName){};
//e.g:
int[] numArray = { 1, 2, 3, 4, 5, 6 };
for (int i : numArray) {
    System.out.print(i);
}
//等价于
int[] numArray = {1,2,3,4,5,6};
for(int i=0;i<numArray.length;i++){
       System.out.print(numArray[i]);
}
//或者来说,这样更贴切
int[] numArray = { 1, 2, 3, 4, 5, 6 };
for (int i=0; i < numArray.length; i++) {
    int j = numArray[i];// 这个j,就等价与(1)中的i
    System.out.println(j);
    }


博主有言:这个是当初我复习数组记得笔记,稍微有点乱,就只稍微排版了一下更上来,等后期再次复习的时候,我把它继续完善

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值