一.方法的重载
在java编程中,方法可以同名,但是!需要参数必须不同,才可同名,这种方法就叫做方法的重载,另外,对于返回值不做要求;如下
package com.javaStudy.base.Method;
import java.util.Scanner;
public class Demo4 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入一个数");
int num1 = input.nextInt();
System.out.println("请输入一个数");
int num2 = input.nextInt();
int num3 = add(num1,num2);//此时调用第一个方法
System.out.println(num3);
}
public static int add(int num1,int num2){
return num1+num2;
}
public static double add(double num1,double num2){
return num1+num2;
}
public static int add(int num1,int num2,int num3){
return num1+num2+num3;
}
}
package com.javaStudy.base.Method;
import java.util.Scanner;
public class Demo4 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入一个数");
double num1 = input.nextDouble();
System.out.println("请输入一个数");
double num2 = input.nextDouble();
double num3 = add(num1,num2);//此时调用第二个方法
System.out.println(num3);
}
public static int add(int num1,int num2){
return num1+num2;
}
public static double add(double num1,double num2){
return num1+num2;
}
public static int add(int num1,int num2,int num3){
return num1+num2+num3;
}
}
package com.javaStudy.base.Method;
import java.util.Scanner;
public class Demo4 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入一个数");
int num1 = input.nextInt();
System.out.println("请输入一个数");
int num2 = input.nextInt();
System.out.println("请输入一个数");
int num4 = input.nextInt();
int num3 = add(num1,num2,num4);//此时调用第三个方法
System.out.println(num3);
}
public static int add(int num1,int num2){
return num1+num2;
}
public static double add(double num1,double num2){
return num1+num2;
}
public static int add(int num1,int num2,int num3){
return num1+num2+num3;
}
}
从上述代码可以看出,方法名一样,但其参数不同,故可以运行,这就是方法的重载。
二.可变行参数
当不确定传入的数据有几个时,可以使用可变行参数来表示,
package com.javaStudy.base.Method;
public class Demo5 {
public static void main(String[] args) {
int max = printMax(123, 123123, 121212, 2222);
System.out.println(max);
}
public static int printMax(int... num1) {//相当于num1是一个数组,可以传入多个数据,徐4需要在int后加入省略号
if (num1.length == 0) {
System.out.println("不存在数据,请重试");
}
int result = num1[0];
for (int i = 0; i < num1.length; i++) {
if (num1[i] > result) {
result = num1[i];
}
}
return result;
}
}
三.递归!(★★★)
递归的本质就是自己调用自己,减少了代码量,但是在时间复杂度和空间复杂度较高,例如以下代码:
package com.javaStudy.base.Method;
public class Demo6 {
public static void main(String[] args) {
System.out.println(test(10));
}
public static int test(int num1){
if (num1 == 1){
return 1;
}else {
return num1*test(num1-1);
}
}
}
四.一个简单的计算器,包括了四则运算法则
package com.javaStudy.base;
import java.util.Scanner;
public class Test7 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int result = 0 ;
double result1 = 0.0;
System.out.println("请输入您要使用的算法符号");
String i = input.next();
System.out.println("请输入第一个数");
int num1 = input.nextInt();
System.out.println("请输入第二个数");
int num2 = input.nextInt();
switch (i){
case "+":
result = add(num1,num2);
break;
case "-":
result = reduce(num1,num2);
break;
case "*":
result = mul(num1,num2);
break;
case "/":
result1 = div(num1,num2);
break;
}
if (result1!=0){
System.out.println(result1);
}else {
System.out.println(result);
}
}
public static int add(int num1,int num2){
return num1+num2;
}
public static int reduce(int num1,int num2){
return num1-num2;
}
public static int mul(int num1,int num2){
return num1*num2;
}
public static double div(int num1,int num2){
if (num2 == 0){
return 0;
}
return num1/num2;
}
}
五.数组
数组是用来存放多个数据的
package com.javaStudy.base.array;
public class Demo1 {
public static void main(String[] args) {
int[] num1 ;//定义一个数组
num1 = new int[10];//定义该数组的长度为10
num1[0] = 1;
num1[1] = 2;
num1[2] = 3;
num1[3] = 4;
num1[4] = 5;
num1[5] = 6;
num1[6] = 7;
num1[7] = 8;
num1[8] = 9;
num1[9] = 10;
int sum = 0;
for (int i = 0;i<num1.length;i++){
sum = sum+num1[i];
}
System.out.println(sum);
}
}
数组刚开始创建时
数组存放于栈中,而初始化数组后,数组的相关数据存放于堆中
数组的初始化又分为动态初始化和静态初始化
package com.javaStudy.base.array;
public class Demo2 {
public static void main(String[] args) {
int[] i = new int[10];//动态初始化
i[0] = 1;//对第一个元素进行赋值
System.out.println(i[2]);//输出未赋值的地址时,会默认输出0
int[] i1 = {1,2,3,4,5,6};//静态初始化
System.out.println(i1[7]);//输出未赋值的地址,会显示越界
}
}
//java.lang.ArrayIndexOutOfBoundsException,越界错误