Welcome 微信登录

首页 / 软件开发 / JAVA

java返回值过载

java返回值过载

java返回值过载2007-05-28 yycnet.yeah.net yyc译我们很易对下面这些问题感到迷惑:为什么只有类名和方法自变量列出?为什么不根据返回值对方法加以区分?比如对下面这两个方法来说,虽然它们有同样的名字和自变量,但其实是很容易区分的:void f() {}int f() {}若编译器可根据上下文(语境)明确判断出含义,比如在int x=f()中,那么这样做完全没有问题。然而,我们也可能调用一个方法,同时忽略返回值;我们通常把这称为&l...
java的清除:收尾和垃圾收集

java的清除:收尾和垃圾收集

java的清除:收尾和垃圾收集2007-05-28 yycnet.yeah.net yyc译程序员都知道“初始化”的重要性,但通常忘记清除的重要性。毕竟,谁需要来清除一个int呢?但是对于库来说,用完后简单地“释放”一个对象并非总是安全的。当然,Java可用垃圾收集器回收由不再使用的对象占据的内存。现在考虑一种非常特殊且不多见的情况。假定我们的对象分配了一个“特殊”内存区域,没有使用n...
java的finalize()方法

java的finalize()方法

java的finalize()方法2007-05-28 yycnet.yeah.net yyc译此时,大家可能已相信了自己应该将finalize()作为一种常规用途的清除方法使用。它有什么好处呢?要记住的第三个重点是:垃圾收集只跟内存有关!也就是说,垃圾收集器存在的唯一原因是为了回收程序不再使用的内存。所以对于与垃圾收集有关的任何活动来说,其中最值得注意的是finalize()方法,它们也必须同内存以及它的回收有关。但这是否意味着假如对象包含了其他对象,f...
必须执行清除

必须执行清除

必须执行清除2007-05-28 yycnet.yeah.net yyc译为清除一个对象,那个对象的用户必须在希望进行清除的地点调用一个清除方法。这听起来似乎很容易做到,但却与C++“破坏器”的概念稍有抵触。在C++中,所有对象都会破坏(清除)。或者换句话说,所有对象都“应该”破坏。若将C++对象创建成一个本地对象,比如在堆栈中创建(在Java中是不可能的),那么清除或破坏工作就会在“结束花括号&...
java成员初始化

java成员初始化

java成员初始化2007-05-28 yycnet.yeah.net yyc译Java尽自己的全力保证所有变量都能在使用前得到正确的初始化。若被定义成相对于一个方法的“局部”变量,这一保证就通过编译期的出错提示表现出来。因此,如果使用下述代码:void f() {int i;i++;}就会收到一条出错提示消息,告诉你i可能尚未初始化。当然,编译器也可为i赋予一个默认值,但它看起来更象一个程序员的失误,此时默认值反而会“...
java规定初始化

java规定初始化

java规定初始化2007-05-28 yycnet.yeah.net yyc译如果想自己为变量赋予一个初始值,又会发生什么情况呢?为达到这个目的,一个最直接的做法是在类内部定义变量的同时也为其赋值(注意在C++里不能这样做,尽管C++的新手们总“想”这样做)。在下面,Measurement类内部的字段定义已发生了变化,提供了初始值:class Measurement {boolean b = true;char c = "x";b...
java构建器初始化

java构建器初始化

java构建器初始化2007-05-28 yycnet.yeah.net yyc译可考虑用构建器执行初始化进程。这样便可在编程时获得更大的灵活程度,因为我们可以在运行期调用方法和采取行动,从而“现场”决定初始化值。但要注意这样一件事情:不可妨碍自动初始化的进行,它在构建器进入之前就会发生。因此,假如使用下述代码:class Counter {int i;Counter() { i = 7; }// . . .那么i首先会初始化成零,...
java的数组初始化

java的数组初始化

java的数组初始化2007-05-28 yycnet.yeah.net yyc译在C中初始化数组极易出错,而且相当麻烦。C++通过“集合初始化”使其更安全(注释⑥)。Java则没有象C++那样的“集合”概念,因为Java中的所有东西都是对象。但它确实有自己的数组,通过数组初始化来提供支持。数组代表一系列对象或者基本数据类型,所有相同的类型都封装到一起——采用一个统一的标识符名称。数组...
java初始化学习总结

java初始化学习总结

java初始化学习总结2007-05-28 yycnet.yeah.net yyc译作为初始化的一种具体操作形式,构建器应使大家明确感受到在语言中进行初始化的重要性。与C++的程序设计一样,判断一个程序效率如何,关键是看是否由于变量的初始化不正确而造成了严重的编程错误(臭虫)。这些形式的错误很难发现,而且类似的问题也适用于不正确的清除或收尾工作。由于构建器使我们能保证正确的初始化和清除(若没有正确的构建器调用,编译器不允许对象创建),所以能获得完全的控制权...
java隐藏实施过程

java隐藏实施过程

java隐藏实施过程2007-05-28 yycnet.yeah.net yyc译“进行面向对象的设计时,一项基本的考虑是:如何将发生变化的东西与保持不变的东西分隔开。”这一点对于库来说是特别重要的。那个库的用户(客户程序员)必须能依赖自己使用的那一部分,并知道一旦新版本的库出台,自己不需要改写代码。而与此相反,库的创建者必须能自由地进行修改与改进,同时保证客户程序员代码不会受到那些变动的影响。为达到这个目的,需遵守一定的约定或规则...
创建独一无二的包名

创建独一无二的包名

创建独一无二的包名2007-05-28 yycnet.yeah.net yyc译大家或许已注意到这样一个事实:由于一个包永远不会真的“封装”到单独一个文件里面,它可由多个.class文件构成,所以局面可能稍微有些混乱。为避免这个问题,最合理的一种做法就是将某个特定包使用的所有.class文件都置入单个目录里。也就是说,我们要利用操作系统的分级文件结构避免出现混乱局面。这正是Java所采取的方法。它同时也解决了另两个问题:创建独一无二...
利用导入改变java行为

利用导入改变java行为

利用导入改变java行为2007-05-28 yycnet.yeah.net yyc译Java已取消的一种特性是C的“条件编译”,它允许我们改变参数,获得不同的行为,同时不改变其他任何代码。Java之所以抛弃了这一特性,可能是由于该特性经常在C里用于解决跨平台问题:代码的不同部分根据具体的平台进行编译,否则不能在特定的平台上运行。由于Java的设计思想是成为一种自动跨平台的语言,所以这种特性是没有必要的。然而,条件编译还有另一些非常...
Java访问指示符

Java访问指示符

Java访问指示符2007-05-28 yycnet.yeah.net yyc译针对类内每个成员的每个定义,Java访问指示符poublic,protected以及private都置于它们的最前面——无论它们是一个数据成员,还是一个方法。每个访问指示符都只控制着对那个特定定义的访问。这与C++存在着显著不同。在C++中,访问指示符控制着它后面的所有定义,直到又一个访问指示符加入为止。通过千丝万缕的联系,程序为所有东西都指定了某种形式...
友好访问

友好访问

友好访问2007-05-28 yycnet.yeah.net yyc译如果根本不指定访问指示符,就象本章之前的所有例子那样,这时会出现什么情况呢?默认的访问没有关键字,但它通常称为“友好”(Friendly)访问。这意味着当前包内的其他所有类都能访问“友好的”成员,但对包外的所有类来说,这些成员却是“私有”(Private)的,外界不得访问。由于一个编译单元(一个文件)只能从属于单个包...
<< 1 2 3 4 5 6 7 8 9 10 >>