java 方法
1. 重载
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ReS9jsuQ-1615202082098)(C:\Users\23236\AppData\Roaming\Typora\typora-user-images\image-20200906000134106.png)]
public staic void max(int num1,int num2){}
public static int max(int num1,int num2){}//不是重载
public static double max(double num1,double num2){}
public staic void max(int num1,int num2,int num3){}
2.命令行传参
//必须回退到包名目录,进行运行,
..>javac Test.java
../src>Java com.codesing.Test hello world//回退到包目录,并且可传参
3.可变参数
jdk5开始引入,
同类型可变参数,在指定参数类型后加一个省略号…
一个方法中只能定义一个可变参数,必须是方法的最后一个参数,任何普通参数在它之前声明
public static void printMax(double...numbers){
if(numbers.length == 0){
System.out.println("no argyment passed");
}
double result = numbers[0];
//排序
for(int i=1;i<numbers.length;i++){
if(number[i]>result){
result = numbers[i]
}
}
System.out.println(result);
}//相当于传进来一个数组
4. 递归
1.递归头:什么时候不调用自身方法,如果没有头,将陷入死循环
2.递归体:什么时候需要调用自身方法
a.边界条件:边界,b.前阶段,c.返回阶段
public class Compute {
public static void main(String[] args) {
Compute compute = new Compute();
ArrayList arrayList = new ArrayList();
arrayList.add(0);
while (arrayList.size()>0) {
arrayList.clear();
Scanner scanner = new Scanner(System.in);
System.out.println("= = = = =这里是计算数据中心 = = = = = =");
System.out.println("请输入您要计算的数,以任意字母结束:");
while (scanner.hasNextDouble()) {
double sc = scanner.nextDouble();
arrayList.add(sc);
}
if (arrayList.size() == 2) {
System.out.println("这里是常规运算");
//加减乘除
System.out.println("计算结果为:"+compute.count((double)arrayList.get(0),(double)arrayList.get(1)));
continue;
}
if (arrayList.size() == 1) {
System.out.println("这里是阶乘运算");
//阶乘
System.out.println("计算结果为:"+compute.factorial((double)arrayList.get(0)));
continue;
}
else {
System.out.println("输入有误,请重新输入");
arrayList.add(0);//避免退出循环
continue;
}
}
}
public double count(double i, double j) {
System.out.println("############");
System.out.println("1:加法");
System.out.println("2:减法");
System.out.println("3:乘法");
System.out.println("4:除法");
System.out.println("############");
System.out.println("请输入您的操作数字");
Scanner scanner = new Scanner(System.in);
int rs = scanner.nextInt();
if (rs == 1) {
return i + j;
}
if (rs == 2) {
return i - j;
}
if (rs == 3) {
return i * j;
}
if (rs == 4) {
return i / j;
} else {
System.out.println("输入有误");
return 0;
}
}
//递归
public double factorial(double i) {
if (i == 1) {
return 1;
} else {
return i*factorial(i-1);
}
}
}
5.值传递&引用传递
//值传递
public class Demo01 {
public static void main(String[] args) {
int a = 1;
System.out.println("a="+a);
Demo01 demo01 = new Demo01();//a=1
int b = demo01.change(a);
System.out.println("a="+a);//a=1 值传递未改变a的值
System.out.println("b="+b);//b=10
}
public int change(int a){
a = 10;
return a;
}
}
//引用传递
public class Demo02 {
public static void main(String[] args) {
Person person = new Person();
System.out.println(person.name);//null
Demo02 demo02 = new Demo02();
demo02.change(person);
System.out.println(person.name);//jjj 引用传递,改变了值
}
public void change(Person person){
person.name = "jjj";
}
}
class Person{
String name;
}
person.name);//jjj 引用传递,改变了值
}
public void change(Person person){
person.name = “jjj”;
}
}
class Person{
String name;
}