一:java中方法的介绍
1.1 函数:Java就是方法。
方法:
就是完成特定功能的代码块
格式:
修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2…) {
方法体;
return 返回值;
}
解释:
修饰符:目前就写public static
返回值类型:用于限定返回值的数据类型
方法名:方便我们调用方法
参数类型:
形式参数 就是接收实际参数的变量(定义时候的)
实际参数 就是实际参与运算的变量(调用时候的)
方法体:就是完成功能的代码。
返回值:就是功能的返回结果。
1.2 有明确返回值的方法调用
A:单独调用:没有意义
B:输出调用:不是特别好,因为我们可能需要对结果进行进一步的操作。
C:赋值调用:推荐方案
1.3 书写方法注意的事项:
做到两个明确:
返回值:结果的数据类型
参数:参数的个数,以及类型
1.4 需求:
求两个数据和的功能。(如果数据我没有说类型,默认int类型)
package com.edu_01;
public class FunctionDemo2 {
public static void main(String[] args) {
int d = add(10, 20);
System.out.println(d);
}
public static int add(int a,int b){
int c = a+ b;
return c;
}
}
1.5 方法的注意事项(依然用定义的加法的方法进行演示):
A:方法不调用不执行
B:方法与方法是平级关系,不能嵌套定义
C:方法定义的时候参数之间用逗号隔开
D:方法调用的时候不用在传递数据类型
E:如果方法有明确的返回值,一定要有return带回一个值
1.6 需求:写一个功能实现返回两个数的较大值。要求,数据来自于键盘录入。
package com.edu_01;
import java.util.Scanner;
public class FunctionDemo4 {
public static void main(String[] args) {
/**
* 调用下面的求最大值的方法,数据来自键盘录入
*/
//创建键盘录入对象并导包
Scanner sc = new Scanner(System.in);
//获取键盘录入数据
System.out.println("请输入第一个数据");
int a = sc.nextInt();
System.out.println("请输入第二个数据");
int b = sc.nextInt();
//调用求最大值的方法
int max = getMax(a, b);
System.out.println(max);
}
/**
* 写一个功能实现返回两个数的较大值。要求,数据来自于键盘录入。
*/
/**
* 两个明确:
* 形式参数:2,int
* 返回值:有,int
*/
public static int getMax(int a,int b){
int c = a>b?a:b;
return c;
}
}
1.7 练习:写一个功能实现比较两个数据是否相等。要求,数据来自于键盘录入。
package com.edu_01;
import java.util.Scanner;
public class FunctionDemo5 {
public static void main(String[] args) {
//创建键盘录入对象并导包
Scanner sc = new Scanner(System.in);
System.out.println("请输入第一个数据");
int a = sc.nextInt();
System.out.println("请输入第二个数据");
int b = sc.nextInt();
//调用方法进行判断
System.out.println(isEquals(a, b));
}
/**
* 写一个功能实现比较两个数据是否相等。
* 两个明确:
* 参数列表:2,int
* 返回值:有,布尔类型
*/
public static boolean isEquals(int a,int b){
return a==b;
}
}
二:方法重载
在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可。
方法重载特点:
与返回值类型无关,只看方法名和参数列表
在调用时,虚拟机通过参数列表的不同来区分同名方法
三:数组(容器,用来存储相同类型数据的容器)
3.1 数组:数组是存储同一种数据类型多个元素的集合
注意:数组既可以存储基本数据类型,也可以存储引用数据类型
3.2数组的定义格式
A:数据类型[] 数组名;
int[] arr;
B:数据类型 数组名[];
int arr[];
3.3数组初始化概述:
A:Java中的数组必须先初始化,然后才能使用。
B:所谓初始化就是为数组中的数组元素分配内存空间,并为每个数组元素赋值。
3.4如何为数组进行初始化呢?
A:动态初始化:初始化时只指定数组长度,由系统为数组分配初始值。
B:静态初始化:初始化时指定每个数组元素的初始值,由系统决定数组长度。
3.5动态初始化:
初始化时只指定数组长度,由系统为数组分配初始值。
格式:数据类型[] 数组名 = new 数据类型[数组长度];
(数组长度其实就是数组中元素的个数)
3.6为了方便我们获取数组中的元素,数组就为每个元素进行了编号,从0开始。这个编号,专业叫法:索引。(角标,下标)
有了索引如何获取元素呢?
格式:数组名[索引]
3.7静态初始化:
初始化时指定每个数组元素的初始值,由系统决定数组长度。
格式:数据类型[] 数组名 = new 数据类型[]{元素1,元素2,…};
简化格式:
数据类型[] 数组名 = {元素1,元素2,…};
3.8数组操作常见的两个小问题
A:
ArrayIndexOutOfBoundsException:数组索引越界异常
怎么产生的:
访问了不存在的索引。
如何解决:
修改你的访问索引。
B:
NullPointerException:空指针异常
怎么产生的:
引用已经不再指向堆内存
如何解决:
一般来说,只要是引用类型的变量,我们在使用前,都要先判断是否为null。如果不为null,才继续使用。
3.9数组遍历:
依次输出数组中的每一个元素
数组遍历标准格式:
for(int x=0; x<数组名.length; x++) {
System.out.println(数组名[x]);
}
需求:1:定义一个数组,并把数组元素遍历出来
2:定义一个数组,找出数组中的最大值
3:定义一个数组,把数组反向打印
4:定义一个数组,查找元素在数组中第一次出现的位置
package homework;
public class ArrDemo {
public static void main(String[] args) {
//创建一个数组,并静态初始化
int[] arr={1,2,3,45,56,23,66,6,9,6,7,8,9,2,1,4,56};
printArr(arr);
System.out.println("---------");
System.out.println(getArrMax(arr));
System.out.println("---------");
lastToFirstPrint(arr);
System.out.println("---------");
First(arr,6);
}
//定义一个方法遍历数组
public static void printArr(int[] Arr){
for(int i=0;i<Arr.length;i++){
System.out.println(Arr[i]);
}
}
//定义一个方法找出数组中的最大值
public static int getArrMax(int[] Arr){
int max=Arr[0];
for(int i=0;i<Arr.length;i++){
max=max>Arr[i]?max:Arr[i];
}
return max;
}
//定义一个方法把数组反向打印
public static void lastToFirstPrint(int[] Arr){
for(int i=Arr.length;i>0;i--){
System.out.println(Arr[i-1]);
}
}
//定义一个方法查找元素在数组中第一次出现的位置
public static void First(int[] Arr,int a){
for(int i=0;i<Arr.length;i++){
if(Arr[i]==a){
System.out.println(i);
break;
//由于是查找元素在数组中第一次出现的位置,所以利用break跳出循环。
}
}
}
}