likes
comments
collection
share

Java 入门 - 进阶知识

作者站长头像
站长
· 阅读数 83

适合有其他语言基础的人快速入门

Java 中,使用 package 来解决类名冲突,一个类总是属于某个包,类名(比如 Person)只是一个简写,真正的完整类名是 包名.类名

例如:JDK 的 Arrays 类存放在包 java.util 下面,因此完整类名是 java.util.Arrays

在定义 class 的时候,我们需要在第一行声明这个 class 属于哪个包

package pany; // 申明包名 pany

public class Person {
}

包作用域

位于同一个包的类,可以访问包作用域的字段和方法。不用 publicprotectedprivate 修饰的字段和方法就是包作用域

package pany;

public class Person {
    // 包作用域
    void hello() {
        System.out.println("hello");
    }
}
package pany;

public class Main {
    public static void main(String[] args) {
        Person p = new Person();
        p.hello(); // 可以调用,因为 Main 和 Person 在同一个包
    }
}

导入类

第一种,直接写出完整类名

java.util.Arrays arrays = new java.util.Arrays();

第二种写法是用 import 语句

// 先导入完整类名
import java.util.Arrays;
// 然后写简单类名
Arrays arrays = new Arrays();

最佳实践

  • 推荐写包名
  • 如果不确定是否需要 public,就不声明为 public,即尽可能少地暴露对外的字段和方法
  • 把方法定义为 包作用域 有助于测试,因为测试类和被测试类只要位于同一个 ,测试代码就可以访问被测试类的包作用域方法。
  • 一个 .java 文件只能包含一个 public 类,但可以包含多个非 public 类。如果有 public 类,文件名必须和 public 类的名字相同。

异常处理

  • Java 使用异常来表示错误,并通过 try ... catch 捕获异常
  • Java 的异常是 class,并且从 Throwable 继承
  • Error 是无需捕获的严重错误,Exception 是应该捕获的可处理的错误
  • RuntimeException 无需强制捕获,非 RuntimeException(Checked Exception)需强制捕获,或者用 throws 声明
  • 不推荐捕获了异常但不进行任何处理
  • 当我们在代码中需要抛出异常时,尽量使用 JDK 已定义的异常类型,其次再考虑自定义异常

日志

Java 标准库内置了日志包 java.util.logging

日志级别,从严重到普通:

  • SEVERE
  • WARNING
  • INFO(默认级别,默认级别以下的日志,不会被打印出来)
  • CONFIG
  • FINE
  • FINER
  • FINEST

但是它不好用,大家一般使用三方的 Commons Logging + Log4jSLF4J + Logback

注解

注解是放在 Java 源码的类、方法、字段、参数前的一种特殊"注释"。注释会被编译器直接忽略,注解则可以被编译器打包进入 class 文件,因此,注解是一种用作标注的"元数据"。

Java 的注解可以分为三类

第一类是由编译器使用的注解,例如:

  • @Override:让编译器检查该方法是否正确地实现了覆写
  • @SuppressWarnings:告诉编译器忽略此处代码产生的警告

这类注解不会被编译进入 .class 文件,它们在编译后就被编译器扔掉了。

第二类是由工具处理 .class 文件使用的注解,比如有些工具会在加载 class 的时候,对 class 做动态修改,实现一些特殊的功能。这类注解会被编译进入 .class 文件,但加载结束后并不会存在于内存中。这类注解只被一些底层库使用,一般我们不必自己处理。

第三类是在程序运行期能够读取的注解,它们在加载后一直存在于 JVM 中,这也是最常用的注解。例如:一个配置了 @PostConstruct 的方法会在调用构造方法后自动被调用(这是 Java 代码读取该注解实现的功能,JVM 并不会识别该注解)

单元测试

单元测试就是针对最小的功能单元编写测试代码。Java 程序最小的功能单元是方法,因此对 Java 程序进行单元测试就是针对单个 Java 方法的测试。

常用三方库 JUnit 进行单元测试

End

  • 上一篇:Java 入门 - 面向对象
  • 下一篇:Java 入门 - 工程基础

该系列的每篇文章都收录在本专栏《Java 后端从 0 到 1》

转载自:https://juejin.cn/post/7238431321870401591
评论
请登录