c++ 与 java_Java与C++比较

本文仅从片面的角度比较Java与C++的一些特性,如有错误的地方,请指正。

语言特性上的一些差异:

1、Java没有无符号整数,C++/C#都有。

2、Java中不存在指针。Java的引用是功能弱化的指针,只能做“调用所指对象的方法”的操作,C#默认不使用指针,在unsafe标识时可以使用。

3、Java不能用双等号比较字符串(注意常量池中的字符串),C++/C#可以。

4、Java强制局部变量初始化。

5、Java不支持自动类型转换,必须强制类型转换。

6、Java和C#没有宏。

7、C++经过编译连接后生成二进制代码,C#生成MSIL,Java生成字节码。

8、Java和C#有垃圾回收机制(GC),C++需要手动释放资源,可能会因失误忘记释放资源而造成内存泄漏等问题(C++11提供智能指针来解决这一问题)。

类机制上的一些差异:

1、 Java是完全面向对象的,所有方法都必须写在类中,C++既可以面向过程也可以面向对象,函数不必须写在类中。为了避免命名重复与实现代码重用性,C++和C#使用命名空间,Java使用包。

2、 Java中有强制性异常(除RuntimeException外,必须在编译前处理),而C++没有。(C++ C# 和Java的捕获异常语法大体相同)

3、 Java所有对象都直接或间接继承自Object,并且提供接口机制,C++没有共同的基类。

4、 Java在重写时默认为虚函数,而C++必须用virtual说明。

C++:

1 classA2 {3 public:4 void virtual FUN() //修改这里的virtual

5 {6 cout<

10 class B : publicA11 {12 public:13 voidFUN()14 {15 cout<FUN();25 p = &b;26 b.FUN();27 return 0;28 }29 /*

30 有virtual时结果31 FUN in A is called32 FUN in B is called33 */

34 /*

35 删去virtual时结果36 FUN in A is called37 FUN in A is called38 */

Java:

1 classA{2 public voidFUN(){3 System.out.println("FUN in A is called");4 }5 }6 class B extendsA{7 public voidFUN(){8 System.out.println("FUN in B is called");9 }10 }11 public classVirtualTest {12 public static voidmain(String args[]) {13 A a = newA();14 B b = newB();15 A p;16 p =a;17 p.FUN();18 p =b;19 p.FUN();20 }21 }22 /*

23 默认为virtual24 FUN in A is called25 FUN in B is called26 */

5、 Java因会与方法重载产生语义二义性而不支持默认参数。

6、 C++有运算符重载,和类型转换函数,而Java中没有。

7、Java 不支持多重继承,只能通过实现多个接口来达到相同目的,C++ 支持多重继承。

8、Java 不支持条件编译,C++ 通过 #ifdef #ifndef 等预处理命令从而实现条件编译。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/295293.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mac 登陆 去掉 其他用户

2019独角兽企业重金招聘Python工程师标准>>> 打开 终端 sudo defaults write /Library/Preferences/com.apple.loginwindow SHOWOTHERUSERS_MANAGED -bool FALSE 转载于:https://my.oschina.net/liuchuanfeng/blog/617387

使用 Windbg 分析一个 异步操作 引发的 Crash 异常

上周我们收到了一个客户的紧急求助&#xff0c;他们的一个 iis应用程序池 经历了频繁重启&#xff0c;即使从错误日志中也不得到任何有用的信息&#xff0c;异常信息如下&#xff1a;System.NullReferenceException : Object reference not set to an instance of an object. S…

wxGlade的图标,原来是来自蒙德里安的名画!

一直用wxGlade做GUI的&#xff0c;今天突然发现它的图标和一副油画很像。 wxGlade的图标&#xff0c;图标的文件名竟然就叫做mondrian.ico 蒙德里安创造了很多这种纯粹的基本要素的作品&#xff0c;下面是其中之一&#xff0c;《构图》&#xff08;Composition 1929 - Piet Mon…

SAP HANA解读-2012 SAP商业同略会分享

7月26日和27日&#xff0c;我受邀参加了SAP在国家会议中心举办的“蕴韬略促转变共发展”为主题的中国商业同略会&#xff0c;下面就参会的一些感想和大家分享一下。 SAP中国商业同略会是第二次在北京举办&#xff0c;此次大会汇聚国内外知名商业领袖、企业高层、行业权威、专家…

java日期加减秒_Java日期——年、月、日、时、分、秒、周加减计算

Java日期——年、月、日、时、分、秒、周加减计算Java日期——年、月、日、时、分、秒、周加减计算1.Pom依赖joda-timejoda-time2.9.92.示例代码package com.example.demo.controller;import org.joda.time.DateTime;import java.text.SimpleDateFormat;import java.util.Date;…

遍历Map的四种方法

map遍历经常忘记&#xff0c;老是在网上找&#xff0c;干脆自己记录下来 public static void main(String[] args) {Map<String, String> map new HashMap<String, String>();map.put("1", "value1");map.put("2", "value2&qu…

不可思议!这篇全篇脏话的文章竟然发表了

全世界只有3.14 % 的人关注了爆炸吧知识一教授为了抗议三流科学杂志发送垃圾邮件&#xff0c;回复了一篇全文只重复七个脏话字眼的论文&#xff0c;竟被出版&#xff01;这是十几年前&#xff0c;麻省理工大学的一个教授埃迪科勒&#xff0c;发表的一篇名为 Get me off Your Fu…

设置圆角、定向设置圆角-按钮等控件

为什么80%的码农都做不了架构师&#xff1f;>>> //定向设置圆角UIBezierPath *maskPath [UIBezierPath bezierPathWithRoundedRect:whiteView.bounds byRoundingCorners:UIRectCornerBottomLeft | UIRectCornerBottomRight cornerRadii:CGSizeMake(10, 10)];CASha…

C# 10 新特性 —— Lambda 优化

C# 10 新特性 —— Lambda 优化IntroC# 10 对于 Lambda 做了很多的优化&#xff0c;我们可以在 C# 中更加方便地使用委托和 Lambda 了&#xff0c;下面就来看一些示例Lambda EnhancementsNatural types for lambdasC# 10 可以更好做类型推断&#xff0c;很多时候编译器可以自动…

40个最好的Tumblr主题

如果安装了一款较好的Tumblr主题&#xff0c;你的Tumblr空间将焕然一新。然而找到一款合适的主题并不是一件容易的事&#xff0c;这正是本文中我整理那么多优质的Tumblr模板作为灵感的原因。其中有一些免费的Tumblr主题&#xff0c;另外的一些付费的Tumblr主题也确实很棒&#…

以太网

以太网将数据链路层的功能划分到了两个不同的子层&#xff1a; 1) 逻辑链路控制 (LLC) 子层 2) 介质访问控制 (MAC) 子层。 逻辑链路控制 (LLC) 子层&#xff1a; 以太网&#xff0c;IEEE 802.2 标准规范 LLC 子层的功能&#xff0c;而 802.3 标准规范 MAC 子层…

Android之Universal-Image-loader

一、介绍 Android-Universal-Image-Loader是一个开源的UI组件程序&#xff0c;该项目的目的是提供一个可重复使用的仪器为异步图像加载&#xff0c;缓存和显示。所以&#xff0c;如果你的程序里需要这个功能的话&#xff0c;那么不妨试试它。因为已经封装好了一些类和方法。我们…

java 有没有with语句_Java中的try-with-resources语句

在这个Java程序示例中&#xff1a;package test;import java.sql.DriverManager;import java.sql.Connection;import java.sql.Statement;public class Test{private static void example(){String url "jdbc:oracle:thin://localhost:7856/xe";String user "…

现代女性都有哪些烦恼?

1 医生&#xff0c;咱可以先拔下来么&#xff01;▼2 靓仔&#xff0c;我笑得停不下来&#xff01;&#xff08;via.豆瓣哈组&#xff09;▼3 边做饭边把锅给洗了&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼4 令人无路可退的辞职方式&#xff01;&#xff1f;&…

c++11新特性(4) lambda捕捉块

lambda表达式中的方括号成为捕捉块,能够在这里指定怎样从所在的作用域中捕捉变量. 捕捉的意思是指能够在该lambda中使用该变量.即能够捕获外部变量在lambda表达式内使用. 能够使用两种方式来捕捉所在的作用域中的全部变量. []:通过值捕捉全部变量 [&]:通过引用捕捉全部变量…

在 C# 中如何获取存储过程的返回值 ?

咨询区 GurdeepS&#xff1a;我有下面的查询语句&#xff1a;set ANSI_NULLS ON set QUOTED_IDENTIFIER ON goALTER PROCEDURE [dbo].[Validate] a varchar(50), b varchar(50) outputASSET Password (SELECT Password FROM dbo.tblUser WHERE Login a)RETURN b GO编译都是没…

JDBC 程序的常见错误及调试方法

详细介绍&#xff1a;http://dev.mysql.com/doc/refman/5.5/en/error-handling.htmlhttp://dev.mysql.com/doc/refman/5.5/en/error-messages-client.htmlhttp://dev.mysql.com/doc/refman/5.5/en/error-messages-server.html搜索关键词&#xff1a;JDBC MySQL Error Messages实…

windows2003添加普通用户的远程桌面权限

编写bat脚本&#xff0c;写入下面内容就行了第一步将普通用户加入远程用户组第二步设置普通用户允许终端登录echo offnet localgroup "Remote Desktop Users" userxxx /addWMIC RDPermissions Where "TerminalNameConsole" Call AddAccount "userxxxx…

mysql 前缀索引 语法_PHP 之Mysql优化

一、建立索引1、前缀索引建立前缀索引的语法&#xff1a;alter table test add KEY (name(5));name一定是字符类型(索引字段)&#xff0c;5为长度那好&#xff0c;如何确定取前面几个字符呢&#xff1f;显然&#xff0c;这个场景是一个观察的结果&#xff0c;也就是说&#xff…

别不承认!搞懂那些数理原理,才发现它们和枯燥根本不沾边!

▲ 点击查看数理化的学习对于很多孩子&#xff0c;包括家长都是一个大难题。比如&#xff0c;我们要教孩子认识动物&#xff0c;一般是要给孩子看动物的图片或实体&#xff0c;孩子自然就对这个动物有个认知。要教孩子数字&#xff0c;就会用一件玩具、两个苹果这种和现实有关联…