努力搬砖第四天

2020-10-17  本文已影响0人  老猪敲码

1.NullPointerException即空指针异常,俗称NPE。如果一个对象为null,调用其方法或访问其字段就会产生NullPointerException,这个异常通常是由JVM抛出的,例如:

public class Main {

    public static void main(String[] args) {

        String s = null;

        System.out.println(s.toLowerCase());

    }

}

2.语句assert x >= 0;即为断言,断言条件x >= 0预期为true。如果计算结果为false,则断言失败,抛出AssertionError。

使用assert语句时,还可以添加一个可选的断言消息:

assert x >= 0 : "x must >= 0";

这样,断言失败的时候,AssertionError会带上消息x must >= 0,更加便于调试。

Java断言的特点是:断言失败时会抛出AssertionError,导致程序结束退出。因此,断言不能用于可恢复的程序错误,只应该用于开发和测试阶段。

3.注解

Java的注解可以分为三类:

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

@Override:让编译器检查该方法是否正确地实现了覆写;

@SuppressWarnings:告诉编译器忽略此处代码产生的警告。

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

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

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

4.Java的注解可以分为三类:

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

@Override:让编译器检查该方法是否正确地实现了覆写;

@SuppressWarnings:告诉编译器忽略此处代码产生的警告。

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

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

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

5.java的java.util包主要提供了以下三种类型的集合:

List:一种有序列表的集合,例如,按索引排列的Student的List;

Set:一种保证没有重复元素的集合,例如,所有无重复名称的Student的Set;

Map:一种通过键值(key-value)查找的映射表集合,例如,根据Student的name查找对应Student的Map。

6.通过Iterator遍历List永远是最高效的方式

7.List和Array转换

给toArray(T[])传入一个类型相同的Array,List内部自动把元素复制到传入的Array中

上一篇下一篇

猜你喜欢

热点阅读