1,输出

3种方式

System.out.println("abc");//自带换行
System.out.print("abc");//不带换行
System.out.printf("%s","abc");//格式化输出

一般printf使用的很少,用的最多的是println,所以printf需要的占位符需要时在网上找即可。

2,输入

2.1 一组输入

Scanner sc = new Scanner(System.in);
System.out.println("请输入你的姓名");
String name = sc.nextLine();
System.out.println("请输入你的年龄");
int age = sc.nextInt();
System.out.println("请输入你的工资");
double salary = sc.nextDouble();
System.out.println("姓名"+name+"年龄"+age+"工资"+salary);

sc.close();
  • new只需要创建一次

  • nextLine可以跳过空格
  • 类型不匹配会报错
  • 最后需要close关闭

2.2 多组输入

多组输入求和

Scanner sc = new Scanner(System.in);
int sum = 0;
while (sc.hasNextInt()) {
    int i = sc.nextInt();
    sum += i;
}
System.out.println(sum);

在idea中想要停止按ctrl+d,cmd中按ctrl+z

2.3 猜数字游戏

Random random = new Random();
Scanner sc = new Scanner(System.in);
int toGuess = random.nextInt(100);//生成1~100的随机数
System.out.println(toGuess);
System.out.println("请输入数字(1~100)");
while (true) {
    int num = sc.nextInt();
    if(num < toGuess) {
        System.out.println("猜小了");
    }else if(num > toGuess) {
        System.out.println("猜大了");
    }else {
        System.out.println("猜对了");
        break;
    }
}
sc.close();

3,方法

方法好比是加工厂,你给他一个原料他就能加工出产品

3.1 方法的语法

修饰符 返回值类型 方法名称(参数类型 形参1,形参2...) {
        //方法体代码
        return 返回值;
}

示例1

方法判断年份是不是闰年

public static boolean estimateLeapYear(int y) {
    if(((y % 4 == 0) && (y % 100 != 0) || (y % 400 == 0))) {
        return true;
    }
    return false;
}

示例2: 实现⼀个两个整数相加的方法

public static int add(int x,int y) {
        return x+y;
}

【注意事项】

  1. 返回值类型::如果⽅法有返回值,返回值类型必须要与返回的实体类型⼀致,如果没有返回值,必须写成void
  2. 方法名:用小驼峰命名(首字母小写,其他单词首字母大写)
  3. 参数列表:如果⽅法没有参数,()中什么都不写,如果有参数,需指定参数类型,多个参数之间使⽤逗号隔开
  4. Java中方法必须写在类里面,方法不能嵌套,方法没有声明

3.2 方法的调用

public static int add(int x,int y) {
        return x+y;
}

public static void main(String[] args) {
    int ret = add(10,20);
    System.out.println(ret);
}
  • 只有调用才会执行方法里的代码
  • 调⽤⽅法的时候,需要使⽤⽅法名+参数列表的形式进⾏调⽤
  • 方法有返回值必须接受返回值

【示例】计算1!+2!+3!+4!+5!

public static int facSum(int num) {
        int sum = 0;
        for (int i = 1; i <= num; i++) {
            sum += fac(i);
        }
        return sum;
}

public static int fac(int num) {
        int fac = 1;
        for (int i = 1; i <= num; i++) {
            fac *= i;
        }
        return fac;
}

public static void main(String[] args) {
        int ret = facSum(5);
        System.out.println(ret);
}

分成不同的方法的好处是:很灵活,后续需要其他功能时也可以很容易加。

3.3 形参和实参的关系

Java中⽅法的形参就相当于add函数中的⾃变量x,y,⽤来接收add函数在调⽤时传递的值的。形参的名字可以随意取,对⽅法都没有任何影响,形参只是⽅法在定义时需要借助的⼀个变量,⽤来保存⽅法在调⽤时传递过来的值。

public static int add(int x,int y) {//形参
        return x+y;
}

public static void main(String[] args) {
    int ret = add(10,20);//实参
    System.out.println(ret);
}

注意:形参是对实参的临时拷贝,形参和实参是两个不同的实体

swap交换

public static void swap(int x,int y) {
        int tmp = 0;
        tmp = x;
        x = y;
        y = tmp;
}

public static void main(String[] args) {
        int a = 10;
        int b = 20;
        System.out.println("交换前a = "+a+" b = "+b);
        swap(a,b);
        System.out.println("交换后a = "+a+" b = "+b);
}
//交换前a = 10 b = 20
//交换后a = 10 b = 20

形参发生了交换但是不会影响实参

在Java当中是⽆法获取栈上的局部变量的地址的,如果要发⽣实参的交换,我们需要具备类和对象的知识

3.4 方法的重载

public static int add(int x,int y) {
        return x+y;
    }
    
public static double add(double x,double y) {
        return x+y;
    }

如果两个方法功能一样但是有所区别,我们就可以用方法重载,这样就不需要起不同的方法名和记忆方法名了。

怎样构成方法重载?

  • 方法名必须相同
  • 参数列表必须不同(参数的个数不同、参数的类型不同、类型的次序必须不同)
  • 与返回值类型是否相同⽆关

以下不能构成重载

public static int add(int x,int y) {
        return x+y;
    }

public static double add(int x,int y) {
        return x+y;
    }

方法签名:经过编译器编译修改过之后⽅法最终的名字。具体⽅式:⽅法全路径名+参数列表,构成⽅法完整的名字

总结:本文主要学习了输出,输入以及有关方法的知识,主要掌握多组输入,方法的语法以及方法的重载

更多推荐