1.每个源文件中包含内容:
零个或一个包声明、零个或多个包引入、零个或多个类声明、零个或多个接口声明。至多只有一个类或者接口是public的,而且源文件必须以其中public类型的类的名字命名。

1)包声明语句:
用于把该源文件中的类和接口放在特定的包中,一个源文件中只能有一个package语句,也可以省略表示为在默认包,该包没有名字。这就意味着在该源文件中定义的包和接口都在同一个包中。package语句必须放在源文件第一行。例如:package com.abc.dollapp

包的作用:
a.区分名字相同的类。b.实施访问控制。c.划分和组织Java应用中的各种类。

包的命名规范:
a.一般采用小写。
b.包含创建者、所属项目名称、处于项目所处的哪些位置等信息。
c.一般采用URL命名规范的反转,例如,类名com.abc.netstore.common,SysContent,这意味着SysContent类由abc公司开发,属于netstore项目,位于netstore.common中。
d.Java不强制要求包名。

2)包引入语句:
使用其他包中的类和接口。注意import语句不会意味着JVM会把所有的类和接口加载到内存中并对它们初始化。
注意:若同时引用了两个来自不同包的同名类,那么必须通过完成类名来区分。

3)方法声明:
返回值类型 方法名 (参数列表){
方法主体
}

4)main()方法:
public static void main (String[] args),其实public和static的位置可以调换,由于用static修饰的方法默认都是final(不能被子类覆盖),所以加上final也没事。
类中可以通过重载的方法提供多个不作为的应用程序入口的main方法。

5)注释:
注意/** ... */出现在任何声明之前都会被视为JavaDoc。

6)关键字:
注意friendly和sizeof不是Java关键字,这与c++不一样。

7)标识符:
a.首字母必须是字母、下划线、美元符号、人民币符号。其中不能包含-、#等字符。
b.没有长度限制,但是大小写敏感。
c.官方的命名规范有
类名和接口名:首字母大写,若多个单词拼成则每个单词首字母大写。
方法和变量名:首字母小写,若多个单词拼成则除第一个单词外的其他单词首字母大写。
包名:小写。注意源文件的位置,比如若使用默认包,则Doll.java在根目录下,若类名为com.abc.dollapp.doll.Doll,则源文件Doll.java要在\com\abc\dollapp\doll目录下。
常量名:大写形式,多个单词用下划线隔开。

2.编译Java源文件
javac [options] [sourcefiles]
常用选项:
-classpath 路径 ——覆盖classpath环境变量,是指定class类的路径
-sourcepath 路径 ——指定Java源文件的路径,指定类的源文件的路径
-d 目录 ——指定目录
-verbose ——输出详细编译器信息

3.运行Java程序
java someClass
常用选项:
-classpath 路径 ——覆盖classpath环境变量,是指定class类的路径,对于Java类则设定根目录
-verbose ——输出详细编译器信息
-D<属性名=属性值> ——设置系统属性,例如:java -DUser="tom" SomeClass,则SomeClass中调用的System.getProperty("user")则得到tom
-jar 指定运行某个Jar文件中的特定Java类,对于Jar包指定全路径


使用注意:
a.必须指定主程序类的完整名字,例如,
b.在classpath中,类文件的存放位置必须和包名匹配。

4.JavaDoc的使用
JavaDoc有一系列的标志
javadoc 标记有如下一些:
标记 用于 作用
@author 对类的说明 标明开发该类模块的作者
@since 对类、属性、方法的说明 指定最早出现的版本
@version 对类的说明 标明该类模块的版本
@see 对类、属性、方法的说明 参考转向,也就是相关主题,用于产生链接
@link 对类、属性、方法的说明 与@see一样,但是其能嵌入到注释语句中
@param 对方法的说明 对方法中某参数的说明
@return 对方法的说明 对方法返回值的说明
@exception 对方法的说明 对方法可能抛出的异常进行说明
@deprecated 对类、属性、方法的说明 表示已经不推荐使用

5.JVM简介
运行程序的步骤:
1)把.class文件中的二进制数据加载到内存中。
2)对类的二进制数据进行验证
3)解析并执行指令

运行时数据区:
堆区——存放对象的一个指向方法区的引用
方法区——存放类的类型信息、类型信息包括静态变量和方法信息,而方法信息中包含类的所有方法的字节码。
栈区——局部变量(指向堆区),主方法的调用
例如:Doll beibei = new Doll("贝贝");
其中beibei在栈区,指向一个名字为“贝贝”的Doll实例(在堆区),而Doll实例含有的方法则指向方法区。