六、Java常用类:Object,Scanner

发布时间 2023-11-01 21:23:15作者: SIKeborn

一、Object类

Object:Class Object是类Object结构的根。 每个Class都有Object作为超类。 所有对象(包括数组)都实现了这个类的方法。

成员方法:
public int hashCode() 用来生成对象的唯一哈希码(hash code),它是用来快速比较两个对象是否相等的
public final Class getClass() 获取当前对象的类对象
public String toString() 用于返回对象的字符串表示形式
    public boolean equals(Object obj)  默认比较的是地址值
protected void finalize() 垃圾回收的
protected Object clone() 浅拷贝
   克隆(拷贝):
        浅拷贝:只是将对象整体复制一份,内部的引用地址共享一份
        深拷贝:所有的都复制一份  
package com.shujia.day08.ketang;

import java.util.Objects;

/*        Cloneable中并没有什么方法和常量,只是作为允许克隆的标记,像这样的接口叫做标记接口

    克隆(拷贝):
        浅拷贝:只是将对象整体复制一份,内部的引用地址共享一份
        深拷贝:所有的都复制一份

 */

class Demo{

}

class Dog implements Cloneable{
    String name;
    int age;
    Demo demo;

    public Dog() {
    }

    public Dog(String name, int age,Demo demo) {
        this.name = name;
        this.age = age;
        this.demo = demo;
    }

    @Override
    public String toString() {
        return "Dog{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", demo=" + demo +
                '}';
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Dog dog = (Dog) o;
        return age == dog.age && Objects.equals(name, dog.name);
    }

    @Override
    protected Object clone() throws CloneNotSupportedException {
        return super.clone();
    }
}

public class ObjectDemo2 {
    public static void main(String[] args) throws Exception {
        Demo demo = new Demo();
        Dog d1 = new Dog("小黑", 3,demo);
        System.out.println(d1);
//        Dog d2 = new Dog("小黑", 3);
//        System.out.println(d1.equals(d2));
//
//        String s1 = new String("你好");
//        String s2 = new String("你好");
//        System.out.println(s1.equals(s2));

        Object o = d1.clone();
        System.out.println(o);
        System.out.println(d1==o);
    }
}

 二、Scanner类

概述:是jdk1.5之后出现的键盘录入

使用Scanner类可以实现以下功能:

1. 从键盘读取输入:可以使用Scanner类的构造方法创建一个与标准输入流(System.in)关联的Scanner对象,然后使用next()、nextInt()、nextDouble()等方法读取用户输入的字符串、整数或浮点数。

2. 从文件读取输入:可以使用Scanner类的构造方法创建一个与指定文件关联的Scanner对象,然后使用相应的方法读取文件中的内容。

3. 从字符串读取输入:通过传递一个字符串给Scanner类的构造方法,可以创建一个与该字符串关联的Scanner对象,然后使用相应的方法读取字符串中的内容

下面是一些常用的Scanner类方法: 
- next(): 读取并返回一个输入的字符串。
- nextInt(): 读取并返回一个输入的整数。
- nextDouble(): 读取并返回一个输入的浮点数。
- nextLine(): 读取并返回一行输入的字符串。可以接收换行符
- hasNext(): 判断是否还有下一个输入。 
- close(): 关闭Scanner对象。
package com.shujia.day08.ketang;
import java.util.Scanner;


/*
    jdk1.5之后出现的键盘录入的类Scanner

 */
public class ScannerDemo1 {
    public static void main(String[] args) {
        //public Scanner(InputStream source)
        Scanner sc = new Scanner(System.in);
        //接收整数
//        if(sc.hasNextInt()){
//            int i = sc.nextInt();
//            System.out.println(i);
//        }else {
//            System.out.println("您输入的内容不是一个整数");
//        }

        System.out.println("请输入一个整数:");
        int i = sc.nextInt();
        System.out.println(i+"===========");
        System.out.println("请输入您要输入的字符串:");
        String s = sc.next();
//        String s = sc.nextLine(); // 可以接收换行符
        System.out.println(s+"-----------");
   }
}

 

 三、修饰符
类及其成员的修饰符组合:
权限修饰符:public protected 默认的 private
静态修饰符:static
抽象修饰符:abstract
最终修饰符:final

类:
权限修饰符:public 默认的
抽象修饰符:abstract
最终修饰符:final
成员变量:
权限修饰符:public protected 默认的 private
静态修饰符:static
最终修饰符:final
构造方法:
权限修饰符:public protected 默认的 private
成员方法:
权限修饰符:public protected 默认的 private
静态修饰符:static
抽象修饰符:abstract
最终修饰符:final

常见的修饰符组合:
public static
public static final
public abstract