您的位置 首页 java

Java基础语法&数组

java 基础语法&数组

数组:其实就是定义一个可以存储多个数据的容器,也称为实体。实体的定义需要使用一个关键字来完成。就是new。要明确这个实体中存储的元素的类型,和元素的个数 .

1、数组的定义形式:

元素类型[] 数组名 = new 元素类型[元素个数或数组长度];

元素类型[] 数组名 ={1,2,3,4,5,6,7};可以直接指定具体的数据

元素类型[] 数组名;

数组名 = new 元素类型[元素个数或数组长度];

2、数组的特点:

1)数组定义时,必须明确数组的长度(就是数组中可以存储的元素的个数。)因为数组长度是固定的。

2)数组定义时,必须明确数组中的元素的数据类型。

案例1:

int[] arr = new int[3];

arr[0] = 89;

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

3、java内存区域的划分:1)寄存器。2)本地方法区。3)方法区。4)栈内存。5)堆内存。

为什么划分这么区域?因为每一个内存区域对数据的处理方式不同。目前要讲的就是栈和堆。

4、栈内存的特点:存储都是局部变量 ( 函数参数,函数内定义的变量,语句中定义的变量)。变量一旦使用完(作用域结束),就会在栈内存中自动释放。堆:存储的是实体(数组和对象,只要是new的,都在堆中)

5、堆内存的特点:1,堆内存中的实体都有首内存地址值.2,堆内存中的变量都有默认初始化值.3,对于没有任何引用变量指向的实体,会视为垃圾,会被垃圾回收机制所回收。

6、数组常见的问题:

ArrayIndexOutOfBoundsException:数组的角标越界异常

当访问到了数组中不存在的角标时,就会发生该异常。

NullPointerException 空指针异常。

当一个引用型变量没有任何实体指向时,还在使用实体中的内容。就会发生该异常。System.out.println(arr);// [I@c17164 @前面代表一个一维数组 @后面代表一个哈希值

1,数组是什么?

数组:数组就是具有同一类型的一些数的一个集合。

2,数组有什么特点?

数组的特点:必须明确数组的长度和数组的类型,以及数组带有角标,方便使用。

3,数组什么时候使用?

当在处理多个同类型的数据时候可以采用数组存储

4,java的内存(栈和堆)的特点?

栈:存储都是局部变量(函数参数,函数内定义的变量,局部代码块中定义的变量),栈内存的变量没有初始化值。变量一点使用完(作用域结束),随着函数的加载变量会在内存中开辟属于自己的空间。一旦函数运行结束,就会在栈内存中自动释放。先进后出,后进先出。

堆:存储的是实体(数组和对象,只要是new的都在堆中)。

new关键字一出现都会在堆内存中分配实体空间。

堆内存中的所有变量都会有默认初始化值。

5,画出一个数组的内存分布图。并用文字描述步骤。 内存分布图:

int[] arr = new int[3];

arr[1]=100;

内存加载说明:

当执行到 int[] arr 时。首先在栈内存开辟一个以数组名为名的空间,这个空间的目的是存放一个堆内存中数组的内存地址。此时这个空间中并没有存放任何值。

当执行到new int[3]时,会在堆内存中首先划分出一块数组内存区域,这个时候就有一个内存地址与之对应,这里假设0x0056。然后将这个区域分成3个小空间分别代表数组的三个存储空间,他们一旦分配就会自动产生索引角标,同时也会自动初始化值,此时由于数组是int的所有初始化值为0.并将这个堆内存中的数组首地址赋值给栈内存的arr空间。当赋值后,栈内存的arr数组名就能所引到堆内存中的数组存储区域。此时整个数组的定义个空间分配结束。当执行arr[1]=100时,就会将这个以100存放到数组角标为1的空间中,原来初始化的0被覆盖。需要注意的是,一旦arr不再指向堆内存的数组存储区域时,这个数组同时也没有其他引用变量所有引用,那么堆内存中的这个数组存储区域将变成垃圾,等待JVM的垃圾回收器把它收走。

