Java® Platform, Standard Edition & Java Development Kit Version 12 API Specification
从传统意义上讲,Java包含:
-
Java程序设计语言
-
Java虚拟机(JVM)
-
Class文件格式
-
Java API类库
-
第三方Java类库
Java运行时环境(JRE)
Java开发工具包(JDK)
javac:编译
java:运行
1 |
|
可以传入命令行参数(空格分隔,从String args[]使用)
或者设定系统属性(-Dkey=value,通过System.getProperty(Key)使用)
或者JVM参数,比如:-Xmx4G等
主类:包含main方法,Java程序入口,可以接收参数(空格分隔),也是第一个被执行的方法。包含main方法的类成为Main Class(普通类而已,仅仅是多了main方法),也是运行类
1 |
|
源文件命名规则:如果包含多个类,那么最多只能有一个public类,则取public类的类名,如果没有public类,则可以取任何一个类的类名
-X
堆:主要用于对象和数组的内存分配(基本数据类型在栈中分配),堆由新生代和老年代组成,默认老年代与新生代的大小比为2:1,可以用过-XX:NewRatio调整,新生代由Eden区和两个Survivor区组成,默认Eden与Survivor的大小比为8:1,可以通过-XX:SurvivorRatio调整。
永久代:主要用于Class、方法和常量等内存分配;
-Xms:堆初始化大小,比如:-Xms4G;
-Xmx:堆最大值,比如:-Xmx4G;
-Xmn:设置新生代大小,比如:-Xmn2G
-XX:NewSize:设置新生代大小,比如:-XX:NewSize=2G
-XX:NewRatio:设置老年代与新生代的大小比,比如:-XX:NewRatio=2;
-XX:SurvivorRatio:设置Eden与Survivor的大小比,比如:-XX:SurvivorRatio=8;
-XX:PermSize:永久代初始大小,比如:-XX:PermSize=192m;
-XX:MaxPermSize:永久代最大值,比如:-XX:MaxPermSize=192m;
Java8中用MetaspaceSize取代了PermSize,Metaspace默认大小是20.8M
-XX:MetaspaceSize:Metaspace扩容时触发FullGC的初始化阈值
-XX:MaxMetaspaceSize:Metaspace最大容量
变量
field
成员变量(Member Variable)
property
对象的属性,对于JavaBean来说就是带getter/setter的field
修饰符
A类的实例变量或方法用Modifier修饰,对于在不同位置实例化的A类对A类中实例变量或方法的访问
控制如下:
Modifier | Class A | Same package | Different package |
---|---|---|---|
private | yes | no | no |
no modifier(package) | yes | yes | no |
protected | yes | yes | no |
public | yes | yes | yes |
A类的实例变量或方法用Modifier修饰,B类继承A类,B类对于A类中的实例变量或方法的继承
控制如下:
Modifier | Same package | Different package |
---|---|---|
private | no | no |
no modifier(package) | yes | no |
protected | yes | yes |
public | yes | yes |
overload
重载,意即多样
override
重写,意即覆盖
参考
Thanking in Java 4th, Java 5/6
Core Java 8th, Java 6
Core Java 9th, Java 7
Core Java 10th, Java 8
Core Java SE 9 for the Impatient 2nd Edition, Java 9