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 ...
随机推荐
- 如何处理JS,css与smarty标签的冲突
smarty的默认标记符是大括号:{}, 假如我们页面上有JS且定义了函数或者对象,或者有CSS定义了样式,就会出现大括号, smary引擎就会把这些大括号当作smarty语法来解释, 很明显,这些C ...
- Docker如何获取镜像
可以使用 docker pull 命令来从仓库获取所需要的镜像. 下面的例子将从 Docker Hub 仓库下载一个 Ubuntu 12.04 操作系统的镜像. $ sudo docker pull ...
- audio session config
#pragma mark - #pragma mark - audio session config - (void)setAudioSessionConfig { NSError *error; A ...
- 多线程(五) Fork/Join框架介绍及实例讲解
什么是Fork/Join框架 Fork/Join框架是Java7提供了的一个用于并行执行任务的框架, 是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架. 我们再通过For ...
- Ajax PHP JavaScript MySQL实现简易的无刷新在线聊天室
思路 消息显示区 发消息 板块 消息显示 消息发送 优化 显示非重复性的数据 优化显示 加上滚动条 每次都显示最新消息 完整代码 前端代码 数据库表结构 服务器端代码 总结与展望 总结 展望 为更好的 ...
- CSS简单使用
CSS简单使用 标签 : 前端技术 CSS(Cascading Style Sheet : 层叠样式表单)用来定义网页显示效果. 可以解决HTML代码对样式定义的重复,提高后期样式代码的可维护性,并增 ...
- 菜鸟学习物联网---辨析基于Andriod 5.1,Linux,Windows10开发Dragon Board 410c板
点击打开链接 诸位亲最近怎么样?刚过完年上班是不是很不情愿?自古做事者,不唯有坚韧不拔之志,亦或有超世之才.所以,诸位好好加油.今天小编想给大家系统性总结一下Dragon Board 410c板基于A ...
- 2、MyEclipse和Eclipse调优,MyEclipse配置(tomcat和jdk的内存设置),jar引入相关知识点,将Java项目编程web项目的办法
1.WindowàPreferenceàGeneralàWorkspaceàText file encoding都改成UTF-8 2.WindowàPreferenceàGeneralàEdito ...
- 程序员高效Windows环境配置
个人比较追求高效.效率.以下是我常用的windows配置希望对大家有帮助.(身为程序员,我特别喜欢mac pro的retina屏,在那编程简直是一种享受.等我买了mac pro在发一篇 ...
- Hessian探究(一)Hessian与springMVC结合
上一篇博客Hessian探究(一)Hessian入门示例我们初步简单的介绍了一下Hessian的使用入门示例,我们是通过Servlet来暴露Hessian的对外服务的,接下来我们介绍一下通过Sprin ...