• Java 与 C++ 不一样的地方(持续更新中...)


      本文仅以记录 Java 与 C++ 不同之处,以备随时查询。

    Java 程序运行机制

      Java 是一门编译解释型的语言,即它在运行的过程中既需要编译也需要解释。如下图表示的是 Java 程序运行机制: 

      

      上图中,*.java 是用 Java 程序设计语言编写的源程序,通过 javac 命令编译成 *.class 文件,在操作系统之上是由 Java 虚拟机来运行以 .class 为结尾的文件。这里的 class 文件在 Java 中称之为可执行类文件;或者对于虚拟机而言其实就是字节码文件,也就是0、1代码,即计算机能够直接读懂的二进制代码。

    main 函数

      对于 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 中,

      1. 除了 boolean,其他基础类型都是有符号的,不存在无符号的基础数据类型;

      2. 数据存储顺序默认是小端,这跟 C++ 默认是大端的不同;

      2. char 是两个字节大小的;

      3. float 变量初始化时,数值最后要加 f。 

    一些关键字

    static

      在 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 静态代码块会优先与构造函数执行。这种代码块可以用来初始化。

    final

      在 Java 中,final 关键字有如下作用:

      1. final 标记的类不能被继承(C++ 通过将构造函数或析构函数设为私有来达到);

      2. final 标记的方法不能被覆写;

      3. final 标记的变量(成员变量或局部变量)即为常量,只能赋值一次。

    权限

      类中的成员变量或成员函数默认是 public 的(C++ 是 private 的);

      类继承默认也是 public 继承(实际只有 public 继承,不像 C++ 中还有 private、protected 继承)。

    继承

    接口

    参考资料

      《Java 程序设计教程(入门篇)》 徐翠娟等编。

  • 相关阅读:
    android data binding jetpack I 环境配置 model-view 简单绑定
    java 直接内存
    Android内存管理机制
    使用老版本的java api提交hadoop作业
    通过java api提交自定义hadoop 作业
    hadoop错误总结
    linux下eclipse闪退和重装jdk的方法
    完全分布式安装hadoop
    hadoop伪分布式安装
    2014年度总结
  • 原文地址:https://www.cnblogs.com/xiehongfeng100/p/5058261.html
Copyright © 2020-2023  润新知