数组的简单操作、排序、最值、折半查找、查表法、数组内存分布图

数组的简单操作:

数组在定义的时候必须明确数组的类型和长度,并明确了数组中元素的内容。

为了方便获取数组中的元素个数的方式,可以使用数组实体一个属性。length

使用方法为 数组名.length

数组最常见的操作就是数组:遍历。其实操作数组的最终核心思想:就是操作角标(索引)。

最值:

二维数组

常见的二维数组的定义形式:

1、 int[][] arr = new int[3][3];

2、 int[][] arr = new int[3][]; //定义一个二维数组,明确了二维数组的长度,但是二维中的每一个一位数组没有明确

arr[0]=new int[3];

arr[1]=new int[2];

arr[2]=new int[5];

3、 int[] arr[] = new int[3][3];

4、 int arr[][] = new int[3][3];

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

什么时候使用二维数组:当数组多了就可以采用二维数组来继续存储。

中括号随着类型定义对所有变量都起作用,如果中括号在变量后面只对当前的变量起作用。

class Array2Demo

{

public static void main(String[] args)

{

//int[] arr = new int[3];

//数组中的数组:数组中的元素还是数组。

//int[][] arr = new int[2][3];

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

//System.out.println(arr[0]);// [I@c17164

//System.out.println(arr);// [[I@c17164

int[][] arr = new int[][];//定义一个二维数组,明确了二维数组的长度,

//但是二维中每一个一维数组并没有明确。

//对二位数组中的每一个一维数组进行初始化。

arr[0] = new int[3];

arr[1] = new int[1];

arr[2] = new int[2];

System.out.println(arr);//[[I@c17164

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

class Array2Demo2

{

public static void main(String[] args)

{

//int[][] arr = {{3,7,18,5},{3,6,4,8,9},{15,89}};

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

//System.out.println(arr.length);//3

//System.out.println(arr[1].length);

//遍历二维数组中的所有元素。大圈套小圈

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

{

int sum = 0;

for (int y=0; y<arr[x].length ; y++)

{

//System.out.println(arr[x][y]);

sum += arr[x][y];

}

System.out.println(“sum=”+sum);

}

String[] arr1 = getMonth(“夏季”);

for(int x=0; x<arr1.length; x++)

{

System.out.println(arr1[x]+”,”);

}

}

public static String[] getMonth(String str)

{

String[] season = {“春季”,”夏季”,”秋季”,”冬季”};

int index = searchIndex(season,str);

String[][] month = {{“三月”,”四月”,”五月”},{“六月”,”七月”,”八月”}};

return month[index];

}

public static int searchIndex(String[] arr,String key)

{

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

{

if(arr[x].equals(key))

return x;

}

return -1;

}

}

1, 数组的操作基本思想?

数组:数组就是一个容器,用来装元素,需要明确数组的类型和数组的长度。

数组就是把很多个变量放在一起的一个集合。

2,数组的常见的操作动作以及理解过程。最值,排序,折半.

数组的基本思想:数组最常用的操作动作:存值和获取值,比如获取:最值

排序,折半查找。

3,数组容器的应用场景?

什么时候使用容器:一旦数据多,个数能确定就采用数组来存储。

4,必须掌握查表法,将查表法的思想写出来,并明确什么时候使用查表法。

表:是个容器,表里面存在一定的对应关系。

查:用一种对应关系去找另外一种对应关系。

编码表:是生活中的一些事物对应的二进制数的一个序列。

文章来源:智云一二三科技

文章标题:Java基础语法&数组

文章地址:https://www.zhihuclub.com/188964.shtml

关于作者: 智云科技

热门文章

评论已关闭

4条评论

  1. By contrast, Breuer and Anderson 2000 examined the nursing home records of 1385 women who had received TMX treatment compared with otherwise similar women who have not

网站地图