1.方法重载含义:
方法名相同,参数列表不同与返回值无关!
参数列表不同:a.参数个数不同
b.参数类型不同
例:public static int compare(float a,int b){}
public static int compare(float a,double b){}
好处:为了提供这个功能的扩展性,方法名相同,可以接受各种类型的参数
二.引用数据类型
一.数组,类,接口
1.数组
a.含义:就是用来存储同样一种数据类型的容器!
(类型必须一致,否则数组定义的时候,编译通过不了)
b.格式:(数组目前,都是存储基本数据类型)
方式1:数据类型 [] 数组名称;
举例:int [] arr;定义了一个int类型的数据的数组arr变量
方式2:数据类型 数组名称 [];
举例:int arr [];定义了一个int 类型的arr数组变量
c.初始化:动态初始化
静态初始化
d.动态初始化:我们定义了数组的长度,数组的元素由系统默认初始化!(懂了,里面的元素是定的)
数据类型 [] 数组名称 = new 数据类型 [数组长度];
int [] arr =new int [3];
数据类型 数组名称 [] =new 数据类型[数组长度];
int arr []=new int [3];
e.静态初始化:给定了数组的元素的内容,由系统指定数组的长度
格式:数据类型 [] 数组名称=new 数据类型[]{元素1,元素2,元素3...};(推荐)
数据类型 数组名称 []=new 数据类型[]{元素1,元素2,元素3...};
简写格式:数据类型[] 数组名称={元素1,元素2,元素3...};
int [] arr={1,2,3,4,5,6};
注意:不能动静初始化(要莫动态初始化,要莫静态初始化)
f.解释说明格式:
=左边:int:里面存储的都是int类型
[]:一维数组
arr:数组名称(符号标识符的规则)
=右边:new:创建对象
int:int类型的元素
[]:一维数组
4:数组的长度
三.数组的注意问题
1.数组注意问题
a.数组角标越界异常:ArrayIndexOutOfBoundsException
出现原因:访问了数组中不存在的索引值,索引值是非法的,大于或者等于数组的长度,索引值
为负。
解决方案:及时检查错误,然后更新代码
b.空指针异常:NullPointerException 数组是引用类型,引用类型的默认值是null(空对象)
出啊原因:在数组中的,数组对象已经为null,还要访问里面的元素
在后期可能会使用某些类的功能的时候,但是这个类的对象已经为null。
解决方案:(在idea中,使用断点来调试程序!debug)
在某段代码中,如果出现空指针,在使用该对象的时候,进行非空判断。
三.数组的遍历
1.遍历:
就是将数组的元素一一获取并输出
平常的输出,代码太几把多了,所以找个方法输出它,复杂东西咱给他整简单,
这块呢,用for循环遍历数组元素,但是呢这只能遍历有明确数量的元素,不明确数量的
元素就比较麻烦,然后加上length,不需要知道数目就可以遍历数组。
数组的属性:
length,获取长度,
2.冒泡排序:
两两比较,将最大的值往后放,第一次比较完毕后,最大值出现在最大索引处,依次这样比较,就可以得到排好序的数组。比较次数:数组长度-1次。
四.java中的内存分布
1.栈内存;
存储的局部变量,局部变量的生命周期:随着方法的调用而存在,随着方法调用完毕而消失
2.堆内存:
存储的new出来的东西:创建对象,对象创建完毕之后,不会立即消失,需要等待垃圾回收器(CG)回收
3.方法区:
字节码文件class域,static静态域,常量池
4.本地方法区()以及寄存器:跟系统/cpu相关
5.注意:
对象一旦创建完毕,地址值是固定的,除非重新在堆内存中开辟空间,产生新的地址