ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
## 命名冲突与代码格式 在这一个视频,我们会讲到 - 命名冲突 - 使用多个相同命名的类 - 通配符导入 - 考试的代码格式 等下会演示考试过程中一些代码格式,让你更加迷惑,会选错答案的情况。 所有首先,我们先创建一个新的Project 命名为:ConfictExample,然后跟往常一样,创建一个新的包,我命名为 io.zwt 在这个包里面我会创建一个新的类,命名为 ConflictExample 在JDK里面,有些类具有相同的名字,但是在不同的包里面。所以这就是为什么包是很重要的。当你导入了包,就不需要指明全部的类名称。 类的全程是指 包名接着类名咯。 首先我会创建一个main方法,psvm,然后使用一下Date这个类,在java.util.Date这个类。如果我们导入这个类,就不需要每次都写这么长的类名了。 使用包名,这样在整个JDK范围内,类的名称就不需要唯一了。 不然的话,这情况就不好了,例如别人创建了一个Car类,然后你就不可以创建这样的类了。 使用包,也意味着,你可以在不同的地方导入类,例如有java.util.Date,同时也有 java.sql.Date ```java package io.zwt; import java.util.Date; public class ConflictExample { public static void main(String[] args) { Date date; java.sql.Date sqlDate; } } ``` 这样就可以使用两个不同的包里面的Date类了。 现在让我们,改一下 import 语句。 ```java package io.zwt; import java.util.*; import java.sql.Date; public class ConflictExample { public static void main(String[] args) { Date date; //变成了 java.sql.Date; java.sql.Date sqlDate; } } ``` 这时候,`date`的类型就变成了 `java.sql.Date`。 所以没有星号的是优先级更高的。 如果两个导入语句都替换为星号,那么就会有编译错误。提示命名冲突。 如果同时用到两个同名的类,最清楚的方式就是都使用完全限定名了,fully qualified name。 这样的话,导入语句就变成没有必要了。 没有有到的导入语句,可以使用 Ctrl + Shift + O 优化导入。 还有一个称为“默认包”的包,也就是直接在src目录下保存类。这样就算是放在默认包里了。 这种情况下,我们没有办法导入默认包的类。例如在src目录下创建一个 Main.java 然后想在 io.zwt.ConflictExample 这个类里面使用 Main这个类,是没有办法导入的。 所以一般情况下, 就好就是为项目创建一个顶级包,然后在里边写代码。 在考试里面,很多时候会省略导入语句,然后代码行数就不是从第一行开始了。默认正确地导入了所需要的类。 如果代码行数从第一行开始,那么你就需要看看有没有正确的import 语句了。 很多时候会看到一些代码挤在同一行,为了节省空间,以及迷惑考试者。 例如,有时候你会看到像这样的代码: ```java public void checkEmpty(List list) { if (list.isEmpty()) { System.out.println("empty"); } else { System.out.println("not empty"); }} ``` 考试你看到这样的代码,如果怕看不清楚,可以试着在纸上重写一遍。 对于上面的代码,问题是,"Does this code compile?" 这样的代码片段可能从6、7行开始,然后假设该导入的类都已经导入了。 然后也可能问你,这段代码输出的结果是什么。 在IntelliJ IDEA可以按下 Ctrl + Alt + L 这样会格式化代码。 这样格式好看了,就可以更容易看懂代码的逻辑了。 ```java public void checkEmpty(List list) { if (list.isEmpty()) { System.out.println("empty"); } else { System.out.println("not empty"); } } ``` 再举个考试可能出现的代码的例子: ```java public class LineNumbers { public void checkEmpty(List list) { if (list.isEmpty()) { System.out.println("empty"); } else { System.out.println("not empty"); } } } ``` 在IntelliJ IDEA可以按下 Ctrl + Alt + L 这样会格式化代码。 考试的时候,预计会看到格式很丑的代码,目的是为了让你更难看懂代码。如果你觉得代码能够通过编译,那么你可以在纸上重写一遍代码,以便更容易看懂。