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
- Java没有显式指针,而在C++中却可以用。
- Java是主动多态的,不用关心具有继承关系的多个类之间的同名成员函数会调用哪个,Java会主动地从祖父类、祖祖父类……,追溯至最高一级父类,然后从上至下开始寻找并调用;C++却不会主动使用多态,要使用多态,就要用虚函数。
- Java是隐式继承的;C++是被动多态的,C++把话说明白了,你继承谁就继承谁,继承多个都可以,你什么都不说那么就不继承。
- Java有接口,C++中却没有。C++中是定义了一个抽象类,把成员函数设为常量,并改成纯虚函数,在C++中这样的抽象类就是接口。
- Java是单根继承的,但是允许一个类实现多个接口;C++虽然支持多继承,尽管很少有人去用它。
- Java中所有的函数都与类相关,没有全局变量和非成员函数,而C++却支持这些。
- C++中使用的动态内存怎么用就怎么还,Java中由于包含一个垃圾收集系统。
- Java有很紧凑的异常处理机制,而C++稍微显得草率了一些。但是,这不代表C++异常处理机制不强大,因为Java只能抛出Throwable之类的异常,而C++却什么都可以。
- 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(如,用接口来代替多重继承)。
- C++、java和matlab最近使用的一些比较
- Java和C++的一些比较
- [C#] C#与JAVA的一些语法比较
- Java 和 C/C++ 中的++的比较
- C++、Java和C#的特性比较
- C++、Java和C#的特性比较
- Java与C和C++的比较
- C++、Java和C#的特性比较
- objective-c和java,C++的比较
- object-c和Java的简单比较
- java和php面向对象的一些比较
- 比较C Sharp和Java
- 比较C Sharp和Java
- java和C++ C比较
- Java 和 Objective C 比较
- java和C++ C比较
- 比较C++, C#和Java
- java和C/C++比较
- USACO——Palindromic Squares 回文平方数
- OC笔记 - CALayer(2015.4.5)
- Java之POJO
- USACO——Dual Palindromes 双重回文数
- php 理论知识点
- Java和C++的一些比较
- Redis、Memcached、Guava、Ehcache中的算法
- LeetCode | Binary Tree Preorder Traversal
- OC笔记 - 核心动画(2015.4.6)
- NSArray的用法
- USACO——Mixing Milk 混合牛奶
- Baseadapter的getItem和getItemId的作用和重写
- IO笔记
- uva 10635 nlogn LIS