------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
传智基础班第5天重点学习内容:Java基础——方法、数组;
方法:
方法就是完成特定功能的代码块
在很多语言里面都有函数的定义
函数在Java中被称为方法
格式:
修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2…) {
方法体;
return 返回值;
}
方法格式解释
修饰符 比较多,后面会详细介绍。目前public static
返回值类型 用于限定返回值的数据类型
方法名 一个名称,为了方便我们调用方法
参数类型 限定调用方法时传入参数的数据类型
参数名 是一个变量,接收调用方法时传入的参数
方法体 完成功能的代码
return 结束方法以及返回方法指定类型的值
返回值 程序被return带回的结果,返回给调用者
注意:
1:方法不调用,不执行
2:方法与方法是平级关系,不能嵌套定义
3:方法定义的时候参数之间用逗号隔开
4: 方法调用的时候不用在传递数据类型
5: 如果方法有明确的返回值,一定要有return带回一个值
6: 如果方法没有明确返回值,请使用void来表示方法返回类型
void空类型
定义一个变量的时候,不能定义void类型变量
7: 如果方法的返回值是void类型,那么该方法的return语句可以省略
要是想加的话, 请使用 return ;
如何写一个方法
两个明确
返回值类型 明确功能结果的数据类型
参数列表 明确有几个参数,以及参数的类型
方法重载
概念:在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可
对某一个特定功能实现代码的封装 案例
class MethodDemo {
public static void main(String[] args) {
/*//99乘法表
for (int i=1; i<=9; i++){
for (int j=1; j<=i; j++){
System.out.print(i+"*"+j+"="+i*j+"\t");
}
System.out.println();
}
//55乘法表
for (int i=1; i<=5; i++){
for (int j=1; j<=i; j++){
System.out.print(i+"*"+j+"="+i*j+"\t");
}
System.out.println();
}
//33乘法表
for (int i=1; i<=3; i++){
for (int j=1; j<=i; j++){
System.out.print(i+"*"+j+"="+i*j+"\t");
}
System.out.println();
}*/
printNN(9);
printNN(7);
printNN(3);
}
public static void printNN(int n){
for (int i=1; i<=n; i++){
for (int j=1; j<=i; j++){
System.out.print(i+"*"+j+"="+i*j+"\t");
}
System.out.println();
}
}
}
方法重载特点
与返回值类型无关,与参数名无关,只看方法名和参数列表
在调用时,JVM虚拟机通过参数列表的不同来区分同名方法
方法重载概述
在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可。
注意:
与返回值类型无关,只看方法名和参数列表, 与参数列表的名称无关
在调用时,虚拟机通过参数列表的不同来区分同名方法
方法重载案例演示:
class MethodDemo {
public static void main(String[] args) {
System.out.println( getSum(5,6) );
System.out.println( getSum(5.5, 3.3) );
System.out.println( getSum(1,2,3) );
}
/*两个int整数求和
返回值类型:
int参数列表:
int x, int y*/
public static int getSum(int x, int y){
return x+y;
}
/* 两个double小数求和
返回值类型:
double参数列表:
double x , double y*/
public static double getSum(double x, double y){
return x+y;
}
/*三个Int整数求和
返回值类型:
int参数列表:
int x,
in y,
int z*/
public static int getSum(int x, int y, int z){
return x+y+z;
}
}
数组:
概念:数组是存储同一种数据类型多个元素的容器
数组就是一个框,里面可以存储多个相同类型的元素
如何访问数组中的元素呢?
可以通过数组名下标的方式访问
格式: 数组名[索引]
数组的格式1:
数据类型[] 数组名;
数据类型 数组名[];
格式:数据类型[] 数组名 = new 数据类型[数组长度];
数组的格式2:
数据类型[] 数组名 = new 数据类型[]{元素1,元素2,…};
数组常见问题:
数组索引越界
ArrayIndexOutOfBoundsException
访问到了数组中的不存在的索引时发生。
空指针异常
NullPointerException
数组引用没有指向实体,却在操作实体中的元素时。
(重点) Java中的参数传递
实际参数:调用方法时,使用的参数就是实际参数,如下面的a,b
getMax(a,b);
int[] arr = {1,2,3};
change(arr);
形式参数:定义方法时,参数列表中的参数
public static int getMax(int x, int y){
x = 200;
y = 100;
}
public static void change(int[] arr){
for (int i=0; i<arr.length; i++ ) {
arr[i] *= 2;
}
}
结论:
如果调用方法时,使用的参数是基本数据类型的值
那么,形式参数(x,y)的改变 对 实际参数(a,b)没有影响
如果调用方法时,使用的参数是引用数据类型的值
那么,形式参数的改变 对 实际参数有影响
二维数组
概念:其实就是一个元素为一维数组的数组。
大框里 存放着多个小框,每个小框中存放着多个苹果
格式1:
数据类型[][] 变量名 = new 数据类型[m][n];
m表示这个二维数组有多少个一维数组
n表示每一个一维数组的元素个数
int[][] arr = new int[3][2];
格式2:
数据类型[][] 变量名 = new 数据类型[m][];
m表示这个二维数组有多少个一维数组
这一次没有直接给出一维数组的元素个数,可以动态的给出。
int[][] arr = new int[3][];
arr[0] = new int[2];
arr[1] = new int[3]
arr[2] = new int[1];
格式3:
数据类型[][] 变量名 = new 数据类型[][]{{元素…},{元素…},{元素…}};
简化版格式:
数据类型[][] 变量名 = {{元素…},{元素…},{元素…}};
int[][] arr = {{1,2,3},{4,6},{6}};