8.2常用类(Object类,Scanner类)

论坛 期权论坛 脚本     
匿名技术用户   2021-1-2 03:22   23   0

一、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);

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP