java中api之Object,equalsclone,Scanner的学习与掌握

前言:在学习这部分java中api时,刚开始学的时候感觉知识点繁多,总是学了后边忘前边,在这里我想说的是学习api时,千万不能投机取巧,学了一遍后以为自己已经掌握了,其实不然,这部分知识只能反复练习,瞬间速成的办法是不可能存在的,因此要不断敲代码。

API(apilcation program interface):应用程序编程接口。

 一.Object:是层次结构的根类,每个类都会默认继承此类来作为父类。

对象的哈希码值:public int hashCode()

      可以理解为地址值(但不是真正的地址值)这个东西没有实际意义,支持此方法是为了提高哈希表(例如 java.util.Hashtable 提供的哈希表)的性能。

 public static void main(String[] args) {
	Student s=new Student();
	System.out.println(s.hashCode());

public final Class getClass()

返回此 Object 的运行时类。返回的 Class ,打印出来的是运行时的类。

public static void main(String[] args) {
	Student s=new Student();
     Class c1=s.getClass();
    System.out.println(c1);//class org.westos.api.Studen

  public String getName()以 String 的形式返回此 Class

  对象所表示的实体(类、接口、数组类、基本类型或 void)名称。

打印出来的是一个一个累的名字,义字符串形式来显示当前类的名字,
全类名:包名加上类名 

String name =c1.getName();
System.out.println(name);//org.westos.api.Student
//打印出来的是一个一个累的名字,义字符串形式来显示当前类的名字,
//全类名:包名加上类名

Integer: 类在对象中包装了一个基本类型 int 的值。   Integer     类型的对象包含一个int类型的字段

public static String toHexString(int i)以十六进制(基数 16)

 无符号整数形式返回一个整数参数的字符串表示形式。 
 

public String toString()返回该对象的字符串表示。

                Student s=new Student();
		System.out.println(s);//org.westos.work.Student@70dea4e
		System.out.println(s.toString());//org.westos.work.Student@70dea4e

注释:当然我们不可能知道这是什么意思,看一下源码就知道toString已经被重写,相当于一个包装,把中间复杂的内容都装在了一起,因此我们以后就可以直接用它。不用去一个一个调。

源码如下:

System.out.println(s.getClass().getName()+"@"+Integer.toHexString(s.hashCode()));
二.equals:在java中用来做比较的关键字 ,属于object类中的方法,

 “==”比较地址值是否相等。

 “equals”:默认比较的是地址值。

public boolean equals(Object obj)

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

 

	@Override
	public boolean equals(Object obj) {//传入的对象
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())//当前运行的类
			return false;
		Student other = (Student) obj;//向下转型,转成具体的一个父类
		if (age != other.age)
			return false;
		if (name == null) {
			if (other.name != null)
				return false;
		} else if (!name.equals(other.name))
			return false;
		return true;
	}

注释:equal可以比较内容的,但是比较前必须重写上述的程序。

三.clone

protected Object clone()

       throws CloneNotSupportedException
       抛出异常
        创建并返回此Object 类的 clone 方法执行特定的复制操作。首先,如果此对象的类不能实现
        接口 Cloneable,则会抛出 CloneNotSupportedException。
        对象的一个副本。“副本”的准确含义可能依赖于注意,所

        有的数组都被视为实现接口 Cloneable。

interface Clone{
}
public class Student implements Cloneable{
private String name;
private int age;
public Student(String name, int age) {
	super();
	this.name = name;
	this.age = age;
}
/**
 * @return the name
 */
public String getName() {
	return name;
}
/**
 * @param name the name to set
 */
public void setName(String name) {
	this.name = name;
}
/**
 * @return the age
 */
public int getAge() {
	return age;
}
/**
 * @param age the age to set
 */
public void setAge(int age) {
	this.age = age;
	
}
/* (non-Javadoc)
 * @see java.lang.Object#clone()
 */
@Override
protected Object clone() throws CloneNotSupportedException {
	// TODO Auto-generated method stub
	return super.clone();
}
}

* @author 田伟
 *
 */
public class CloneDemo {
public static void main(String[] args) throws CloneNotSupportedException {
	Student s=new Student ("张卫健",20);
	System.out.println(s.getName()+s.getAge());
	Object obj=s.clone();
	Student s2=(Student)obj;
	System.out.println(s2.getName()+s2.getAge());
}
}

注释:要实现克隆,必须要有接口,同时要实行向下转型。

四.Scanner:一个可以使用正则表达式来解析基本类型和字符串的简单文本扫描器。

  键盘录入的基本步骤:
 1.需要创建键盘录入对象
 Scanner sc=new Scanner(System.in);
 2.导包 import java.util.Scanner;
      构造方法: public Scanner(InputStream source):已输入流的方式录入数据。
      构造一个新的 Scanner,它生成的值是从指定的输入流扫描的。取
自该流的字节通过底层平台的默认字符集转换成字符。 

3.文字叙述

4.接收数据

举例:

public class Student {
public static void main(String[] args) {
	Scanner sc=new Scanner(System.in);
	System.out.print("请输入一个数据:");//输入流
	int a=sc.nextInt();
	System.out.println(a);
}
}

注释:System包含一些类的字段和方法,不能实例化,所以就没有构造方法,有字段说明有成员变量。字段被static修饰,所以可以用类型或对象名直接调用
InputStream:字节输入流:
InputStream in=System.in底层返回的是一个字节输入流(标准输入流)

 hasNextxxx():当前扫描器是否有下一个可以录入的xxx数据类型

注释:当输入的数据不符合此类型的话,就会产生异常,处理办法,就是来一个if语句进行判断。

import java.util.Scanner;

/**键盘录入两个int类型
 * 键盘录入两个String类型
 * @author 田伟
 *
 */
public class ScannerDemo2 {
public static void main(String[] args) {
	Scanner sc=new Scanner(System.in);
	int a=sc.nextInt();
	int b=sc.nextInt();
	String c=sc.nextLine();//会出现错误,必须重新创建一个键盘录入对象
	String d=sc.nextLine();
	System.out.println("a:"+a+",b:"+b+",c:"+c+",d"+d);
}
}
注释:键盘可以录多种不同的数据,除了这两种外还有好多种,不过方法都是一样,只要把类型改变就行了。

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值