java中的Object、封装类(J2SE入门8)

java中的根类Object

java中所有的类的父类或直接或间接的或隐含的都是Object类。
java不允许循环继承,也就是互相继承是不可以的。

Object类中的finalize()一个对象被垃圾收集的时候,最后会由JVM调用这个对象的finalize方法

Object类中有一个String toString()方法,返回该对象的字符串表示。Object类中的toString()方法他返回的是类名加上他的地址的一个字符串。在子类中推荐覆盖toString()方法。

Object类中的boolean equals(Objecto)方法是用来比较对象的内容是否相等,其返回值是boolean类型的值,相同为真,不同则为假。实际上还是比较对象地址是否相同。String类覆盖了equals()方法,他比较是对象中的内容是否相同。子类中也推荐覆盖Object类中继承的equals()方法

equals()的覆盖原则:
自反性:x.equals(x) 为true
对称性:y.equals(x) 和 x.equals(y) 的值要相同,要么都为true,要么都为false。
传递性:x.equals(y)为true, y.equals(z)也为true ,那么x.equals(z)一定也为true。

覆盖equals()方法的步骤:

boolean equals(Object o){
if(this==o) return true; //1,看看是不是一个对象
if(o==null) return true; //2,看看对象是不是空
if(!(o instanceof 本类类名)) return false; //看看是不是本类对象

...... //根据本类设计。
}


封装类

java为每一个简单数据类型提供了一个封装类,使每个简单数据类型可以被Object来装载。

除了int(Integer)和char(Character),其余类型首字母大写即成封装类类型名。

转换字符的方式:
int I=10;
String s=I+” ”;
String s1=String.valueOf(i);

Int I=10;
Interger I_class=new integer(I);

封装类、字符串、基本类型间的转换

Interger--------------------(Double(x.toString))------------>Double
String -----------------(Integer.valueOf() )---------------->Integer
Integer-----------------(x.toString() )--------------------->String
int----------------------(100+””)------------------------->String
String------------------(Integer.parseInt() )--------------->int
Integer-----------------(Integer.intValue() )--------------->int



学会查看javadoc的帮助文档。要先关注要使用方法的返回值类型,也就是要获得内容的类型,然后看方法名,JDK中的方法名基本上是见名知义,参数表,就是看需要什么才可以获得的需要的那些内容,也要看自己能够提供什么。

注意:==在任何时候都是比较地址,这种比较永远不会被覆盖。

程序员自己编写的类和JDK类是一种合作关系。(因为多态的存在,可能存在我们调用JDK类的情况,也可能存在JDK自动调用我们的类的情况。)

注意:类型转换中double\Interger\String之间的转换最多。

(注:所有使用内部类的地方都可以不用内部类,但使用内部类可以使程序更加的简洁,便于命名规范和划分层次结构)。

内部类是指在一个外部类的内部再定义一个类。
*内部类可为静态,可用protected和private修饰。(而外部类不可以:顶级类只能使用public和default)。


posted @ 2011-05-02 20:00  BuildNewApp  阅读(628)  评论(0编辑  收藏  举报