Java 与 C++ 不一样的地方(持续更新中...)
本文仅以记录 Java 与 C++ 不同之处,以备随时查询。
Java 程序运行机制
Java 是一门编译解释型的语言,即它在运行的过程中既需要编译也需要解释。如下图表示的是 Java 程序运行机制:

上图中,*.java 是用 Java 程序设计语言编写的源程序,通过 javac 命令编译成 *.class 文件,在操作系统之上是由 Java 虚拟机来运行以 .class 为结尾的文件。这里的 class 文件在 Java 中称之为可执行类文件;或者对于虚拟机而言其实就是字节码文件,也就是0、1代码,即计算机能够直接读懂的二进制代码。
main 函数
对于 Java 程序而言,(跟 C++ 一样)也是从 main 函数开始执行,不过有很大不同。以一个例子来说明:
public class HelloWorld{
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
该程序的执行要 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++ 不一样的是可以修饰静态代码块,如下例:
class Person{
public Person(){
System.out.println("Constructor");
}
static {
System.out.println("Static");
}
private String name;
private int age;
}
public class Main {
public static void main(String[] args) {
new Person();
}
}
上例中 static 静态代码块会优先与构造函数执行。这种代码块可以用来初始化。
final
在 Java 中,final 关键字有如下作用:
1. final 标记的类不能被继承(C++ 通过将构造函数或析构函数设为私有来达到);
2. final 标记的方法不能被覆写;
3. final 标记的变量(成员变量或局部变量)即为常量,只能赋值一次。
类
权限
类中的成员变量或成员函数默认是 public 的(C++ 是 private 的);
类继承默认也是 public 继承(实际只有 public 继承,不像 C++ 中还有 private、protected 继承)。
继承
接口
参考资料
《Java 程序设计教程(入门篇)》 徐翠娟等编。
Java 与 C++ 不一样的地方(持续更新中...)的更多相关文章
- Java的一些良好习惯及细节------持续更新中...
1.在做条件判断时,不要将变量放在判断符的左边,这样做可以防止出现空指针异常,以字符串比较为例: String name = "Tom"; //这种方式不推荐,如果变量name为空 ...
- java数据结构——递归(Recursion)例题持续更新中
继续学习数据结构递归,什么是递归呢?字面理解就是先递出去,然后回归,递归核心思想就是直接或间接调用本身,好比从前有座山,山里有位老和尚,在给小和尚讲故事,讲的是从前有座山,山里有位老和尚,在给小和尚讲 ...
- java视频教程 Java自学视频整理(持续更新中...)
视频教程,马士兵java视频教程,java视频 1.Java基础视频 <张孝祥JAVA视频教程>完整版[RMVB](东西网) 历经5年锤炼(史上最适合初学者入门的Java基础视频)(传智播 ...
- HBase常见问题答疑解惑【持续更新中】
HBase常见问题答疑解惑[持续更新中] 本文对HBase开发及使用过程中遇到过的常见问题进行梳理总结,希望能解答新加入的HBaser们的一些疑惑. 1. HTable线程安全吗? HTable不是线 ...
- 中国.NET:各地微软技术俱乐部汇总(持续更新中...)
中国.NET:各地微软技术俱乐部汇总(持续更新中...) 本文是转载文,源地址: https://www.cnblogs.com/panchun/p/JLBList.html by 史记微软. ...
- fastadmin 后台管理框架使用技巧(持续更新中)
fastadmin 后台管理框架使用技巧(持续更新中) FastAdmin是一款基于ThinkPHP5+Bootstrap的极速后台开发框架,具体介绍,请查看文档,文档地址为:https://doc. ...
- 前端深入之js篇丨Array数组操作从入门到成神Up Up Up,持续更新中
写在前面 随着前端深入的不断学习,发现数组这个数据结构在前端中有着相当大的存在感,由于我初学前端的时候并没有系统性的学习数组,所以我将通过这篇文章同你一起学习数组,希望我们能一起进步,学会熟练操作数组 ...
- IDEA 2019.2破解激活教程(激活到2089年8月,亲测有效,持续更新中...)
本来笔者这边是有个正版激活码可以使用的,但是,2019.9月3号的时候,一些小伙伴反映这个注册码已经失效了,于是拿着自己的 IDEA, 赶快测试了一下,果不其然,已然是不能用了. 好在,笔者又找到了新 ...
- IntelliJ IDEA 2019.2.1 破解教程, 最新激活码(激活到2089年8月,亲测有效,持续更新中...)
当前最新版本 IDEA 2019.2.1 本来笔者这边是有个正版激活码可以使用的,但是,2019.9月3号的时候,一些小伙伴反映这个注册码已经失效了,于是拿着自己的 IDEA, 赶快测试了一下,果不其 ...
- 史上最全的spark面试题——持续更新中
史上最全的spark面试题——持续更新中 2018年09月09日 16:34:10 为了九亿少女的期待 阅读数 13696更多 分类专栏: Spark 面试题 版权声明:本文为博主原创文章,遵循C ...
随机推荐
- NLP系列(5)_从朴素贝叶斯到N-gram语言模型
作者: 龙心尘 && 寒小阳 时间:2016年2月. 出处: http://blog.csdn.net/longxinchen_ml/article/details/50646528 ...
- Xcode在playground的quick look框中显示对象自定义视图
对于一般对象,playground中默认的quick look显示已经够用,比如简单的字符串,Int,或简单的自定义Class等等. 不过对于有些情况,我们需要自定义对象在playground中的显示 ...
- Linux文件格式化与相关处理及sed工具
http://blog.csdn.net/pipisorry/article/details/52564957 geditor, sed, ed, awk, Emacs 文本处理工具 [Linux S ...
- ROS(indigo)RRT路径规划
源码地址:https://github.com/nalin1096/path_planning 路径规划 使用ROS实现了基于RRT路径规划算法. 发行版 - indigo 算法在有一个障碍的环境找到 ...
- Dynamics CRM2013 Odata的filter中含有日期字段时遇到的一个奇葩问题
在使用Odata拼写filter时我们一般都用工具,因为手写是件极不靠谱且错误率极高的事,下图是我用query designer拼出来的一个filter,因为时间是参数,所以在拷贝出下面这段filte ...
- FORM界面批量处理-全选框实现
全选框实现方法多种多样,这里只介绍两种 方法一:触发器式,优点程序简单,缺点颜色单调不突出 1. 在数据块和控制块上分别创建check box 2. 设置check box选中与为 ...
- Nginx的负载均衡 - 一致性哈希 (Consistent Hash)
Nginx版本:1.9.1 我的博客:http://blog.csdn.net/zhangskd 算法介绍 当后端是缓存服务器时,经常使用一致性哈希算法来进行负载均衡. 使用一致性哈希的好处在于,增减 ...
- iOS下JS与OC互相调用(四)--JavaScriptCore
前面讲完拦截URL的方式实现JS与OC互相调用,终于到JavaScriptCore了.它是从iOS7开始加入的,用 Objective-C 把 WebKit 的 JavaScript 引擎封装了一下, ...
- Ubuntu 16.04 安装和使用QQ最简洁的方式
推荐参考网址: 1 http://www.ubuntukylin.com/ 2 http://www.ubuntukylin.com/application/ Wine QQ 1 http:// ...
- 创建银行分行的API
DECLARE p_api_version NUMBER := 1.0; p_init_msg_list VARCHAR2(1) := 'F'; v_bank_id NUMBER := 530705; ...