float 4 字节 (保留 8 位有效数字, 并且后面必须跟 f)
double 8 字节 (保留 16 位有效数字, 可以不用跟 d, 基本上 13.56 指的就是 double 类型数据)
byte 1 字节
short 2 字节
long 8 字节
控制台输出为 12.0 的时候要
么是 double 要么是 float 如果是 5 就是 int
编辑定义的时候 float 必须加上 f 写成 float a=12.4f 不然就会精度缺失可能报错!
一旦执行类 System.exit(0); 整个程序将停止运行!
断言语句有两种格式:
- assert booleanExpression;
- assert booleanExpression:messageException;
booleanExpression 必须是 boolean 型, messageExpression 可以是 String 型
如果为假, 停止执行输出错误信息.
final 声明的地方不能被重写! 不能被继承.
try 语句块中的某个语句一旦发生类错误立马跳转到 catch 去执行! 而不会把整个 try 语句块完全执行完.
try-catch 语句中执行了 System.exit(0); 将不会执行 finally() 语句 (当然也不会执行之后的所有语句).
String 类不能拥有子类, 因为 java.lang 包里头的 String 被声明为 final.
线程的完美生命周期里的 4 个状态:
1. 新建 (new 出来)2. 运行 (start()run())3. 中断 (sleep())4. 死亡 (线程不具备继续运行的能力)
继承了 Thread 的线程的 run 方法要重写
默认线程优先级为 5.
Java 一个类只能继承一个父类, 但是却能继承多个接口, 这就是接口的用处!(java 不具备多继承的能力).
接口和接口之间用 extends 继承; 类和接口之间用 implements;
接口里面只有抽象方法, 访问权限一定是 public.
(例如 public abstract void A()// 等价于 void A();public final int max=4// 等价于 int max=4;).
接口如果不写 public 就只能被同一个包内的类使用 (也就是友好接口).
只有抽象类才可以不全部重写接口的方法.
匿名类可以说是一种另类应用.
匿名类的使用方式有这样的:
- abstract class A{
- // 首先就是新建一个抽象类
- public abstract void AA();
- }
- public class B{
- public static void main(){
- A a=new A(){
- // 你没有看错, 这里的抽象类确实被 new 出来了, 但本质是不一样的!
- public void AA(){
- !
- System.out.print("对, 老子是个匿名类");
- }
- }
- }
- }
抽象类不能被 new 出来!(abstract class A)
声明的抽象方法不能有大括号!
- abstract int sum(); // 正确
- abstract int sum(){
- };// 错误!
抽象类里面可以有非抽象方法, 但是抽象类的子类必须重写抽象类里所有的抽象方法!
上转型对象不能操作子类新增的成员变量和方法! 但是可以访问子类继承的方法或者重写的方法 以及 子类隐藏的成员变量!
// 除非把上转型对象强制转换到新的子类对象才可以, 如 子类 b=(子类) 上转型对象
在编译含有内部类的字节码文件格式为 "外嵌类名 $ 内部类名" 如 "A$B.class"
被 static 修饰的内部类不能操作外嵌类中的实例成员变量
但是被 static 修饰的内部类是可以这么写的:
A.B a=new A.B();
如果不写就只能 new A(), 然后使用 A.B.function();
非内部类不可以是 static 类!
来源: http://www.jianshu.com/p/d44008600d28