Java 有三个显式关键字来设置类中的访问权限:public
(公开),private
(私有)和protected
(受保护)。这些访问修饰符决定了谁能使用它们修饰的方法、变量或类。
-
public
(公开)表示任何人都可以访问和使用该元素; -
private
(私有)除了类本身和类内部的方法,外界无法直接访问该元素。private
是类和调用者之间的屏障。任何试图访问私有成员的行为都会报编译时错误; -
protected
(受保护)类似于private
,区别是子类可以访问protected
的成员,但不能访问private
成员; -
default
(默认)如果你不使用前面的三者,默认就是default
访问权限。default
被称为包访问,因为该权限下的资源可以被同一包(库组件)中其他类的成员访问
ArrayList 中随机查找元素是很高效的,而 LinkedList 随机查找效率低下。反之,在 LinkedList 中插入元素的效率要比在 ArrayList 中高 。
在 Java 中,通常我们使用new
操作符来创建一个新对象。new
关键字代表:创建一个新的对象实例。
数据存储
寄存器(Registers)最快的存储区域,位于 CPU 内部。
栈内存(Stack)存在于常规内存 RAM(随机访问存储器,Random Access Memory)区域中,可通过栈指针获得处理器的直接支持(变量)。
堆内存(Heap)这是一种通用的内存池(也在 RAM 区域),所有 Java 对象都存在于其中。
常量存储(Constant storage)常量值通常直接放在程序代码中,因为它们永远不会改变。
非 RAM 存储(Non-RAM storage)数据完全存在于程序之外,在程序未运行以及脱离程序控制后依然存在。
BigInteger 支持任意精度的整数。可用于精确表示任意大小的整数值,同时在运算过程中不会丢失精度。 BigDecimal 支持任意精度的定点数字。
Java 的垃圾收集器会检查所有 new
出来的对象并判断哪些不再可达,继而释放那些被占用的内存,供其他新的对象使用
注解的语法十分简单,主要是在现有语法中添加 @ 符号。
- @Override:表示当前的方法定义将覆盖基类的方法。如果你不小心拼写错误,或者方法签名被错误拼写的时候,编译器就会发出错误提示。
- @Deprecated:如果使用该注解的元素被调用,编译器就会发出警告信息。
- @SuppressWarnings:关闭不当的编译器警告信息。
- @SafeVarargs:在 Java 7 中加入用于禁止对具有泛型varargs参数的方法或构造函数的调用方发出警告。
- @FunctionalInterface:Java 8 中加入用于表示类型声明为函数式接口
-
注解 解释 @Target 表示注解可以用于哪些地方。可能的 ElementType 参数包括:
CONSTRUCTOR:构造器的声明
FIELD:字段声明(包括 enum 实例)
LOCAL_VARIABLE:局部变量声明
METHOD:方法声明
PACKAGE:包声明
PARAMETER:参数声明
TYPE:类、接口(包括注解类型)或者 enum 声明@Retention 表示注解信息保存的时长。可选的 RetentionPolicy 参数包括:
SOURCE:注解将被编译器丢弃
CLASS:注解在 class 文件中可用,但是会被 VM 丢弃。
RUNTIME:VM 将在运行期也保留注解,因此可以通过反射机制读取注解的信息。@Documented 将此注解保存在 Javadoc 中 @Inherited 允许子类继承父类的注解 @Repeatable 允许一个注解可以被使用一次或者多次(Java 8)。