一、方法重载
-
方法重载(OverLoad):方法名相同,参数列表不同,与返回值无关!
Java规定:如果很多个功能都是一样的,又做到方法名要见名知意;参数列表不同:
1)参数个数不一样;
2)参数类型不一样;举例1: public static int compare(int a,int b){} public static float compare(float a,float b){} public static int compare(float a,int b){} public static int compare(float a,double b){}
-
Java中的方法重载:为了提供这个功能扩展性:方法名相同,可以接收各种类型的参数!
举例2: Math类的abs(int/double/float...): //求绝对值 Arrays类: //数组工具类 binarySearch(int[]/byte[]/char[]/double[]..,int key): //二分搜索法 sort(int[]/byte[]/char[]/double[]) : //给数组排序的(默认升序排序) 举例3: class FunctionDemo{ public static void main(String[] args){ //调用方法 int result = sum(10,20) ; System.out.println("result:"+result) ; System.out.println("----------------------") ; //int result2 = sum2(10,20,30) ; int result2 = sum(10,20,50) ; System.out.println("result2:"+result2) ; System.out.println("----------------------") ; //int result3 = sum3(10,20,30,40) ; int result3 = sum(10,20,50,60) ; System.out.println("result3:"+result3) ; } //求两个数据之和! public static int sum(int a,int b){ return a + b ; } //求三个数据之和 //public static int sum2(int a, int b,int c){//方法名相同 public static int sum(int a,int b,int c){ return a + b + c ; } //求四个数据之和 //public static int sum3(int a,int b,int c,int d){ public static int sum(int a,int b,int c,int d){ return a + b + c + d ; } }
二、数组
-
数组的概念:就是用来存储同一种数据类型的容器!
(类型必须一致,否则数组定义的时候 编译通过不了) -
特点:
1)数组的长度是固定的!
2)存储的类型必须是同一种类型String[] strArray = {"hello","world",100} ;
3)数组中存储的元素可以是引用类型,也可以存储基本数据类型
int[] arr = new int[4] ; 举例: 存储5个学生 (集合之前讲)
创建数组:数据类型[] 数组名称 = new 数据类型[数组长度] ;
Student[] students = new Student[5] ; 对象数组(能够存储对象的数组)
-
数组的定义格式:(数组目前:都存储基本类型)
方式1) . 数据类型[] 数组名称 ; (推荐)
举例:
int[] arr ; 定义了一个int类型的数组arr变量方式2) . 数据类型 数组名称[] ;
举例
int arr[] ; 定义了一个int类型的arr数组变量; -
数组的初始化:
动态初始化
静态初始化1). 动态初始化:我们定义了数组的长度,数组的元素由系统默认初始化!
格式: 数据类型[] 数组名称 = new 数据类型[数组长度] ; int[] arr = new int[3] ; 数据类型 数组名称[] = new 数据类型[数组长度] ; int arr[] = new int[3]
2). 静态初始化:给定了数组的元素的内容,由系统指定数组的长度!
格式: 数据类型[] 数组名称 = new 数据类型[]{元素1,元素2,元素3...} ;(推荐) 数据类型 数组名称[] = new 数据类型[]{元素1,元素2,元素3...} ; 简写方式: 数据类型[] 数组名称 = {元素1,元素2,元素3...} ; int[] arr = {1,2,3,4,5,6} ; 注意: 不能动静初始化(要么动态初始化,要么静态初始化!) int[] arr = new int[3]{1,2,3} ; 错误的
举例:
class ArrayDemo3{
public static void main(String[] args){
//创建一个数组,静态初始化
int[] arr = {11,22,33,44,55} ;
System.out.println(arr) ; //地址值
System.out.println(arr[2]) ;
System.out.println(arr[3]) ;
}
}
- 在数组中如何获取数组的元素?
数组名称[索引值]:索引值:0开始
最大索引值:数组长度-1
举例:
class ArrayDemo{
public static void main(String[] args){
//数据类型[] 数组名称 = new 数据类型[数组长度] ;
//创建一个int类型的数组,长度为4
int[] arr = new int[4] ;//arr[0],arr[1],arr[2],arr[3]
int[] arr2 = new int[3] ;
System.out.println(arr2) ;
System.out.println(arr) ; //[I@6d06d69c 地址值
//[:数组
//@:地址值标记
//6d06d69c:一堆十六进制数据
/*
解释说明一下格式:
=号左边
int:里面存储的都是int类型
[]:一维数组
arr:数组名称(符号标识符的规则)
=号右边
new :创建对象
int:int类型的元素
[]:一维数组
4:数组的长度
*/
System.out.println("----------------------------") ;
//在数组中如何获取数组的元素?
//数组名称[索引值]:索引值:0开始
System.out.println(arr[0]) ;
System.out.println(arr[1]) ;
System.out.println(arr[2]) ;
System.out.println(arr[3]) ;
}
}
-
在数组注意问题:
1). 数组角标越界异常:ArrayIndexOutOfBoundsException
出现的原因:访问了数组中不存在的索引值,索引值是非法!(大于或者等于数组长度,索引值为负)
解决方案:及时检查错误,然后更新代码!2). 数组是引用类型,引用类型的默认值是null(空对象),
空指针异常:NullPointerException
出现的原因:
1)在数组中的,数组对象已经为null,还要访问里面的元素
2)在后期可能会使用某些类的功能的时候,但是这个类的对象已经为null了解决方案:(在idea中,使用断点来调试程序!debug)
在某段代码中,如果出现空指针,在使用该对象的时候,进行非空判断!
举例:
arr = null ;
//对arr进行非空判断
if(arr!=null){
System.out.println(arr[0]) ;
}else{
System.out.println("数组对象已经为null了...") ;