Java没有函数,作为一个比c十十更纯的面向对象的语言,Java强迫开发人员把所有例行程序包括在类中,事实上,用方法实现例行程序可激励开发人员更好地组织编码。
(46) 类型转换
在c和c十十中有时出现数据类型的隐含转换,这就涉及了自动强制类型转换问题。例如,在c十十中可将一浮点赋予整型变量,并去掉其尾数。Java不支持c十十中的自动强制类型转换,如果需要,必须由程序显式进行强制类型转换。
Java是一个严进行类型检查的程序语言,对于下面这样的程序,在C的编译器上编译时最多只会出现警告的信息,但是在Java里则不予通过:
Int aInteger; Double aDouble=2.71828; AInteger = aDouble;
虽然这样的转型在C里是合法的,但是也会造成数据精确度的损失。Java为了要确定写程序的人充分地了解这点,必须要程序设计强制转型(type casting),Java的编译器才会接受:
int aInteger;
doublea Double=2.71828;
aInteger=(int)aDouble;
(47)对C而言,类库一旦升级,则必须对应用程序进行重新编译,否则就无法使用升级后类库的新增功能。而Java语言在其支持的类库升级后,只需要直接覆盖上已有的类库,不需要重新编译相应的应用程序。
(48)java不再有structure、union及typedef
事实上,早在C中就可以去掉C语言中的structure和union等对复杂数据的自定结构类型,因为类(Class)的定义方式可以完全做到这项 功能。而typedef也是不必要的,一切都用类就可以了。虽然C这样的设计是为了和C语言兼容,但是使用多余的语言特点不但不必要,而且容易造成对 程序认识的混淆。
(49)和C连接
不管Java是多么强大,总是有人需要把它和C连接起来。因为只要有一个新的程序语言或是软件开发工具一出现,大家就会问:"它是否具有和原有程序库 连接的能力呢?"也因为C语言在电脑界中占了很重要的地位。大家的问题其实就等于是直接问"它是否可以和C连接?"。目前在Java中,的确提供 了和C语言连接的方法,它的做法基本上是先将C语言所写的程序建构成动态链接函数库(DynamicLinking Library,DLL),再由Java程序去调用DLL里的函数。
这种连接的方式,使得DLL中的函数,从Java的光看就是一个"方法"。不过因为这种方法是直接由其他的程序语言所提供,而不是以Java语言所写的,所以它被称之为"原生方法"(NativeMethod)。由于Java Applet一些安全上的限制,所以这种连接外部程序的方法只能用在Java Application内
50)C++的跨平台问题!
Java编译器所生成的代码可以不基于任何具体的硬件平台,而是基于一种抽象的机器---虚拟机。而c,c的源程序要在不同平台上运行,必须重新编译。
不论是C还是C都会有依赖平台与实现的不同比如int的大小。
由于C以及C库功能基本都是最简化的。所以基本没法开发什么比较有用处的可移植代码.比如GUI的不同,socket实现的不同等等都制约了C的可移植性
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/sanxing/article-58491-14.html
一周不重样
一个浙江财经学院教授在研究问题时就只有一个3000万的推测数据吗
由多艘军舰护航
还说实力远超日本