|
发表于 2004-6-24 07:43:18
|
显示全部楼层
JAVA和C++的语言对比, 我总结如下:
1。 JAVA比起C++更像object-oriented programming, 相信用过JAVA的朋友都知道JAVA都是在一个一个CLASS里定义执行的, 而每个文件可以多过一个main的执行function,只要你有n个class在那个文件里。 可在C++里, 一个文件只能有一个main function。 最明显的就是C或c++里, main是可以单独拿出来执行的, 而JAVA里main本身也要在一个class里。
2。JAVA比C++要安全, 虽然我保留这个发言权, 但通过对C++里设立指针,和JAVA里设立reference来作对比, 却有这种意思。 初看指针和reference其实定义没什么大的区别, 但细看, 最大区别就是reference的控制权在系统, 而指针的控制权在programmer。相信如果长期编译C或C++的朋友有过因为指针问题而debug很久的经验, 原因就是由于太多指针的设定, 而操控权都在programmer上, 一个不小心, 就会毁了程序。而JAVA里是用reference的, 所以系统帮你处理了这些问题。当然这里有好有坏, 安全了, 但又失去了某些操控权。
3。 JAVA对data type的限制比C++或者C要严谨, 举个例子, 在C里boolean的data type可以为true/false, 或者0/1, 但在JAVA里只有ture/false, 而0/1不被接受!这里面的障碍就是, 在C++里你可以用原先的int来return一个boolean值, 而JAVA里的这种casting是不允许的。
4。JAVA对变量的默认allocation是dynamic, 换句话说是要在run-time的时候才会由系统给出内存的, 除非你有加static这个keyword, 不然在编译的时候, compiler是不会事先划分内存给变量的, 这个跟C和C++不同, C和C++对变量是static binding, 在compiling的时候就由系统划分了内存给这些变量了。 所以在速度上, C/C++比JAVA要快, 因为是static binding, 而JAVA里的变量都是dynamic binding, 所以默认都是存在heap或者stack里, 相信JVM就是在STACK基础上运作的, 而STACK就是dynamic memory allocation.
以上纯属个人意见, 欢迎指教哦。 |
|