8.2常用类(Object类,Scanner类)

来源:互联网 发布:网络推广活动方案 编辑:程序博客网 时间:2024/06/06 05:38

一、Object类概述及其构造方法

(1)     Object类概述:是类层次结构的根类,所有类都直接或者间接的继承自该类,所有对象(包括数组)都实现这个类的方法。

(2)     构造方法:public Object()

(3)     Object类的成员方法:

publicint hashCode()

a.  返回该对象的哈希码值。哈希码值在底层通过哈希表进行的一个哈希算法算出来的。

         b. 不同对象的,hashCode()一般来说不会相同。但是,同一个对象的hashCode()值肯定相同。

c.  哈希码值不是实际地址值,可以理解为逻辑地址值。举例:物体和编号

publicfinal Class getClass()

a.  返回此 Object的运行时类。

b.  可以通过Class类中的一个方法: public String getName() String的形式返回此 Class(),获取对象的真实类的全名称。

publicString toString()

         a.   返回该对象的字符串表示。通常,toString方法会返回一个“以文本方式表示”此对象的字符串

b.   它的值等于:getClass().getName() + '@' + Integer.toHexString(hashCode())

【Integer类】

int类型的包装类型:从一个基本类型---->提升了Integer类型(JDK5.0以后特性:

       int类型---->自动装箱 Integer类型

       Integer类型--->自动拆箱int)

       public static String toHexString(inti)

                  以十六进制(基数 16)无符号整数形式返回一个整数参数的字符串表示形式。

c. 创建对象,直接输出对象名称,其实是调用了toString()方法,打印出来的是一个全路径名称的一个地址值:包名.类名@16进制数据

d.   如果想打印出来显示的是该类中的成员,就需要重写Object中的toString();在一个类中重写toString()是不需要手动建立的,自动生成!( alt+shift+s-->s)

publicboolean equals(Object obj)

         a.  指示其他某个对象是否与此对象“相等”。

b.  默认情况下比较的是对象的地址值是否相同。

c. 如果要比较的他们的内容(成员变量)是否相同,那么就必须重写equals()方法。手动重写/自动生成

d.  ==equals()的区别。(面试题)

==: String:直接比较两个对象的地址值是否相同

   equals():默认的比较的是地址值,如果重写了Object中的equals()方法,那么就比较两个对象的内容是否相同 

protectedvoid finalize()

        a.  当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。

b. 垃圾回收器不会马上回收垃圾,但是我们可以建议它尽快回收垃圾。(System.gc()方法)

c.  主要针对堆内存。

protectedObject clone()

          表示创建一个对象的副本:复制操作

      Object 类的 clone方法执行特定的复制操作。首先,如果此对象的类不能实现接口 Cloneable,则会抛出 CloneNotSupportedException


二、Scanner类概述及其构造方法

1Scanner类概述:JDK5以后用于获取用户的键盘输入

2)构造方法: Scanner(InputStream  is)

InputStream:抽象类:抽象类不能直接实例化:字节输入流(IO)

InputStream is = System.in; 标准输入流抽象类多态

3Scanner类中的成员方法:

基本格式:hasNextXxx() 判断是否还有下一个输入项,其中Xxx可以是Int,Double等。

                                                如果需要判断是否包含下一个字符串,则可以省略Xxx

                   nextXxx()  获取下一个输入项。Xxx的含义和上个方法中的Xxx相同

                比较:  int类型

Boolean  hasNextInt():  具有判断功能:判断是否还有下一个输入项(整数项)

                 nextInt() :   接收的一个int类型的数据

常用方法:public int nextInt():接收的是一个整数类型

public String nextLine():接收的是一个字符串类型

细节问题:先接收一个int类型,再去接收一个字符串类型,发现字符串类型的值会遗漏掉!直接输出int类的值,字符串是空的,没有值?为什么?

跟回车换行符有关系,应该在输入字符串之前,再创建一个键盘录入对象

举例:

Scanner sc = new Scanner(System.in);

int a = sc.nextInt() ;

Scanner sc2 = new Scanner(System.in) ;

String b = sc2.nextLine();

System.out.println("a:"+a);

System.out.println("b:"+b);