Java17新增的模式匹配
和学习视频中一模一样:
代码如下:
class Shape1 {
}
class Rectangle extends Shape1 {
}
class Triangle extends Shape1 {
private double area;
public Triangle(double area) {
this.area = area;
}
}
public class Switch模式匹配 {
public static void test(Shape1 shape) {
switch (shape) {
case Rectangle rect -> System.out.println("矩形");
case Triangle tri -> System.out.println("三角形");
default -> System.out.println("其他形状");
}
}
public static void test2(Shape1 shape) {
//当switch变量是Shape类型时,此时只可能是模式匹配的switch
switch (shape) {
case Rectangle rect :
System.out.println("矩形");
break;
case Triangle tri :
System.out.println("三角形");
break;
default :
System.out.println("其他形状");
}
}
public static void main(String[] args) {
test(new Rectangle());
}
}
代码爆红:
Java版本已经是17
升级你的 eclipse版本吧, 开发工具不支持
不知道你这个问题是否已经解决, 如果还没有解决的话:知道为什么不用前面为什么不勾选public static void main(String[] args) 这个选项吗?因为我们需要手打一次认识各部分的含义。(仅作了解即可。)
为了方便看,我将解释做成了下面这张图片:
在输入代码前请记住,除了引号内的内容,其余全部代码和标点符号都是英文状态下的,切记,不然一定报错。
因为怕输错,这里还是附上具体的代码。
public static void main(String[] args) {
}
这段代码是放在原来的一对大括号内的,表示这段代码是在类的范围内的,即,{}就是对范围的修饰。
public 权限修饰符,表示当前的类可以被其他任意类访问
class 表示当前的文件是个类文件
HelloWorld 表示的是类的名称
{}表示当前类的范围
static 表示静态
void 表示返回值类型为无返回值
() 表示输入的内容
string 表示字符串
[]表示一系列的数
args 表示参数
“” 表示字符串,被双引号修饰的内容称为字符串,其中的内容照样输出。
下面步入我们的重头戏,输出HelloWorld
System.out.println("Hello World");
注意:这个输出语句的首字母是大写的,两个英文句号都是表示调用的意思,表示System类下调用out属性,再调用out属性下的println方法。后面学面对对象是会详细介绍。句子结尾还需要用英文分号“;”进行表示结束,如果你发现你输入的语句报错,那么先检查一下标点符号是否错误和结束的分号有没有缺失,很多时候的报错都是这两个原因。
在这里额外提及,输出语句有输出并换行
System.out.println("输出语句并强制回车换行");
与仅输出不换行两种
System.out.print("输出语句但不换行");
我们可以依据这两种不同的输出语句去输出诸多有趣的图形
这就是所有代码都输入后的效果图啦: