JAVA从入门到精通------基础篇------数组

1、数组的概念

 

一组连续的内存空间,可以存储多个相同数据的值

是一组内存空间连续,数据类型相同的,长度固定的变量的集合

他的好处就是对批量存储数据中使用变量的一种简化



2、数组的特点

内存空间连续

数据类型相同

长度固定(不能通过代码动态改变数组)



3、数组的使用场景

已经知道数组元素



4、数组的创建方式

声明并赋值(简化版)

数据类型[] 变量名 = {值1,值2,值3,...};

声明并赋值(繁琐版)

数据类型[] 变量名 = new 数据类型[]{值1,值2,值3,...};

先声明、再分配空间

数据类型 数组名[];

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

声明并分配空间方式

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

注: 在求数组的长度的时候,我们一般使用数组名.length的方法

         数组的下角标也被称为索引 例如下图中的 a[0] 说的就是1  a[1] 说的就是2  等等

         所以4 就用a[3]来表示   所以说数组的索引范围就是 0~ 数组名.length - 1

public class Demo3 {

	public static void main(String[] args) {
	
		int[] a = new int[]{1,2,3,4};

		for (int i=0; i

当我们把整个数组的所有值全部输出我们就叫数组的遍历

JAVA从入门到精通------基础篇------数组_第1张图片

JAVA从入门到精通------基础篇------数组_第2张图片

当我们不往数组当中赋值时,数组也会有默认值 

byte       0

short      0

int          0

long       0

double   0.0

float       0.0

char       一个英文空格

boolean  false

String     null



5、数组的扩容

1、循环将原数组中的元素直接赋值给新数组

int[] a = {1,2,3,4,5};
	    
		int[] newA = new int[a.length*2];
	     
		for (int i=0; i

2、System.arraycopy(原数组,原数组起始位置,新数组,新数组起始位置,长度)

      复制可以选择性复制,灵活性高

public static void main(String[] args) {
	
	
		int[] a = {1,2,3,4,5};
	    
		int[] newA = new int[a.length*2];
		
		//a是老数组的名字
		
		//0是老数组a的下角标
		
		//newA是指新的数组(需要提前创建)
		
		//2是指新数组的下角标
		
	    //a.length是指从 数组a 你定义的 下角标 开始往下复制,一直复制a.length个 如果第二个参数
		//不是0一定会造成长度溢出 会报错 java.lang.ArrayIndexOutOfBoundsException
		System.arraycopy(a, 0, newA, 2, a.length);
	
		for (int i=0; i

3、java.util.Arrays.copyOf(原数组,新长度); //返回带有原值的新数组

      复制只能全部复制,灵活性低

int[] a = {1,2,3,4,5};
	    
		//调用java.util.Arrays方法 
		//需要提前定义一个数组进行接收
		
		//第一个为老数组的名字
		//第二个为新数组的长度
		int[] newA = Arrays.copyOf(a, a.length*2);
		
		for (int i=0; i


6、栈和堆的概念

JAVA从入门到精通------基础篇------数组_第3张图片

 JAVA从入门到精通------基础篇------数组_第4张图片

基本数据类型,方法里一般使用return
因为一开始在main定义了一个变量,假如说定义的变量叫num,num传入方法中之后,栈里又生成了一个新的变量,名字也叫num,然后是这个新的num进行方法里的运算,
如果没有return的话
在main方法里边输出num依旧是原来的旧num,只有新的那个num值才发生改变
如果有return的话
方法里边写return num ,因为得把num返回上去,就相当于在栈里,前两个num的上边,在栈里再定义一个新的变量,名字也叫num,值就是第二个num在方法里进行运算之后的那个值
也就是说,这个num是复制第二个num的值,然后返回上去,进行输出,输出的是这个num


引用数据类型
在栈里边放的是地址,他和基本数据类型不一样,基本数据类型放值,如果说放的是地址的话,因为地址是一样的,复制了,也是一样的地址,方法里边,改的是堆里边的东西,但是地址名没改,
所以输出的时候,有没有void一样



7、二维数组

先声明 再分配内存空间

数据类型[][] 数组名;

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

声明并分配空间

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

声明并赋值(繁琐版)

数据类型[][] 数组名 = new 数据类型[高维长度][]; //不规则数组,自行new低维数组

声明并赋值(简化版)

数据类型[][] 数组名 = {{值1,值2,值3},{值1,值2},{值1,值2,值3,值4},...};



8、二维数组的遍历

public class Demo3 {

	public static void main(String[] args) {
	    
		int[][] arry = {{1,2,3},{4,5},{1,2,3,4}};
	    
		for (int i=0; i < arry.length; i++) {
			for (int j=0; j

你可能感兴趣的:(javase,java,开发语言,后端)