1. Scanner 类
Scanner 位于 java.util 包,用于从键盘读取输入。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| import java.util.Scanner;
public class ScannerDemo { public static void main(String[] args) { Scanner sc = new Scanner(System.in);
System.out.print("请输入一个整数:"); int num = sc.nextInt(); System.out.println("你输入的是:" + num);
System.out.print("请输入一个小数:"); double d = sc.nextDouble(); System.out.println("你输入的是:" + d);
sc.nextLine(); System.out.print("请输入一行文字:"); String line = sc.nextLine(); System.out.println("你输入的是:" + line);
sc.close(); } }
|
常用方法:
| 方法 |
作用 |
nextInt() |
读取一个整数 |
nextDouble() |
读取一个小数 |
next() |
读取一个单词,遇空格结束 |
nextLine() |
读取一整行,含空格,遇回车结束 |
注意:nextInt()、nextDouble() 只读取数据本身,会把末尾的换行符留在缓冲区。此时若紧接着调用 nextLine(),会直接读到那个空行。解决办法是先调用一次 nextLine() 把残留换行“吃掉”,或干脆全部用 nextLine() 读取后再做类型转换。
2. Random 类
Random 也位于 java.util 包,用于生成随机数。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| import java.util.Random;
public class RandomDemo { public static void main(String[] args) { Random r = new Random();
int n1 = r.nextInt(10); int n2 = r.nextInt(100); int n3 = r.nextInt(6) + 1;
System.out.println(n1); System.out.println(n2); System.out.println(n3); } }
|
nextInt(边界值) 生成 [0, 边界值) 区间,不包含边界值本身。想生成 [min, max] 区间,可写成 r.nextInt(max - min + 1) + min。
3. Math 类
Math 位于 java.lang 包,无需 import 即可使用,方法都是静态的,直接用类名调用。
| 方法 |
作用 |
示例结果 |
Math.abs(x) |
绝对值 |
Math.abs(-5) -> 5 |
Math.max(a, b) |
取较大值 |
Math.max(3, 7) -> 7 |
Math.min(a, b) |
取较小值 |
Math.min(3, 7) -> 3 |
Math.pow(a, b) |
a 的 b 次方 |
Math.pow(2, 3) -> 8.0 |
Math.sqrt(x) |
平方根 |
Math.sqrt(16) -> 4.0 |
Math.ceil(x) |
向上取整 |
Math.ceil(3.2) -> 4.0 |
Math.floor(x) |
向下取整 |
Math.floor(3.8) -> 3.0 |
Math.round(x) |
四舍五入 |
Math.round(3.5) -> 4 |
Math.random() |
生成 [0,1) 随机小数 |
0 ~ 0.999… |
4. String 类
String 位于 java.lang 包,无需 import。字符串是不可变的引用类型,常用方法如下。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| public class StringDemo { public static void main(String[] args) { String s = "Hello Java";
System.out.println(s.length()); System.out.println(s.charAt(0)); System.out.println(s.indexOf("Java")); System.out.println(s.substring(6)); System.out.println(s.substring(0, 5)); System.out.println(s.toUpperCase()); System.out.println(s.toLowerCase()); System.out.println(s.contains("Java")); System.out.println(s.replace("Java", "World"));
String t = " hi "; System.out.println(t.trim()); System.out.println(t.trim().length()); } }
|
4.1 字符串比较
判断两个字符串内容是否相等,必须用 equals(),不能用 ==。== 比较的是引用地址,不是内容。
1 2 3 4 5 6
| String a = "Hello"; String b = new String("Hello");
System.out.println(a == b); System.out.println(a.equals(b)); System.out.println(a.equalsIgnoreCase("hello"));
|
4.2 字符串拆分与拼接
1 2 3 4 5
| String csv = "张三,18,男"; String[] parts = csv.split(","); for (String p : parts) { System.out.println(p); }
|
输出:
5. StringBuilder 类
字符串是不可变的,频繁用 + 拼接会不断创建新对象,效率低。需要大量拼接时应使用 StringBuilder。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| public class StringBuilderDemo { public static void main(String[] args) { StringBuilder sb = new StringBuilder();
sb.append("Hello"); sb.append(" "); sb.append("Java");
System.out.println(sb.toString()); System.out.println(sb.length());
sb.insert(5, ","); System.out.println(sb);
sb.reverse(); System.out.println(sb);
StringBuilder result = new StringBuilder(); for (int i = 1; i <= 10; i++) { result.append(i).append(" "); } System.out.println(result.toString()); } }
|
常用方法:
append(...):追加内容,可连续调用(链式)
insert(下标, 内容):在指定位置插入
delete(开始, 结束):删除一段
reverse():反转
toString():转成 String