方法重载的基本使用
对于功能类似的方法来说,因为参数列表不一样,却需要记住那么多不同的方法名称,这样太麻烦。例如:
上面代码中这几个方法实现的功能都是求和,但是它们的参数列表不一样,如果对于参数列表的每一种不同情况都重新定义一个方法,那么当情况比较多的时候就会很麻烦,所以这里可以进行“方法重载”。
方法的重载(Overload):多个方法的名称一样,但是参数列表不一样。
方法重载的好处:只需要记住唯一一个方法名称,就可以实现类似的多个功能。
方法重载与下列因素相关:
1. 参数个数不同
2. 参数类型不同
3. 参数的多类型顺序不同
方法重载与下列因素无关:
1. 与参数的名称无关
2. 与方法的返回值类型无关
【 在调用输出语句System.out.println()的时候,println方法其实就是进行了多种数据类型的重载形式。】
数组
数组是一种容器,可以同时存放多个数据
数组的特点:
1. 数组是一种引用数据类型
2. 数组当中的多个数据的类型必须统一
3. 数组的长度在程序运行期间不可以改变
数组的初始化:在内存当中创建一个数组,并且向其中赋予一些默认值
有两种常见的初始化方式:
1. 动态初始化(指定长度)
格式: 数据类型[ ] 数组名称 = new 数据类型[数组长度] ;
含义: 左侧数据类型 -- 数组中保存的数据全都是统一的类型
左侧的中括号 -- 代表是一个数组
右侧new -- 代表创建数组的动作
右侧数据类型 -- 必须和左侧数据类型保持一致
右侧中括号的长度 -- 指定数组当中到底可以保存多少个数据,是一个int数字
2. 静态初始化(指定内容)
标准格式: 数据类型[ ] 数组名称 = new 数据类型[ ] {元素1,元素2,...} ;
省略格式: 数据类型[ ] 数组名称 = {元素1,元素2,...} ;
注意:
1. 虽然静态初始化没有直接告诉长度,但是根据大括号里面的元素具体内容也可以自动
推算出来长度
2. 静态初始化标准格式可以拆成两个步骤
数据类型[ ] 数组名称 ;
数组名称 = new 数据类型[ ]{ 元素1,元素2,...} ;
3. 动态初始化也可以拆成两个步骤
4. 静态初始化一旦使用省略格式就不能拆分成为两个步骤
【 使用建议:如果不确定数组当中的具体内容,用动态初始化,已经确定了具体的内容用静态初始化。】
直接打印数组名称得到的是数组对应的内存地址的哈希值。
访问数组元素的格式: 数组名称[ 索引值 ] ;
索引值:就是一个int数字,代表数组当中元素的编号(其中索引值从0开始,一直到数组的长度减1为止)
使用动态初始化数组的时候其中的元素会自动拥有一个默认值:
1. 如果是整数类型,则默认为0
2. 如果是浮点类型,则默认为0.0
3. 如果是字符类型,则默认为'\u0000'
4. 如果是布尔类型,则默认为false
5. 如果是引用类型,则默认为null
【注意:静态初始化其实也有默认值的过程,只不过系统自动马上将默认值替换成为了大括号当中的具体数值】
数组下标越界
在使用下标访问数组时,下标不能越界,数组的下标索引从0开始,到数组的长度减1。
所有的引用类型变量都可以赋值为一个null值,但是代表其中什么都没有。
数组必须进行new初始化才能使用其中的元素,如果只是赋值一个null,没有进行new创建,那么将会发生“空指针异常 ”
空指针异常的原因:忘了new
空指针异常的解决方法:补上new
如何获取数组的长度?
数组名称.length
数组一旦创建,程序运行期间其长度不可以改变
遍历数组:即将数组中的每一个元素进行逐一处理,默认的处理方式就是打印输出
数组元素反转其实就是对称位置的元素交换
通常遍历数组用的是一个索引,但是如果要表示对称位置则需要两个索引
数组可以作为方法的参数,当调用方法的时候,向方法的小括号进行传参,传递进行的其实是数组的地址值
任何数据类型都能作为方法的参数类型或者返回值类型,数组作为方法的参数,传递进去的其实是数组的地址值,数组作为方法的返回值,返回的其实也是数组的地址值。
一个方法可以有0、1甚至多个参数,但是只能有0或者1个返回值,不能有多个返回值。如果希望一个方法中产生的多个结果数据都被返回,则可以通过使用一个数组作为返回值类型实现。
Java的内存
java的内存需要划分为5个部分:
- 栈(Stack) :存放的都是方法中的局部变量,方法的运行一定要在栈当中。
局部变量:方法的参数,或者是方法{}内部的变量
作用域:一旦超出作用域,立刻从栈内存中消失
- 堆(Heap):凡是new出来的东西都在堆中。
堆内存里面的东西都有一个地址值:16进制
堆内存里面的数据都有默认值(在上面动态初始化数组中提到过)
- 方法区(Method Area):存储.class相关的信息,包含方法的信息。
- 本地方法栈(Native Method Stack):与操作系统相关。
- 寄存器(pc Register):与CPU相关。