一、一切都是对象
在Java中,一切都是对象。不存在全局变量、全局函数等东西。除了基础类型外,所有的对象都通过“引用”来获取并使用。这些引用存在于堆栈区,受到严格的生存期限制;而对象则通过new在堆中创建,生存期在离开使用范围后不结束,仍在堆中,直到垃圾回收器进行清理。于是,传入方法的参数中,基础类型为值传递,而对象则传递其引用。这可以看做是将引用的通过值传递值传递给方法参数中的新的引用,所以也可以说Java中所有的参数传递都是通过值传递。
这种机制有这很明显的好处。一方面是程序猿不用操心对对象的生存期进行精心的管理(当然,C++中也可以实现智能指针);另一方面避免了许多在传递参数、返回值过程中由于生命期导致的麻烦(当然,C++有右值引用了)。还有在语言上,实现了完全的面向对象化。
二、Java对象
基本类型 | 包装器类型 | 描述 |
---|---|---|
boolean | Boolean | 布尔值,true or false |
char | Character | Unicode字,两字节 |
byte | Byte | 字节,一字节,_int8 |
short | Short | _int16 |
int | Integer | _int32 |
long | Long | _int64 |
float | Float | 单精度浮点数 |
double | Double | 双精度浮点数 |
void | Void | 空 |
三、注释与文档
标签 | 描述 |
---|---|
@see | 应用其他类 |
{@link} | 行内超链接 |
{@docRoot} | 产生标签到文档根目录的相对路径 |
{@inheritDoc} | 从这个类最直接基类中继承相关文档到当前文档 |
@version | 版本信息 |
@author | 作者 |
@since | 最早使用版本 |
@param | 参数 |
@return | description |
@thows | 抛出异常信息 |
四、第一个程序
/** 整个程序的入口类 */
public class Main {
/** 程序的入口
* @param args 命令行参数
*/
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
这个程序输出”Hello World“。
这个程序位于Main.java中,这是由于Java要求每一个文件中,有且只有一个public类,并且该类名字与文件名相同。而作为程序的入口的main函数必须在该类中,作为静态、公开方法,采用签名 main(String[] args)
程序为了输出Hello World信息,需要用到 java.lang中的类System。而所有的java程序中,都已经默认导入了java.lang.*。其中*表示所有的类,同时导入一个类库中的所有类,以方便使用。
main作为Main中的static方法, 不需要实例化Main就可以使用。使用一个静态的方法或字段,既可以用”Instance.Field/Method“的方式,也可以用”Class.Field/Method"的方式。后者有着更好的可读性,也有利于编译器优化。
写完程序后,用javac Main.java进行编译,得到Main.class字节码文件。然后可以用java Main(没有class)运行。导出文档可以用 javadoc Main.java。