一. 方法(函数)
1:函数的概念?函数的格式?格式的解释说明
函数的概念:完成特定功能的代码块
函数的格式:
修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2...) {
方法体语句;
return 返回值;
}
格式的解释说明:
修饰符:目前就用 public static。
返回值类型:就是功能结果的数据类型。
方法名:符合命名规则即可。方便我们的调用。
参数:形式参数;就是方法定义的,用于接收实际参数的。
实际参数:就是实际参与运算的。
参数类型:就是参数的数据类型
参数名:就是变量名
方法体语句:就是完成功能的代码。
return:结束方法的。
返回值:就是功能的结果,由return带给调用者:返回值是什么类型,返回值类型就是该类型
2:函数的调用
A:明确返回值类型的函数调用
1,明确返回值类型
2,明确参数列表
B:void类型的函数调用
无具体返回值类型的,用void来接收
返回值类型是void,return可以省略,即使省略,系统也会默认给加上,形式是: return;
3:函数的练习:
A:求两个数据之和
class Demo1_method { //method:方法,类函数 public static void main(String[] args) { int sum=add(10,20); System.out.println(sum); } public static int add(int a,int b){ int sum=a+b; return sum; } }
B:判断两个数据是否相等
//需求:键盘录入两个数据,比较两个数是否相等 import java.util.Scanner; class Demo3_method { 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(); boolean isEquals=isEquals(a,b); System.out.println(isEquals); } /* 比较两个数是否相等 equality 1,明确返回值类型 int 2,明确参数列表 int a,int b */ public static boolean isEquals(int a,int b) { return a==b; } }
C:获取两个数中较大的值
import java.util.Scanner; class Demo2_method { public static void main(String[] args) { Scanner sc=new Scanner(System.in); System.out.println("请输入第一个数据:"); int x=sc.nextInt(); System.out.println("请输入第二个数据:"); int y=sc.nextInt(); int max=getMax(x,y); System.out.println("max="+max); } //返回两个数中的较大值 /* 1,明确返回值类型 int 2,明确参数列表 int x,int y */ public static int getMax(int x,int y){ int max=(x>y?x:y); return max; } }
D:打印m行n列的星形矩形
//需求:根据键盘录入的数据打印m行n列的星形矩形 import java.util.Scanner; class Test3_method { public static void main(String[] args) { Scanner sc=new Scanner(System.in); System.out.print("请输入行m的数:"); int m=sc.nextInt(); System.out.print("请输入列n的数:"); int n=sc.nextInt(); getRectangle(m,n); } public static void getRectangle(int a,int b) { for (int i=1;i<=a ;i++ ) { for (int j=1;j<=b ;j++ ) { System.out.print("*"); } System.out.println(); } return ; } }
E:打印nn乘法表
//需求:根据键盘录入的数据输出对应的乘法表 import java.util.Scanner; class Demo4_method { public static void main(String[] args) { Scanner sc=new Scanner(System.in); System.out.print("请输入数据(1-9)之内的数:"); int num=sc.nextInt(); print(num); } /* 1,明确返回值类型 void 2,明确参数列表 int a */ public static void print(int i){ for (int a=1;a<=i ;a++ ) { for (int b=1; b<=a;b++ ) { System.out.print(a+"*"+b+"="+a*b+' '); } System.out.println(); } return; } }
4:什么是函数重载?以及函数重载的练习?把讲过的案例练习一次即可
函数重载:在同一个类中,方法名相同,参数列表不同。与返回值类型无关。
===============================================================
===============================================================
二. 内存图
画图操作:
1.一个数组的内存图
2.两个数组的内存图
3.三个引用两个数组的内存图
=======================================
=======================================
三.数组
1:数组的概念?有什么特点?
数组是存储同一种数据类型多个元素的集合。也可以看成是一个容器。
数组既可以存储基本数据类型,也可以存储引用数据类型。
2:一维数组的定义格式?
数据类型[] 数组名 = new 数据类型[数组的长度];
3:数组操作的两个小问题
ArrayIndexOutOfBoundsException:数组索引越界异常
NullPointerException:空指针异常
4:数组常见操作:
数组遍历(依次输出数组中的每一个元素)
数组获取最值(获取数组中的最大值最小值)
数组元素逆序 (就是把元素对调)
数组查表法(根据键盘录入索引,查找对应星期)
数组元素查找(查找指定元素第一次在数组中出现的索引)
5:二维数组定义格式?
数据类型 数组名[][] = new 数据类型[m][n]
数据类型[] 数组名[] = new 数据类型[m][n]
看懂针对每种格式的内存图解?
6:案例
A:二维数组遍历
/* 需求:二维数组遍历 */ class Test4_Arr { public static void main(String[] args) { int[][] arr = {{1,2,},{3,4,5},{6,7,8,9}}; for (int i = 0;i < arr.length ; i++) { for (int j = 0;j < arr[i].length ; j++) { System.out.print(arr[i][j] + " "); } System.out.println(); } } }
B:公司年销售额求和
某公司按照季度和月份统计的数据如下:单位(万元)
第一季度:22,66,44
第二季度:77,33,88
第三季度:25,45,65
第四季度:11,66,99
class Test5_Arr { public static void main(String[] args) { int[][] arr = {{22,66,44},{77,33,88},{25,45,65},{11,66,99}}; int sum = 0; for (int i = 0;i < arr.length ;i++ ) { for (int j = 0;j < arr[i].length ; j++) { sum = sum + arr[i][j]; } } System.out.println(sum); } }
7:参数传递问题
基本数据类型的值传递,不改变原值,因为方法调用后就会弹栈,而局部变量随之消失
引用数据类型的值传递,改变原值,因为即使方法调用后弹栈,但是堆内存中的数组对
象还在,可以通过地址(引用)继续访问.