04 Java基础语法(函数、数组)

----------- android培训java培训、java学习型技术博客、期待与您交流! ------------

						函数和数组
1、函数

	* 定义:函数就是定义在类中的具有特定功能的一段独立小程序;
		如果一段代码在多个地方使用, 可以将代码定义为函数.使用名字调用函数即可,提高了代码的复用性;
		函数也称为方法。
	  格式:修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,...){
				执行语句;
				return 返回值;
		}
		返回值类型:函数运行后的结果的数据类型;
		参数类型:是形式参数的数据类型;
		形式参数:是一个变量,用于存储调用函数时传递给函数的实际参数;
		实际参数:传递给形式参数的具体数值;
		return:用于结束函数;
		返回值:该函数运算后的结果,该结果会返回给调用者;

	* 特点:定义函数可以将功能代码进行封装;
		便于对该功能进行复用;
		函数只有被调用才会被执行;
		函数的出现提高了代码的复用性;
		函数无返回值,返回值类型用关键字void表示,函数中的return语句,
		    可以省略不写,但是加上return表示结束当前函数;如果在return
		    之后还有语句就执行不到,java虚拟机也会报错;
		
	* 注意:函数中只能调用函数,不可以在函数内部定义函数;
		定义函数时,函数的结果应该返回给调用者,交由调用者处理;
		函数只为实现他所需功能,不要实现不需要的功能;
		输出语句只能对有返回值类型的函数调用后打印,不能对没有返回值类
			型的函数(void)进行打印;
		学习了函数后,再写代码,就不要将代码都放在main函数里,main函数的作
			用,用于调用你定义的函数,并测试该功能是否可用;

2、函数的重载
	* 概念
		在同一个类中,允许存在一个以上的同名函数,只要它们的参数个数或者参数类型不同即可。
	* 特点:
		与返回值类型无关,只看参数列表。参数个数和参数类型
	* 好处:
		方便于阅读,优化了程序设计。

3.数组
	* 概念
		同一种类型数据的集合。其实数组就是一个容器。
	* 好处
		可以自动给数组中的元素从0开始编号,对数据进行存储,方便我们遍历这个数组,和使用其中任意一个元素
	* 格式1:
		元素类型[] 数组名= new 元素类型[元素个数或数组长度];
		示例:int[] arr = new int[5];其中所有元素默认值都为0;
		这种格式叫动态初始化:只指定数组长度,由系统为数组元素分配初始值;
	  格式2:
		元素类型[] 数组名= new 元素类型[]{元素,元素,……};
		int[] arr = new int[]{3,5,1,7};可以在任何情况使用;
		int[] arr = {3,5,1,7}; (可以看成上面的简写形式)这种方式只能在给数组类型变量赋值时使用;
		这种格式叫静态初始化:显式指定每个数组元素的初始值,由系统决定数组长度;
	* 使用数组(示例):
		1,声明数组  int[] arr;
		2,分配空间 arr = new int[5];
		3,赋值  arr[0] = 5;
		4,处理数据 arr[0] = arr[0]*10;
	* 内存结构
		Java程序在运行时,需要在内存中的分配空间。为了提高运算效率,又对空间进行了不同
		区域的划分,因为每一片区域都有特定的处理数据方式和内存管理方式;
	  栈内存:(stack)
		用于存储局部变量,当数据使用完,所占空间会自动释放;
	  堆内存:(heap)
		数组和对象,通过new建立的实例都存放在堆内存中;
		每一个实体都有内存地址值;
		实体中的变量都有默认初始化值;
			int--->0;  double--->0.0;  boolean--->false;  char----->'\u0000';
		实体不在被使用,会在不确定的时间内被垃圾回收器回收,释放堆内存;
	* 数组知识点:
		数组只有一个名称,即标识符
		数组中每一个元素都能通过下标来访问
		数组角标:从0开始
		数组长度:变量名.length,数组的长度是固定的,因为它的底层是public和final修饰
		数组最大角标值:length-1 数组长度固定,避免角标越界
		数组动态初始化:int[] arr = new int[5]; 
		数组静态初始化:int[] arr = {1,2,3,4};
		数组定义的注意事项:
			1,数组定义时,必须明确元素的类型。
			2,数组定义时,必须明确元素的个数。
	* 什么时候使用数组?
		当要操作的同种数据类型的变量较多时,需要将这些数据进行存储,这时就需要用到容器,
		而数组就是容器中的一种.
	  如何使用数组?	
		存在数组中的数据是有索引的,从0开始递增,我们通过数组名和索引就可以操作其中每一个元素。
		System.out.println(arr[0]);	// 打印数组中索引为0的元素
		arr[1] = 100;			// 给数组中索引为1的元素赋值为100
		数组的长度:数组可以使用length属性获取其长度;
		遍历数组:由于数组可以通过索引获取每一个元素,又可以通过length获取长度,那么我们就可以定
			  义循环来遍历数组中的每一个元素;
	* 常见错误:
		1、int[] arr = new int[];	//没有注明数组大小
		2、int[] arr = new int[5];
		   System.out.println(arr[5]);	//ArrayIndexOutOfBoundsException数组下标越界
					访问到了数组中不存在的角标。但是编译可以通过。因为,new运行的时候,
					只是在运行的时候才建立数组,编译时只进行语法检查,编译只能检查出语法错误
					new只有在运行的时候才在堆内存开辟一块内存空间,并分配0,1,2,3,4,这5个角标,
					换个角度说编译的时候就这个数组已经把堆内存的空间占用,如果不运行会造成空间的浪费
		3、int[] arr;			//创建数组并赋值的方式,必须在一条语句中完成。
		   arr = {1,2,3,4};		
		4、int[] arr = null;		//arr不指向任何实体
		   System.out.println(arr[0]);	//NullPointerException 空指针异常

4、数组中的数组(二维数组[][])
	* 格式1:int[][] arr = new int[3][2];
		定义二维数组arr,二维数组中有3个一维数组		
		每一个一维数组中有2个元素,一维数组的名称分别为arr[0], arr[1], arr[2]
		给第一个一维数组1脚标位赋值为78写法是:arr[0][1] = 78;
	* 格式2:int[][] arr = new int[3][];
		二维数组中有3个一维数组,每个一维数组都是默认初始化值null
		可以对这个三个一维数组分别进行初始化
		arr[0] = new int[3];
		arr[1] = new int[1];
		arr[2] = new int[2];
	* 格式3:int[][] arr = {{3,8,2},{2,7},{9,0,1,6}};
		 定义二维数组arr,其中有三个一维数组,每一个一维数组中元素都已初始化
		 其中有三个元素都是数组, 第一个数组3个元素, 第二个2个元素, 第三个4个元素.
	* 格式4:int[][] arr = new int[][] {{3,8,2},{2,7},{9,0,1,6}};
		定义二维数组arr, 其中有三个元素都是数组, 第一个数组3个元素, 第二个2个元素, 第三个4个元素.

5、与数组操作相关函数:
	Arrays.toString() 查找帮助文档Arrays类,学习使用此方法将字符串转为字符串形式。
		将一个数组转为字符串表示形式
	System.arraycopy() 查找帮助文档System类,学习使用此方法拷贝数组中元素。
		将一个数组中的某些元素拷贝到另一个数组的指定位置


	
			

		


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值