Java数据类型
基本数据类型
- 整数类型:byte,short,int,long
- 浮点数类型:float,double
- 字符类型:char
- 布尔类型:boolean
引用数据类型
- 字符串类型 String
+
连接字符串和其他数据类型- 从Java 13开始,字符串可以用
"""..."""
表示多行字符串
- 数组类型 Array
- 数组所有元素初始化为默认值,整型都是
0
,浮点型是0.0
,布尔型是false
; - 数组一旦创建后,大小就不可改变。
- 数组所有元素初始化为默认值,整型都是
流程控制
输入和输出(print和Scanner)
-
Java提供的输出包括:
System.out.println()
/print()
/printf()
,其中printf()
可以格式化输出 -
Java提供Scanner对象来方便输入,读取对应的类型可以使用:
scanner.nextLine()
/nextInt()
/nextDouble()
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); // 创建Scanner对象 System.out.print("Input your name: "); String name = scanner.nextLine(); // 读取一行输入并获取字符串 System.out.print("Input your age: "); int age = scanner.nextInt(); // 读取一行输入并获取整数 System.out.printf("Hi, %s, you are %d\n", name, age); // 格式化输出 } }
判断引用类型相等(equals)
-
在Java中,判断值类型的变量是否相等,可以使用
==
运算符。但是,判断引用类型的变量是否相等,==
表示“引用是否相等”,或者说,是否指向同一个对象。 -
要判断引用类型的变量内容是否相等,必须使用
equals()
方法。
注意:执行语句s1.equals(s2)
时,如果变量s1
为null
,会报NullPointerException
:
要避免NullPointerException
错误,可以利用短路运算符&&
:
public static void main(String[] args) {
String s1 = null;
if (s1 != null && s1.equals("hello")) {
System.out.println("hello");
}
}
switch表达式(-> 和 yield)
1. ->
使用switch
时,如果遗漏了break
,就会造成严重的逻辑错误,而且不易在源代码中发现错误。从Java 12开始,switch
语句升级为更简洁的表达式语法,使用类似模式匹配(Pattern Matching)的方法,保证只有一种路径会被执行,并且不需要break
语句:
public class Main {
public static void main(String[] args) {
String fruit = "apple";
switch (fruit) {
case "apple" -> System.out.println("Selected apple"); //用 -> 写法跟方便
case "pear" -> System.out.println("Selected pear");
case "mango" -> {
System.out.println("Selected mango");
System.out.println("Good choice!");
}
default -> System.out.println("No fruit selected");
}
}
}
注意新语法使用->
,如果有多条语句,需要用{}
括起来。
2.yield
大多数时候,在switch
表达式内部,我们会返回简单的值。
但是,如果需要复杂的语句,我们也可以写很多语句,放到{...}
里,然后,用yield
返回一个值作为switch
语句的返回值:
public static void main(String[] args) {
String fruit = "orange";
int opt = switch (fruit) {
case "apple" -> 1;
case "pear", "mango" -> 2;
default -> {
int code = fruit.hashCode();
yield code; // yeild 指定了switch语句返回值
}
};
System.out.println("opt = " + opt);
}
数组操作
遍历数组
-
遍历数组可以使用
for
循环,for
循环可以访问数组索引, -
for each
循环直接迭代每个数组元素,但无法获取索引; -
使用
Arrays.toString()
可以快速获取数组内容 -
打印多维数组可以使用
Arrays.deepToString()
;
数组的排序
Java的标准库已经内置了排序功能,我们只需要调用JDK提供的Arrays.sort()
就可以排序:
public class Main {
public static void main(String[] args) {
int[] ns = { 28, 12, 89, 73, 65, 18, 96, 50, 8, 36 };
Arrays.sort(ns);
System.out.println(Arrays.toString(ns));
}
}