Java语言基础5:方法、方法重载、一维数组、内存分配、
1、方法的定义和格式
(1)方法:完成特定功能的代码块。
(2)注意:在很多语言里面有函数的定义,而在Java中函数被称为方法。
(3)方法格式:
修饰符 返回值类型 方法名(参数类型 参数名1, 参数类型 参数名2 ...) {
方法体语句 ;
return 返回值 ;
}
(4)详细解释:
修饰符:目前就用 public static。后面我们再详细的讲解其他的修饰符。
返回值类型:就是功能结果的数据类型。
方法名:符合命名规则即可,方便我们的调用。
参数:
1)实际参数:就是实际参与运算的。
2)形式参数;就是方法定义上的,用于接收实际参数的。
参数类型:就是参数的数据类型。
参数名:就是变量名。
方法体语句:就是完成功能的代码。
return:结束方法的。
返回值:就是功能的结果,由return带给调用者。
(5)要想写好一个方法,就必须明确两个东西:
A: 返回值类型:返回结果的数据类型。
B: 参数列表:你要传递几个参数,以及每个参数的数据类型。
C:方法写在类中,与main方法是平级的。可以在main方法中调用来执行它!
(6)方法的执行特点:不调用,不执行。
(7)如何调用呢? (有明确返回值的调用)
A: 单独调用, 一般来说没有意义,所以不推荐。
B: 输出调用, 但是不够好。因为我们可能需要针对结果进行进一步的操作。
C: 赋值调用, 推荐方案。
(8)方法的注意事项:
A:方法不调用不执行。
B:方法与方法之间是平级关系,不能嵌套定义。
C:方法定义的时候参数之间用逗号隔开,实参和形参要一 一对应。
D:方法调用的时候不用再传递数据类型。若方法有返回值,则调用的时候return要给 赋值掉用。
(9)void类型返回值的方法,只能使用单独调用。
2、方法重载
(1)方法重载:在同一个类中,允许存在一个以上的同名方法,只要各个同名方法的参数个数 或者 参数类型 或者 参数顺序不同,即可。
(2)方法重载特点:
1)与方法的返回值类型无关,只看方法名和参数列表。
2)在调用时,虚拟机JVM通过参数列表的不同来区分和调用最适合的同名方法。
3、一维数组
(1)数组是存储同一种数据类型的多个火元素的集合。数组可以看成是一个容器。
(2)数组即可以是基本数据类型,也可以存储引用类型。
(3)数组的定义方式:
1)格式1:数据类型[ ] 数组名; int[ ] a;
2)格式2:数据类型 数组名[ ]; int a[ ];
(4)数组初始化:Java中的数组必须先初始化,然后才能使用。
所谓初始化,就是为数组中的数组元素分配内存空间,并为每个数组元素赋值。
(5)数组的初始化方式:
1)动态初始化:初始化时只给定数组长度,由系统为数组分配初始值。数组长度其实就是数组中元素的个数。
格式:数据类型[ ] 数组名=new 数据类型[ 数组长度 ];
举例:int[ ] arr=new int[3];
解释:定义了一个int类型的数组,这个数组中可以存放3个int类型的数据,索引值:arr[0]、arr[1]、arr[2]。
索引:索引就是每个数组元素的编号,从0开始,直到数组长度-1。
2)静态初始化:初始化时指定每个数组元素的初始值,由系统决定数组长度。
格式:数据类型[ ] 数组名=new 数据类型[ ] { 元素1,元素2,... };
举例:int[ ] arr=new int[ ]{1,2,3,4};
解释:定义了一个int类型的数组,这个数组中可以存放4个int类型的数据,并且数组元素值分别是1,2,3,4。
简化写法:int[ ] arr={1,2,3,4};
(6)数组常见错误:
1)数组索引越界:ArrayIndexOutOfBoundException,原因是你访问到了数组中不存在的索引了。
2)空指针异常:NullPointerException,原因是数组引用已经不指向堆内存了,而你却还用数组名去访问数组元素。
另:遇到一个Exception场景就把它记录下来,存储在自己的脑海中。
4、内存分配
(1)局部变量:在方法定义中 或者 方法声明中的变量被称之为局部变量。
(2)堆内存的特点:
1)每个new 出来的东西都有地址值。
2)每个变量都有默认值。byte、short、int、long:默认值是0。float、double:默认值是0.0。char:默认值是\u0000。boolean:默认值是false。引用类型:默认值是null。
3)使用完毕后变成了垃圾,但是并没有立即被回收。会在垃圾回收器空闲的时候回收。但是,栈内存的数据使用完毕之后就被释放掉了(脱离其作用域就算是使用完毕了)。