一、
1、一段可重复调用的代码段
格式:public static 返回值类型 方法名称 (类型 参数1,类型 参数2,…){
程序语句;
return 表达式;
}
2、 返回值类型 变量=方法名称(参数1,参数2…);
方法名称(参数1,参数2…);
3、(1)两个数的和
import java.util.Scanner; public class Test1 { 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 s = add(a,b); System.out.println("两个数的和为:"+s); } public static int add(int m,int n){ int sum = m + n; return sum; } }
(2)判断两个数是否相等
import java.util.Scanner; public class Test1 { 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(); boolean b = equals(x,y); System.out.println(b); } public static boolean equals(int m,int n){ return m==n; } }
3、获取两个数中较大的数
import java.util.Scanner; public class Test1 { 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); } public static int getMax(int m,int n){ return (m>n)?m:n; } }
4、打印m行n列星型矩形
import java.util.Scanner; public class Test1 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入第一个数:"); int row = sc.nextInt(); System.out.println("请输入第二个数:"); int column = sc.nextInt(); squareness(row,column); } public static void squareness(int m,int n){ for (int i=1;i<=m ;i++ ){ for (int j=1;j<=n ;j++ ){ System.out.print("*"); } System.out.println(); } } }
打印nn乘法表
import java.util.Scanner; public class Test1 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入一个整数,范围在1-9"); int num = sc.nextInt(); printnn(num); } public static void printnn(int n){ for (int i=1;i<=n ;i++ ){ for (int j=1;j<=i ;j++ ){ System.out.print(j+"*"+i+"="+j*i+" "); } System.out.println(); } } }
4、重载:方法名称相同,参数类型和参数个数不同。
public class Test1 { public static void main(String[] args) { int sum1=add(10,20); System.out.println(sum1); int sum2=add(10,20,30); System.out.println(sum2); double sum3=add(10,20.0); System.out.println(sum3); } public static int add(int a,int b){ return a+b; } public static int add(int a,int b,int c){ return a+b+c; } public static double add(int a,double b){ return a+b; }
一个数组内存图:
两个数组内存图:
三个数组两个引用内存图:
三、数组
数组的概念:数组是一组相关数据的集合。
特点:可以存储基本数据类型,也可以存储引用数据类型。存储的数据类型相同。
2、一维数组定义格式
数据类型[] 数组名 = new 数据类型[数组的长度];
3、数组操作的两个小问题
a:ArrayIndexOutOfBoundsException:数组索引越界异常
b:NullPointerException:空指针异常
4、数组常见操作:
(1)数组遍历:
public class Test1 { public static void main(String[] args) { int[] arr={8,2,4,5,6}; print(arr); } public static void print(int[] arr){ for (int i=0;i<arr.length ;i++ ){ System.out.println(arr[i]+""); } } }
(2)数组获取最值
public class Test1 { public static void main(String[] args) { int[] arr={8,2,4,5,6}; int m=getMax(arr); System.out.println(m); } public static int getMax(int[] arr){ int max=arr[0]; for (int i=1;i<arr.length ;i++ ){ if (max<arr[i]){ max=arr[i]; } } return max; } }
(3)数组元素逆序
public class Test1 { public static void main(String[] args) { int[] arr={8,2,4,5,6}; reverseArray(arr); print(arr); } public static void reverseArray(int[] arr){ for (int i=0;i<arr.length/2 ;i++ ){ int temp=arr[i]; arr[i]=arr[arr.length-1-i]; arr[arr.length-1-i]=temp; } } public static void print(int[] arr){ for (int i=0;i<arr.length ;i++ ){ System.out.print(arr[i]+" "); } } }
(4)数组查表法(根据键盘录入索引,查找对应星期)
import java.util.Scanner; public class Test1 { public static void main(String[] args) { System.out.println("请输入数字1-7:"); Scanner sc = new Scanner(System.in); int a = sc.nextInt(); System.out.println("星期"+getWeek(a)); } public static char getWeek(int week){ char[] arr={' ','一','二','三','四','五','六','日',}; return arr[week]; } }
(5)数组元素查找(查找指定元素第一次在数组中出现的索引)
public class Test1 { public static void main(String[] args) { int[] arr={3,6,4,1,8,9}; int index = getIndex(arr,8); System.out.println(index); } public static int getIndex(int[] arr,int value){ for (int i=0;i<arr.length ;i++ ){ if (arr[i] == value){ return i; } } return -1; } }
5、二维数组的定义格式
数据类型[][] 数组名= new 数据类型[m][n];
数据类型 数组名[][] = new 数据类型[m][n];
数据类型[] 数组名[] = new 数据类型[m][n];
6、(1)二维数组遍历
public class Test1 { 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(); } } }
(2)公司年销售额求和
public class Test1 { 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、参数传递问题
基本数据类型的值传递,不改变原值,因为方法调用后就会弹栈,而局部变量随之消失。
引用数据类型的值传递,改变原值,因为即使方法调用后弹栈,但是堆内存中的数组对象还在,可以通过地址(引用)继续访问.