本文仅以记录 Java 与 C++ 不一样之处,以备随时查询。java
Java 是一门编译解释型的语言,即它在运行的过程当中既须要编译也须要解释。以下图表示的是 Java 程序运行机制: 函数
上图中,*.java 是用 Java 程序设计语言编写的源程序,经过 javac 命令编译成 *.class 文件,在操做系统之上是由 Java 虚拟机来运行以 .class 为结尾的文件。这里的 class 文件在 Java 中称之为可执行类文件;或者对于虚拟机而言其实就是字节码文件,也就是0、1代码,即计算机可以直接读懂的二进制代码。spa
对于 Java 程序而言,(跟 C++ 同样)也是从 main 函数开始执行,不过有很大不一样。以一个例子来讲明:操作系统
1 public class HelloWorld{ 2 3 public static void main(String[] args) { 4 System.out.println("Hello World!"); 5 } 6 7 }
该程序的执行要 Java 虚拟机来调用执行,即由 Java 虚拟机调用 HelloWorld 类中的 main 函数。做为对外接口,类 HelloWorld 是要声明为 public (一个 Java 源文件最多只能有一个声明为 public 的类,而该类就做为该源文件对外的接口。而在该源文件中的其余类则不能被其余源文件的类调用,只能被同一源文件的类调用。);由于 Java 虚拟机要调用,因此 main 函数要声明为 public;另外,Java 虚拟机在执行 main 函数的时候没必要建立对象(即经过 HelloWorld.main(args) 调用),因此该方法必须是 static 的。设计
这跟 C++ 在程序在编译连接成可执行文件后,由操做系统加载并最后将程序指针指向 main 函数是彻底不同的。指针
在 Java 中,code
1. 除了 boolean,其余基础类型都是有符号的,不存在无符号的基础数据类型;对象
2. 数据存储顺序默认是小端,这跟 C++ 默认是大端的不一样;blog
2. char 是两个字节大小的;继承
3. float 变量初始化时,数值最后要加 f。
在 Java 中,(static 一样能够修饰 成员变量和成员函数)跟 C++ 不同的是能够修饰静态代码块,以下例:
1 class Person{ 2 public Person(){ 3 System.out.println("Constructor"); 4 } 5 static { 6 System.out.println("Static"); 7 } 8 private String name; 9 private int age; 10 } 11 12 public class Main { 13 14 public static void main(String[] args) { 15 new Person(); 16 } 17 18 }
上例中 static 静态代码块会优先与构造函数执行。这种代码块能够用来初始化。
在 Java 中,final 关键字有以下做用:
1. final 标记的类不能被继承(C++ 经过将构造函数或析构函数设为私有来达到);
2. final 标记的方法不能被覆写;
3. final 标记的变量(成员变量或局部变量)即为常量,只能赋值一次。
类中的成员变量或成员函数默认是 public 的(C++ 是 private 的);
类继承默认也是 public 继承(实际只有 public 继承,不像 C++ 中还有 private、protected 继承)。
《Java 程序设计教程(入门篇)》 徐翠娟等编。