方法
概念:
1.定义在类中, 完成一个特性的功能。
2.当某些功能语句,在不同的地方需要重复使用时,可以将这些代码提取出,使用大括号包裹起来,为了方便使用,定义一个名字,哪需要使用这段代码,
通过该名字即可。
好处:
1.提高了代码的复用性
2.代码的封装性
格式:
修饰符 返回值类型 方法名(参数列表){
方法体语句;
return 返回值;
}
说明:
修饰符: public static 或 static
返回值类型: 数据类型(基本类型或引用类型)
功能执行后,产出的数据的数据类型。
方法名: 合法的标识符,即自己定义的名字(见名知意)
格式: xxx xxxYyyZzz
参数列表: 列表个数>= 0,参数指的是变量的声明(数据类型 变量名),多个参数使用逗
号进行分隔开。当编写功能时,如果需要外界资源数据辅助完成功能的编写,
即需要使用参数列表存储这些资源数据。
方法体语句: 编写功能的语句,1到多条。
return:
返回的意思。
作用:
1. 将功能执行后的结果进行返回
2. 结束方法
注意:
1.方法不调用不执行。
2.定义的方法包括main方法在内,都没有顺序之分,都是平级的。
方法不能嵌套编写。
调用方法的格式:
方法名(实际参数); 实际参数---实参 注意:形参顺序决定了实参的顺序
具体返回值类型时:
1.直接输出打印(方法名(实际参数));
2.定义变量接收方法执行后返回的结果数据
返回值类型 变量名 = 方法名(实际参数);
当编写方法时,发现方法执行完没有一个具体的数值产生,而是将数据直接输出打印到控制
台上,那么返回值类型使用关键字void来代替,在方法体中,return后就没有返回值数据,
因此直接写return;即可。这样的方法在调用时,直接使用格式:方法名(实参);即可。
eg:
public static void method(int a){
...
return;
}
调用:method(10);
方法体中的return后边没有数据数据,通常这个语句可以省略不写,编译器会自动补。
方法的重载
概念:
在一个类中,允许功能相似的方法,使用相同的方法名,只要参数列表不同即可。
参数列表不同:
参数个数不同、 参数类型不同、参数顺序不同
注意:与返回值类型没有关系
当调用重载方法时,jvm会根据实际参数列表的个数及类型自动匹配对应的方法执行。
目前我们使用的println或print方法都是重载方法。
数组
引用类型: 数组、 类、接口、枚举
概念:
相当于是容器,可以存储一组数据。
数组中存储的数据,称之为叫做元素。
特点:
1.是一组相同类型的数据
2.数据是基本类型可以,引用类型也可以
3.容器中的数据都有下标(角标),通过下表可以操作数组中的数据,下标值是从0开始
4.容器的大小是固定的,不可改变
5.获取元素个数:数组名.length
获取元素最大下标值:数组名.length-1
创建:
动态创建:
元素类型[] 数组名 = new 元素类型[个数];
静态创建:
元素类型[] 数组名 = new 元素类型[]{e1,e2,e3,...};
简写格式:元素类型[] 数组名 = {e1,e2,e3,...};
注意:代表数组的[],可以放在元素类型的后边,或数组名的后边
异常:
操作数组时,最容易出现的异常。
以上的异常是:下标越界异常。
原因:访问了不存在的下标。
以上的异常是:空指针异常
原因:引用变量(数组名)并没有代表一个真实存在的数组容器(数组容器根本就不存在)时,而有想要取操作容器中的数据时。
数组的应用:
1.遍历数组元素
2.数组元素的求和
3.数组元素的反转
4.数组元素的查找
5.数组元素的排序
数组的内存理解
jvm执行程序的时候,会将内存划分5个区别,不同的区域做不同的处理(目的提高执行效率)。
5片内存空间:
栈:使用来执行方法的。特点:先进后出。
堆:存储容器或实体(new关键字出现)
特点:
1.会为其分配地制值
2.在该空间中,根据空间元素的数据类型,存储默认值
基本类型:
整数:0 ; 浮点:0.0f ; 0.0 ; 字符:‘\u0000’;布尔:false
引用类型: null;
3.在堆中的容器,没有被任何引用变量所指向,那么这个容器就是垃圾。
在Java中有一个机制,垃圾回收机制(GC)会不定时启动,回收堆中的垃圾。
如何让容器成为垃圾,即让容器原来引用的引用变量值为null。
方法区:存储class对象,常量、静态代码等。
本地方法区:指的就是c或c++中的代码(底层代码)
程序控制器:指的就是控制程序执行哪行代码的。
int[] arr = new int[3];
s.o.p(arr);
结果: [I@15db9742
[ : 代表的是几维数组
I : 元素的类型
@ : 固定的字符
15db9742 :十六进制数,哈希码值。在堆中开辟空间的容器,都会有一个哈希值。
方法传参:
值传递:指的是基本数据类型的数据进行传递,对原来的变量没有影响(栈)
引用传递:指的是引用类型的数据进行传递,对原来的变量有影响(堆和栈)