Java 程序设计之“对象”篇
无论是通过对象----sf.incr()还是直接通过class---staticfun,incr ( )调用都是一样的 。
dedecms.com
Java相对C/C 的一些特性:
Java和C 都是混合型程序语言(hybird language),且Java奠基与C 之上, 织梦内容管理系统
但Java在OOP上却更“纯粹”一些,C 为了相容与C,包含了许多不适合出现在C 中的特性,这使得C 在某些方面显得过于复杂。 内容来自dedecms
1.数组(array): 织梦内容管理系统
在C/C 中,数组其实就是一快内存,假如在程序中访问了数组区块之外的地域或者在初始化之前便使用,会导致许多错误的发生。与C/C 不同的是,Java更注重安全性,它保证数组一定会被初始化(当产生references的数组时,其中每个references皆会被设定为null这一非凡值,Java将其视为“不指向任何对象”。在使用任何reference前,你必须先将某个对象指派给它),并使每个数组额外多出一点空间,并在执行时期对对数组索引值进行检查,从而使程序员无法超越范围。
2.生存空间(Scoping):
C/C 具备将较大的生存空间中的变量遮蔽起来的能力:
dedecms.com
例如: 织梦内容管理系统
{ int x = 1; { int x = 2; } } 本文来自织梦
即使上面这段程序在C/C 中合法,在Java总不能这样做,编译器会认为X已经被定义过了,Java认为这样轻易导致对程序的误解和混淆。在C 中,用完对象后,必须将其摧毁,否则其可能滋生臭虫,可什么时候才是最佳时机呢?围绕在变量寿命上的种种疑问,Java提供了解决方案,Java中有一种所谓的(垃圾回收器)garbage collector,机制,它会逐一检视所有通过new产生的对象,当不在有任何reference指向它们的时,将释放这些对象的内存,使程序员不必操心内存回收的问题,因为所有的对象,在你不需要他们的时候,将自动消失。 织梦内容管理系统
3.名称的可视性(Name visibility):
copyright dedecms
所有程序语言都存在名称治理的问题,如何区分相同名称的模块呢?C里头这个问题格外严重,为了避免名称冲突的问题,C classes将函数包装于内,使其他classes内的同名函数隔离,不过由于全局数据和全局函数(global function)的存在,还是有可能发生命名的冲突。于是,C 中引入"命名空间(namesapces)"的概念来解决了这一问题。
为了解决这一问题,Java采用和Internet域名相似的指定词。事实上, Java的设计者希望你将Internet域名反写过来。在Java1.0和1.1中,域名最末的com. edu. org. net等等,按照惯例都应该大写,在Java2时,发现了一些问题,就又变回了小写。
例如:com.bruceeckel.utility.foibles便置于com/bruceeckel/utility/foibles
这样使得每个package都成为一个独一无二的命名空间。每个class也都得到了一个独一无二的识别名称。 本文来自织梦
文章评论
共有位Admini5网友发表了评论 查看完整内容