Java和C++的一些比较

来源:互联网 发布:zbrush4r7注册机 mac 编辑:程序博客网 时间:2024/06/06 09:53

1. 前言:

         最近公司的项目主要偏重于B/S模式的项目,因此主要使用Java和JavaScript语言分别做后台和前台的编码工作。相较于之前项目中一直在用的C++语言,还是体会到了Java和C++存在着一些差别。

        通过在网上查找相关的Java和C++相互比较的技术文章,可以更好地了解Java和C++之间的区别和联系。下面的几篇文章是从网上摘录的要点,可以更好地了解这些语言的特点。

2. Java和C++技术文章摘录:

2.1 如何学好C++

文章来源:酷客网 http://coolshell.cn/articles/4119.html

学好C++,要通过和Java语言进行对比来学习。因为Java对C++这个不成熟的语言做了很多调整、规范和限制。对比一下Java和C++,可以通过一些问题来加深印象:

  • Java的异常为什么必须catch,不然就会编译不通过?
  • Java为什么不提供操作符重载?
  • Java为什么会引入接口来做多重继承?
  • Java为什么没有像C++那样的I/O字符流?
  • Java为什么不支持指针?
  • Java为什么可以做到垃圾回收?

……

Java体现着很多面向对象设计的东西,学习Java有助于你学会怎么更好地使用C++来编程?

2.2 如何学好Java?

Java学习书籍:

《Think in Java》绝对不应该作为你入门Java的第一本书籍。

Java开发环境:

安装JDK6,用类似UltraEdit, EditPlus的文本编辑器配置学习环境。初学Java,不建议用IDE工具,通过一行行的敲代码,会碰到很多问题。

Java基础之路:

Java SE, Java EE, Java ME (JDK5.0以前分别为J2SE, J2EE, J2ME)。

Java SE——AWT, Swing, I/O, Thread.

Java EE:

(1) JSP/Servlet, 结合tomcat,mySQL技术。学习JSP,还必须掌握一些外延技术,如还需掌握HTML/JavaScript(目前最火的AJAX技术之一)/CSS的技术,而了解XML是必不可少的(至少描述性配置信息是通过XML来描述的)。学习JSP/Servlet过程中,应该结合JDBC,数据库开发技术,毕竟绝大部分Java Web项目都是和数据库紧密结合的。

(2) 数据库开发技术:数据库技术是做业务系统必备技能,Java Web开发人员最低程度都应该掌握SQL语句的使用。数据库技术大体上可分为DBA技术和数据库技术。常用数据库DB2,Oracle,SQL Server, MySQL等。

(3) 学习Java EE其他开发技术。学习EJB的知识。在学习EJB过程中,应同时掌握一种企业级应用服务器的使用(如WebSphere,WebLogic,JBoss等)。

(4) 对Java EE有感悟后,可以学习Spring,Hibernate,以及各种Web框架(如Struts, JSP, Webwork等)。随着技术,经验的不断积累,会逐步关注分析、设计等更高层次的知识,可以学习相关的UML,模式等知识。

(5) 实践是学习Java技术历程中极其重要的一环。

2.3 C++与Java的区别:

http://blog.csdn.net/htyurencaotang/article/details/13626427

  1. Java没有显式指针,而在C++中却可以用。
  2. Java是主动多态的,不用关心具有继承关系的多个类之间的同名成员函数会调用哪个,Java会主动地从祖父类、祖祖父类……,追溯至最高一级父类,然后从上至下开始寻找并调用;C++却不会主动使用多态,要使用多态,就要用虚函数。
  3. Java是隐式继承的;C++是被动多态的,C++把话说明白了,你继承谁就继承谁,继承多个都可以,你什么都不说那么就不继承。
  4. Java有接口,C++中却没有。C++中是定义了一个抽象类,把成员函数设为常量,并改成纯虚函数,在C++中这样的抽象类就是接口。
  5. Java是单根继承的,但是允许一个类实现多个接口;C++虽然支持多继承,尽管很少有人去用它。
  6. Java中所有的函数都与类相关,没有全局变量和非成员函数,而C++却支持这些。
  7. C++中使用的动态内存怎么用就怎么还,Java中由于包含一个垃圾收集系统。
  8. Java有很紧凑的异常处理机制,而C++稍微显得草率了一些。但是,这不代表C++异常处理机制不强大,因为Java只能抛出Throwable之类的异常,而C++却什么都可以。
  9. Java标准库是Java庞大的体现,涵盖了国际化、网络化、数学、声音、Web应用和服务以及数据库等。

Java基础知识点:

  • JVM内存分配
  • 垃圾回收
  • 类加载
  • 自定义el表达式函数
  • Servlet的过滤器
  • Servlet的监听器
  • 一次http连接要经过哪些操作
  • 报文都包含哪些部分
  • 高并发的数据库如何设计
  • IOC的好处
  • DI的好处
  • 线程并发
  • 设计模式

Java基础知识:

http://blog.chinaunix.net/uid/199788/cid-7146-list-1.html

2.4 Java学习教程-1

博主:Vamei

http://www.cnblogs.com/vamei/archive/2013/03/31/2991531.html

        Java是面向对象。Java受到C和C++的强烈影响,Java与C++相似,都是静态类型,但移除了C++中容易出错的一些特征,比如指针和多重继承。Java的垃圾回收可以自动地管理和清理内存。Java产出效率高,又有良好的运行效率,在PC端、服务器端和移动端都有不俗的表现。

       Java是一门完全的面向对象语言,所以是了解其他面向对象语言的一个好范本。具体关于Java基础及进阶的知识点如下:

      Java教程目录:

从HelloWorld到面向对象、方法与数据成员、构造器与方法重载、封装与接口、实施接口、组合、包、继承、类数据与类方法、接口的继承与抽象类、对象引用、类型转换与多态、String类、异常处理、IO基础、RTTI、多线程、容器、嵌套类、GUI、事件响应、内存管理与垃圾回收、Tomocat尝试、Servlet等。

2.5 Java学习教程-2

博主:chenssy

http://cmsblogs.com/?cat=5

http://www.cnblogs.com/chenssy/category/525010.html

Java(提高篇)教程目录:

理解java的三大特性之封装-继承-多态、Java的四舍五入、抽象类与接口、使用序列化实现对象的拷贝、关键字static、详解内部类、实现多重继承、代码块、equals()方法总结、字符串、关键字final、异常、Java数组、集合(ArrayList/LinkedList/HashMap/HashSet/HashTable/HashCode/TreeMap/TreeSet/Vector/Iterator)、Stack、List、Map等。

2.6 C++的坑到底多不多?

文章来源:http://coolshell.cn/articles/7992.html ,酷壳网。

        我毕业时,是直接从C跳过C++学Java的,但是学Java的时候,不知道为什么Java要设计成这样,只好回头看C++,结果学C++的时候又有很多不懂,又只得回头看C,最后发现,C->C++->Java的过程,就是C++填C的坑,Java填C++的坑的过程。下面这些东西可以看到Java在填C/C++的坑:

1)Java彻底废弃了指针,而是使用引用;

2)Java用GC解决了C++的各种内存问题的诟病,当然也带来了GC的问题,不过功大于过;

3)Java对异常的支持比C++更严格,让编程更方便了;

4)Java没有像C++那样的template/macro/函数对象/操作符重载,泛型太晦涩,用OO更容易一些;

5)Java改进了C++的构造、析构、拷贝构造和赋值;

6)Java对完全抛弃了C/C++这种面向过程的编程方式,并废弃了多重继承,更OO(如,用接口来代替多重继承)。

0 0
原创粉丝点击