Java-数组及参数传递

2019-03-01  本文已影响0人  A安慕c

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;

}

}

上一篇下一篇

猜你喜欢

热点阅读