美文网首页
Java-数组及参数传递

Java-数组及参数传递

作者: A安慕c | 来源:发表于2019-03-01 22:50 被阅读0次

    Java数组

    1.概念-什么是数组

    数组可以理解成在计算机中的多个连续的存储空间,里面可以按顺序存放多个类型相同的数据。

    2.语法及使用


    2.1数组的使用:

    数组连续存储空间

    2.2获得数组的基本语法:

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

    3.数组的使用

    数组也是一个[数据类型]

    4.JVM堆栈

    4.1.堆:

    可以理解为凡是new 出来的东西都放在这里面,堆内存可以被虚拟机动态的分配内存大小,无需事先告诉编译器的数据的大小、生命周期等相关信息

    4.2栈:

    主要存放一些变量容器名 (例如局部变量名,还可以存放局部变量 基本类型 数据值)

    堆栈原理

    5.数组的特点

    1.数据类型限定了数组可以存放的数据类型

    2.一个数组可以存储多个元素

    3.一旦数组对象被创建好,那么其长度就固定不变了

    4.动态创建好数组之后,会自动分配默认值,和数组中的元素类型有关(类似之前成员变量的默认值)

    6.常见的错误

    //1.错误索引越界

    //System.out.println(arr[arr.length]);//Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 7

    //遍历

    for(int i = 0;i<arr.length;i++){

    System.out.println("索引位置:"+i);

    System.out.println(arr[i]);

    }

    //2.空指针异常

    int[] ar = null;//arr根本就没有指向一个数组【数组不存在】

    //编译不报错:只看类型不看值,不会看到底有没有数组,但是运行一定会看数组在不在【看是否有值】

    System.out.println(ar.length);

    String str = null;

    }

    //3)如果有返回值,不知道return写在哪里【数据类型对应.....】

    static int[] getArr(){

    return new int[10];

    }

    7.数组的简写

    声明的同时赋值//接下来学习中最常用

    数据类型[]  数组变量名  = {多个以英文逗号分隔的数据};

    8.数组的遍历

    class _LxBl {

    //数组的遍历(难)

    public static void main(String[] args){

    //利用简单的方法定义一个数组

    int[] arr ={1,2,3,4,5,6};

    bianLi(arr);

    }

    /*思路:

    首先想办法将数组中的数一对一的取出来

    由于每次只能取出一个数,所以考虑用循环,最好将数组索引设为变量

    */

    //不设置返回值,直接在方法中打印

    static void bianLi(int[] a){

    //为了美观在打印前加一个括号

    String num = "[";

    //利用for循环,将变量值设定为数组长度减一,由于循环的属性

    for (int i = 0; i < a.length-1;i++ ){

    num = num+a[i]+",";

    }

    System.out.print(num);

    System.out.print(a[a.length-1]+"]");

    }

    }


    2.参数传递

    要理解,参数传递,基本数据类型不能被改变,因为在调用方法时只是复制了一份变量,而不是真正的改变了变量;

    而数组能改变,是因为数组作为引用数据类型,储存的是引用地址,在参数改变的时候,地址值虽然没有改变,但是存储的值改变了;

    class _11Test {

    /*

    1.方法参数传递

    值传递

    值引用

    */

    public static void main(String[] args){

    int a = 10;//基本数据类型

    int[] arr = {66};//引用数据类型

    System.out.println(a);//10

    System.out.println(arr[0]);//66

    //-------------------------------------

    changeData(a);

    changeData(arr);

    System.out.println(a);

    System.out.println(arr[0]);//99

    }

    static void changeData(int a){

    System.out.println("int--->"+a);//10

    a = 55;

    }

    static void changeData(int[] a){//传的是什么?

    System.out.println("int[]--->"+a);//[I@15db9742

    a[0] = 99;

    }

    }

    相关文章

      网友评论

          本文标题:Java-数组及参数传递

          本文链接:https://www.haomeiwen.com/subject/texjuqtx.html