java 几何平均 用java求平均数_ide


数组

问题引入

需求:计算一个班级100人的考试总分;


java 几何平均 用java求平均数_java 几何平均_02


  • 数组的概念

数组,就是一种容器,它可以保存多个相同类型的数据;而且数组一旦创建,容量不能更改

数组的定义格式

数组使用[] 表示;定义格式是:

数据类型[] 数组名(变量名) = new 数据类型[数组的容量];


java 几何平均 用java求平均数_java 几何平均_03


int  arr[]		=  new  int[10];
int  []arr = new int[10];


  • 数组的使用

数组元素的存取&数组的索引


java 几何平均 用java求平均数_数据_04


java 几何平均 用java求平均数_数据_05


结论:

  1. Java中,数组都具有索引,索引实际上就是数组中每个存储单元的编号;
  2. 向数组中保存数据和取出数据,都是通过索引进行的;
  3. 索引的特点是:
  4. 从0开始,依次递增;最大索引就是数组容量减一;


java 几何平均 用java求平均数_ide_06

https://www.zhihu.com/video/1065359391645093888


数组的遍历&数组的length属性

在每个数组中,都有一个length属性,表示数组的容量;

使用方式是:

数组名.length;

注意:因为数组一旦创建,容量就固定不变,所以数组的length属性也不能改变;


java 几何平均 用java求平均数_数据_07


java 几何平均 用java求平均数_java求平均值_08


java 几何平均 用java求平均数_java求平均值_09

https://www.zhihu.com/video/1065359611183321088


如果对数组的操作(赋值或者取值)没有规律,那么就不能使用循环来简化;


数组的内存原理(了解)

  • java的内存组成


java 几何平均 用java求平均数_数据_10


  • 数组的内存图解

需求1:画出下面代码执行的内存图解:


public static void main(String[] args) 
	{
		int[]  array = new int[3];

		array[0] = 10;

		int a = array[0];

		System.out.println(a);

		System.out.println(array);

		array = null;

		System.out.println(array);
	}


  • 内存图解:


java 几何平均 用java求平均数_java求平均值_11


java 几何平均 用java求平均数_ide_12

https://www.zhihu.com/video/1065366100199575552


需求2:下面的代码执行结果是什么?为什么?


public static void main(String[] args) {
		int[] array = new int[3];

		int[] arr =  array;
 
		array[1] = 100;

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

		arr[1] = 50;

		System.out.println(array[1]);//50
	}


java 几何平均 用java求平均数_数组_13


java 几何平均 用java求平均数_java 几何平均_14


结论:

如果一个变量中保存的是实际数据本身, 这个变量就是基本类型变量;

如果一个变量是引用类型的变量,变量空间中保存的就一定是一个内存地址(或者是默认值null)


java 几何平均 用java求平均数_ide_15

https://www.zhihu.com/video/1065366155744641024



引用传递和值传递


java 几何平均 用java求平均数_数组_16


如果是引用类型的变量,那么在变量中保存的是堆内存中的空间地址;

如果是引用类型的变量进行赋值,实际传递的是保存在变量中的地址,像这种传递数据的方式就叫做引用传递(传递的是内存地址);

如果是基本类型的变量进行赋值,实际传递的是保存在变量中的常量值,叫做按值传递;

因为值传递传递的是实际数据,所以不同的基本类型的变量的修改,相互之间没有影响;

应为引用传递传递的是堆内存中的引用地址,所以如果不同的变量保存的是相同的引用地址,那么他们都指向同一块空间;任何一个变量对空间的修改,都已影响其他变量;


java 几何平均 用java求平均数_java 几何平均_17

https://www.zhihu.com/video/1065366404538175488



数组使用中的常见问题

NullPointerException


java 几何平均 用java求平均数_ide_18


java 几何平均 用java求平均数_java求平均值_19

https://www.zhihu.com/video/1065366669953683456


ArrayIndexOutOfBoundsException


java 几何平均 用java求平均数_java求平均值_20


当试图使用不存在的下标(超出范围的下标)来操作数组的时候,就会出现这个问题;


java 几何平均 用java求平均数_数据_21

https://www.zhihu.com/video/1065366747326017536



数组的第二种定义格式

  • 数组定义格式:
数据类型[]  数组名 = new 数据类型[数组容量];
数组名[索引] = 数据;


如果在定义数组时已经知道数组中会保存什么数据,就可以使用另一种定义方式,在创建数组的同时将数据保存在数组中;

格式:


数据类型[]  数组名  =  new 数据类型[]{数据1,数据2,数据3,数据4……数据n};


注意:使用这种方式,不能在中括号中写数组的容量;


java 几何平均 用java求平均数_java求平均值_22


这种定义格式的简写形式:


数据类型[]  数组名  =  {数据1,数据2,数据3,数据4……数据n}; 
注意:简写只是为了书写方便,实际上编译器还是会加上new 这一部分;
注意:使用简写形式时,不能将数组变量的声明和赋值写成两行;


java 几何平均 用java求平均数_java求平均值_23


java 几何平均 用java求平均数_java求平均值_24


java 几何平均 用java求平均数_java 几何平均_25

https://www.zhihu.com/video/1065367103267344384



数组的练习

  • 数组平均值:

例子:求下列数字的平均值:1.0,2.4,3.5,4.3,5.1,6.8,7.2,8,9,10


java 几何平均 用java求平均数_数组_26


java 几何平均 用java求平均数_数组_27

https://www.zhihu.com/video/1065367217994096640


  • 数组求最大值

例子:求下列数字的最大值:1.0,2.4,3.5,4.3,5.1,6.8,7.2,8,9,10


java 几何平均 用java求平均数_java求平均值_28


java 几何平均 用java求平均数_java求平均值_29


java 几何平均 用java求平均数_java求平均值_30