Java一维数组的学习

1.以一维int[] arr为例子

java中数组,int[] arr = {1,2,3,4};   ------->[]中不能放数字,与c的区别
下标跟从0开始,   类型为————>  int[]

              int[] arr1 = new int[3];//没有初始化  ------>new为Java关键字,用于实例化对象
                                              表示全部放0,长度为3的数组
              int[] arr2 = new int[]{1,2,3,4}; //初始化后[]不能加数字
 输出数组某一项System.out.println(arr[1]);
 注意数组越界限  ,也可以改某一数组项的值

2.求数组的长度

数组长度a,直接 int a = arr.length;

3.如何遍历数组呢?这里介绍3种遍历数组, 可以main中直接用,也可以转化为方法调用

int[] arr ={1,2,3,4,5};
  int n=arr.length;
  //用for可以读取数组的下标
  //for each直接读取每一个元素
1.for(int i=0;i<n;i++){
      System.out.print(arr[i]+" ");
  }
  System.out.println();
2.for(int x:arr){    //for each循环
      System.out.print(x+" ");
  }
3.利用Arrays,导入一个包,打印出数组各项
  System.out.println(Arrays.toString(arr)); 这里输出后两边会带括号[1,2,3,4,5]

4.Java的数组与c语言的数组差别

int[] arr={1,2,3,4};
   arr作为引用变量,保存变量地址,指向对象{1,2,3,4}这个数组
在这里数组所对应的地址其实是对象的,而不是这个数组变量的,引用变量为了产生这个地址

   int[] arr1=null;     ————>表示arr1不指向任何对象
   此时arr1.length没有意义

5.数组作为方法的参数,类似函数参数

//按引用传递
public  static  void arrAll(int[] arr){//实参arr传过去自身存储的地址,给形参,让形参也通过这个地址访问
   int n=arr.length;          ——————知道数组长度很有必要
   for(int i=0;i<n;i++){
       System.out.println(arr[i]);
   }

6.关于引用变量arr传参数,实参与形参关系

注意实参转到形参后对象有没有改变,对象改变,实参不改变?
 指向对象相同时才可以改值,             引用只是形成地址,对象所在才是地址
  1.  public  static  void change1(int[] arr){
            arr=new int[]{2,3,4,5,6};// 形参传入后对象改变了,与原来的实参割裂开,实参不变
}
      public static void main(String[] args) {     ————————>这里因为实参arr引用为形参arr所对应的对象改变了,
            int[] arr ={1,2,3,4,5};
            change1(arr);
            System.out.print(Arrays.toString(arr));  最后为[1,2,3,4,5]
}

2.  public static void change2(int[] arr){         ———————>对象没变
        arr[0]=10;
   }
    public static void main(String[] args) {
            int[] arr ={1,2,3,4,5};
            change2(arr);
            System.out.print(Arrays.toString(arr));  最后为[10,2,3,4,5]

7.一个引用只能指向一个地址,多个引用可以指向同一个地址

8.引用的指向,为对象的指向,地址只有一个,但是有两个指向,

int[] arr1={1,2,3};
     int[] arr2=arr1;
     表示:  arr2这个引用指向arr1这个引用指向的对象

9.数组的拷贝

拷贝数组
  int[] arr = {1,2,3};
  int[] arr1 = Arrays.copyOf(arr,arr.length) ————>括号内为引用的地址和数组长度,arr1为{1,2,3}
  int[] arr2 = Arrays.copyOf(arr,arr.length*2)  ——————>arr2为{1,2,3,0,0,0},创建了一个新的对象
|     拷贝数组的一部分
| int[] arr3 = Arrays.copyOfRange(arr,1,3);——————arr[1],arr[2]//括号内为左闭右开[1,3),注意越界这个问题
 int[] arr4 = arr.clone();————>产生一个副本   为{1,2,3}   arr与arr4直接一致,

10.深拷贝与浅拷贝

深拷贝:拷贝之后拷贝引用对象的值改变,原引用对象的值不随之改变
   浅拷贝:                             引用对象的值改变————>对象已经被改变了,copy后对应的对象也是改变后的值
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值