|
一、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类概述及其构造方法
(1)Scanner类概述:JDK5以后用于获取用户的键盘输入
(2)构造方法: Scanner(InputStream is)
InputStream:抽象类:抽象类不能直接实例化:字节输入流(IO流)
InputStream is = System.in;
标准输入流: 抽象类多态
(3)Scanner类中的成员方法:
基本格式: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); |