一、主体不同
1、C++:是C语言的继承,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计。
2、JAVA:是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念。
二、特点不同
1、C++:不仅拥有计算机高效运行的实用性特征,同时还致力于提高大规模程序的编程质量与程序设计语言的问题描述能力。
2、JAVA:具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点。
三、优势不同
1、C++:在C++中,类是支持数据封装的工具,对象则是数据封装的实现。C++通过建立用户定义类支持数据封装和数据隐藏。
2、JAVA:具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。
参考资料来源:百度百科-C++
参考资料来源:百度百科-Java
2022-09-27 广告
Java 是由 C++发展而来的,保留了 C++的大部分内容,其编程方式类似于 C++。但 Java 的句法更清晰、规模更小、更易学。Sun 公司对多种程序设计语言进行了深入研究,并摒弃了其他语言的不足之处,最终退出了 Java。正是这样,Java 从根本上解决了 C++的固有缺陷,形成了一种新的完全面向对象的语言。Java 和 C/C++的相似之处多于不同之处,有 C 基础的读者,学习 Java 会更容易。相比较而言,Java 的编程环境更为简单。
刚开始的时候我们也搞不清这些概念,不过后来就慢慢清晰了,首先和大家谈谈Java和js的区别,最简单的区别就是一个是后端,一个是前端。
java是纯面向对象语言,javascrip其实和Java是完全不同的东西,他以前也不叫JavaScript,叫做etscape Navigator,据说是为了搭载Java的顺分车才改名叫js的,因为当时Java很火。
JavaScript 是一种“脚本”,它直接把代码写到 HTML中,浏览器读取它们的时候才进行编译、执行。Java,是嵌在网页中,而又有自己独立的运行窗口的小程序。而且JavaScript 是动态类型语言,而 Java 是静态类型语言
让我们在来看看Java和c语言的区别,首先Java是面向对象的在里面,而C是完全面向过程的。Java可以跨平台,不同的操作系统都可以通过JVM来解释Java程序,而c语言的有些指令只在某些操作系统中才能执行。
那么js和c语言的区别在哪里呢?JavaScript是嵌入式脚本语言,可以直接插入网页或者以单独文件的形式引入网页。C语言是编译型语言,编写完毕后需要调试、编译,编译后为可执行文件,可独立运行。
推荐于2017-11-26
2013-09-10
Java有垃圾回收机制,当然也就没有C++的析构函数。但是,可控制性和C++相比就差了一点,而且也不是说有了垃圾回收,就不会产生内存泄漏。由于相互引用等原因可能造成对象的生存周期过长,垃圾回收失效。对象内存的回收,个人认为应该是由程序员来掌握的事情。C++可以用auto_ptr,shared_ptr等智能指针来完成自动析构,当然前提是你要熟悉他们的实现机制和应用场合
(2)
Java中所有的对象都是分配在堆上,在Java中只有句柄,也就是引用,没有指针。这样做有哪些好处呢?
a)没有指针。在java中没有sizeof,
没有*。看看下面这些语句吧,感觉是不是很象。b)
避免了临时对象。在Java中所有的对象都是以句柄表示,函数参数传递,结果返回等都是以句柄形式。也就避免了C++中经常出现的局部指针局部引用问题,
对象参数拷贝赋值,切片等问题,提高了效率和可靠性。
String
a
=
new
String(“123”);
//
Java
Code
std::string
*a
=
new
string(“123”);
//c++
code
(c)
在Java中,包含关系只能由句柄表示。
(3)
Java是单根继承体系,而C++可以有多重继承。java可以用interface来实现多重继承。来谈谈Java中的Object类,许多有趣的地方。
Clone方法,C++也可以实现,呵呵,”虚拟构造函数”,参见<
>
Equals方法,
由于Java中对象只能由句柄表示,又没有C++操作符重载的能力,所以这个来比较等价对象。C++中我们可以重载”==”操作符来判断等价对象。
Finalize方法,呵呵,类似于析构函数,但是千万不要当成析构函数来用哦,这个方法何时调用不是你能把握的,取决于垃圾回收机制
hashCode方法,
STL没有HashMap,HashTable等,但是java.util中有,所以…..
剩余的都是满足线程和同步的方法,跟C++没有可比性
(3)
在java中数组也是对象,所以当你下标越界的时候,会收到一个异常。而C++数组显然要比Java快点,因为他不检查index。
(4)
在java中,”123”这种字符串也是对象,而在C++中确是const
char*,
最让人范错的是那个字符串结束符。但是java和c++对这种const
char*
字符去有相同的优化,试试下面的代码:
String
a
=
"123";
String
b
=
"123";
if
(a
==
b)
{
System.out.println("OK");
}
C++代码:
const
char
*p
=
"123";
const
char
*q
=
"123";
if
(
q
==
p)
{
std::cout<<"OK"<
评论
0
0
0
加载更多