一、可变长参数
- 一个方法中只能指定一个可变长参数
- 可变长参数必须是方法的最后一个参数,任何普通参数必须在它之前声明
- 传递的可变长参数类型必须和方法定义的参数一致
- 本质上是基于数组的实现
public class Demo {
public static void main(String[] args){
printMax(16.9,3.1,6.2,96.4,85.3,66.6);
printMax(new double[]{1.1,3.6,6.4,8.8});
}
//可变长参数类型为double
public static void printMax(double...numbers){
if(numbers.length == 0) {
System.out.println("No argument passed");
return;
}
double result = numbers[0];
for(int i = 1;i < numbers.length; i++){
if(numbers[i] > result) {
result = numbers[i];
}
}
System.out.println("The max value is " + result);
}
}
可变长参数运行结果:
二、递归
- 自己调用自己
- 递归头:什么时候不需要调用自己
- 递归体:什么时候才需要调用自己
//阶乘
public int f(int n){
if (n == 1)
return 1;
else
return n*f(n-1);
}
基数小可以使用,基数大不能使用,考虑递归转迭代
f(5)
运行结果:
三、静态方法
静态方法
静态修饰符:static
静态方法和静态变量都会先于非静态的被创建
public class Student{
public static void say(){
System.out.println("学生说话了!");
}
}
非静态方法
public class Teacher{
public void look(){
System.out.println("老师看着呢!");
}
}
调用时的区别:(前文的先创建 并不是指 这里的调用顺序)
public class Demo{
public static void main(String[] args){
//静态方法的调用
Student.say();
//非静态方法的调用
Teacher teacher = new Teacher();
teacher.look();
}
}
运行结果:
四、Scanner类
import java.util.Scanner;
public class Demo {
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
if (scanner.hasNext()) {
String str = scanner.next();
System.out.println("Scanner.next():" + str);
}
if (scanner.hasNextLine()) {
String str = scanner.nextLine();
System.out.println("Scanner.nextLine():" + str);
}
scanner.close();
}
}
/* hello hello world
Scanner.next():hello
Scanner.nextLine():hello world
*/
-
next() : 不能得到带有空格的字符串
-
nextLine() : 可以得到空格的字符串
运行结果:
import java.util.Scanner;
public class Demo {
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
//判断输入类型,若为Int则继续执行,否则false
if (scanner.hasNextInt()) {
String str = scanner.nextInt();
System.out.println("Scanner.nextInt():" + str);
}
//判断输入类型,若为Float则继续执行,否则false
if (scanner.hasNextFloat()) {
String str = scanner,nextFloat();
System.out.println("Scanner.nextFloat():" + str);
}
scanner.close();
}
}
运行结果:
五、增强for循环
int[] nums = {10,20,30,40,50,21,52};
for (int num : nums) {
System.out.println(num);
}
运行结果: