写点什么

在基础语法中 Java 与 c++ 有哪些不同?(对于学过 c++ 转 Java 必看)

作者:秋名山码民
  • 2022 年 5 月 07 日
  • 本文字数:1035 字

    阅读完需:约 3 分钟

在基础语法中Java与c++有哪些不同?(对于学过c++转Java必看)

「作者主页」:秋名山码民

「作者简介」:阿里云博客专家、华为云享专家、全栈领域新星创作者,某不知名大学大一在读学习 Java3 个月及学习 c++2 年后的感受

参考文献:《C++PrimerPlus》《java 核心技术卷 1》


数据类型

Java 和 c++都是强数据类型的语言,但是在 Java 中整形的范围与运行 Java 代码的机器没有关系,解决了软件从应该平台移植到另外一个平台的问题,与之相反 c++会根据不同的处理器选择最为高效的整形,会导致某个 c 程序在 32 位处理器上运行的好好的,然后在 16 位处理器上出现问题,范围在 c 和 c++中,int 和 long 等类型的大小与目标平台有关,例如,long 在 32 位上是 4 字节,在 64 位上则为 8 字节,注意:Java 中没有然后无符号形式的 int,long,short,byte 类型

boolean 类型

boolean 类型在 Java 中只有俩个固定值:false 和 true,整形与布尔型不能进行相互转换在 c++中,数值,指针都可以替代 bool 值,但在 Java 中是不允许的


if(x=0){//java中错误,原因就是x=0不能替换为boolean类型}
复制代码


不要在 boolean 类型中与任何数值类型强制转换为另一种类型

变量和常量

java10 中对于局部变量可以根据变量的初始值来推断出它的数据类型,即是不需要声明变量类型


c 和 c++区分变量的声明和定义


int i = 3;//定义
extern int i;//声明
复制代码


而在 Java 中不区分变量的声明和定义


c++中用 const 来定义一个常量而 Java 中 const 是保留关键字但是并没有使用,使用 final 来定义常量

位运算

<<和>>运算符,在 Java 中没有扩展符合位,但是在 c++中不能保证>>是完成算术移位,还是逻辑移位,这意味着 c++中的>>运算符对于负数生成的结果可能依赖于具体的实现,而 Java 则消除了这种不确定性

字符串

在字符串方面的话,用的很舒服,基本与 c++类似,值得注意的是 c++中的字符串可以修改,可以修改字符串中的单个字符


比较方面:对于 Java 没有重载==号,这个运算符只能确定俩个字符串是否存放在同一个位置,但是有可能将内容相同的字符串副本放置在不同的位置上 C++中将 == 重载,可以看成等价于 Java 的 equals

输入和输出

Java5 中沿用了 c 函数库中的 printf 方法


double x = 3.333333;System.out.printf("%.2f",x);//保留2位小数
复制代码

数组

Java 数组与堆栈上的 c++数组有很大的不同,但基本上与在堆上分配的数组指针一样即是 int[] a = new int[100];//java不同于int a[100];//C++而等同于int* a = new int[100];//C++也导致了 Java 中的【】运算符被预定义为会完成越级检查,而且没有指针运算,不能通过 a+1 来得到数组中的下一个元素

最后

如果本文对你有帮助,还请不要吝啬手中的三连,你的每一次三连,就是对博主最大的支持!



发布于: 2022 年 05 月 07 日阅读数: 14
用户头像

卷不死,就往…… 2021.10.19 加入

2019NOIP退役成员,华为云享专家,阿里云专家博主,csdn博主,努力进行算法分享,有问题欢迎私聊

评论

发布
暂无评论
在基础语法中Java与c++有哪些不同?(对于学过c++转Java必看)_c++_秋名山码民_InfoQ写作社区