Java SE 02(Scanner类、流程控制、方法、方法的重载、Java命令行传递参数、可变参数、IDEA快捷键)
Java SE 02
一、用户交互Scanner
java.util.Scanner是Java5的新特性,可以通过Scanner类来获取用户的输入
基本语法:
Scanner s = new Scanner(System.in);
/*......
......
......
*/
s.close();
通过Scanner类的next()与nextLine()方法获取用户输入的字符串,在读取前我们一般要使用hasNext()与hasNextLine()判断是否还有输入的数据
//next()不能得到带有空格的字符串,且只有有效字符输入才能结束输入
Scanner scanner = new Scanner(System.in);
System.out.println("using next() to receive:");
if(scanner.hasNext()) {
String str = scanner.next();
System.out.println("The input is :" + str);
}
scanner.close();
//nextline()以enter为结束符,nextline()返回输入回车之前的所有字符,可以获得空格的内容
Scanner scanner = new Scanner(System.in);
System.out.println("using nextLine() to receive:");
//这句判断可省略,因为nextline()只返回输入回车之前的所有字符串
if(scanner.hasNextLine()){
String str = scanner.nextLine();
System.out.println("The input is:" + str);
}
scanner.close();
hasNext()或hasNextLine()作用是判断不是接收,若判断成功则next()或nextLine接收
Scanner scanner = new Scanner(System.in);
int i = 0;
double j = 0;
if(scanner.hasNextInt()) {
i = scanner.nextInt();
System.out.println("input number is " + i);
}
else {
System.out.println("input is not an integer");
}
//第一次遇到hasNext()阻塞,输入后判断若成功就接收,到第二次hasNext()继续阻塞等待输入再判断
// 若失败,到第二次因为有未接收的输入,hasNext()不阻塞直接进行判断,若成功就接收
// 若失败,到第三次因为有未接收的输入,hasNext()不阻塞直接进行判断……
//……
if(scanner.hasNextDouble()) {
j = scanner.nextDouble();
System.out.println("input number is " + j);
}
else {
System.out.println("input is not a decimal");
}
if(scanner.hasNextDouble()) {
j = scanner.nextDouble();
System.out.println("input number is " + j);
}
else {
System.out.println("input is not a decimal");
}
scanner.close();
二、流程控制
System.out.println();//自带换行
System.out.print();//不带换行
增强for循环
Java5引入的一种主要用于数组和集合的for循环
for(声明语句 : 表达式) {
//代码
}
声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配。作用域限定在循环语句块,其值与此时数组元素的值相同。
表达式:表达式是要访问的数组名,或者是返回值为数组的方法。
int[] arr = {2, 4, 6, 7, 2};
for(int x : arr) { //IDEA快捷键 arr.for
System.out.println(x);
}
/*
output:
2
4
6
7
2
*/
打印三角形
for(int i = 0; i < 5; i++) {
for(int j = 5; j > i; j--){
System.out.print(" ");
}
for(int k = 0; k<= i; k++){
System.out.print("*");
}
for(int l = 0; l < i; l++){
System.out.print("*");
}
System.out.println();
}
/*
output:
*
***
*****
*******
*********
*/
三、方法(函数)
-
对于一个void没有返回值的方法,不能写return后面的返回值,只能写return自己
public static void method { return; }
-
对于方法中最后一行的return可以省略不写
-
一个方法中可以有多个return语句,但是必须保证同时只有一个会被执行到,两个return不能连写
四、方法的重载(Overload)
重载:多个方法的名称一样,但是参数列表不一样
方法重载与下列因素相关
- 方法名称必须相同
- 参数列表必须不同(参数个数不同、或参数类型不同、或参数的多类型顺序不同)
方法重载与下列因素无关
- 与形式参数的名称无关
- 与方法的返回值类型无关(若有关,会出现二义性)
- 与方法的修饰符无关
五、Java命令行传递参数
Java编译运行命令行
javac xxxxx.java//compile (.java file -> .class file)
java xxxxx//run (has the same filename)
运行时输入参数测试
//测试运行时在命令行输入的参数
package flowControl;
public class demo014 {
public static void main(String[] args) {
for(int i = 0; i < args.length; i++) {
System.out.println("args" + "[" + i + "]" + "=" + args[i]);
}
System.out.println("args.length = " + args.length);
}
}
步骤
- 在当前包下用javac编译.java文件
- 退到项目的src文件夹下用java运行刚才编译好的(文件名前要加包名)再加测试的输入参数
六、可变参数
- JDK1.5开始, Java支持传递同类型的可变参数给一个方法
- 在方法声明中,在指定参数类型后加一个省略号(...)
- 一个方法中只能指定一个可变参数,它必须是方法的最后一个参数。任何普通的参数必须在它之前声明。(int x, int... numbers)
- 可变参数的本质就是数组
- 实例:定义一个计算n个数中的最大值的函数,参数列表中参数个数可变(为n)
//可变参数通用实例
package flowControl;
public class demo015 {
public static void main(String[] args) {
demo015 demo150 = new demo015();
demo150.test(1, 4, 7, 8, 10);
}
public void test(int... i){
for(int j = 0; j < i.length; j++) {
System.out.println(i[j]);
}
}
}
/*
output:
1
4
7
8
10
*/
IDEA快捷键
- shift + F6按住可以改动与当前变量名相同的所有变量名
- ctrl + 左键点击一个方法名或类名可以查看源码
分类:
Java SE
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具