首页 > 其他分享 >常用类--Scanner,object

常用类--Scanner,object

时间:2024-09-28 19:46:45浏览次数:7  
标签:Scanner -- age object System println out s1 name

Scanner

`  Scanner: 一个简单的文本扫描器,可以使用正则表达式解析原始类型和字符串    
   构造方法:
   Scanner(InputStream source) 构造一个新的 Scanner ,产生从指定输入流扫描的值。`
获取一个数字:(无法输出空格,只能输出空格前的数字)
        int i = sc.nextInt();
        System.out.println(i);

获取一个字符串:(无法输出空格,只能输出空格前的字符串)
        String s1 = sc.next();
        System.out.println(s1);

获取字符串允许有空格:
        String s1 = sc.nextLine(); //可以接收换行等空白特殊字符
        System.out.println(s1);
获取数字的时候,我们是不是只能够输入数字呢?
会报错但是使用hasNextXxx()判断下一个输入的内容是否是指定类型
        int i = sc.nextInt();
        System.out.println(i);
        if(sc.hasNextInt()){
            int i = sc.nextInt();
            System.out.println(i);
        }else {
            System.out.println("您输入的内容不是一个int类型的值!");
        }

object

java中所有的类默认都有一个共同的父类:Object

  打印一个对象名,默认调用的是类中的toString()方法
           若我们自己没有编写该方法的话,默认使用父类Object类中的toString()
           而父类中默认的toString()打印是一个地址值
           我们今后打印一个对象名的时候,输出是地址值意义不大,我们今后更多的是想看一个对象中成员变量值的情况
           要想实现上面的输出成员变量值的话,重写toString()方法,这样调用的就是自己重写后的toString()
           自动生成即可

通过tostring()将其重写本来返回的是地址值比较重写成数值比较

点击查看代码
import java.util.Objects;

class Student{
    String name;
    int age;

    Student(){


    }
    Student(String name,int age){
        this.age = age;
        this.name = name;
    }
    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

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

    @Override
    public int hashCode() {
        return Objects.hash(name, age);
    }
}
public class ToStringDemo1 {
    public static void main(String[] args) {
        Student s1 = new Student("王骏",21);
        Student s2 = new Student("王骏", 21);
        System.out.println(s1);
        System.out.println(s1.equals(s2));


    }
}

克隆

    protected Object clone()
    int hashCode() 返回对象的哈希码值。 可以看作地址值的另外一种表现形式
    java中并不是所有的类都可以被克隆,只有授权的类的对象才可以使用克隆方法
    我们通过阅读帮助文档后发现,若一个对象的类没有实现Cloneable接口的话,是不可以调用clone方法的
    然后,我们再去看Cloneable接口的时候,发现该接口中没有任何抽象方法,今后像这样的接口称之为标记接口

    克隆在IT行业中,称之为拷贝。
    拷贝分为两种:
        1、浅拷贝
        2、深拷贝
    面试题:Object类中的clone是浅拷贝还是深拷贝。答:是浅拷贝
点击查看代码
class Demo1 {
    int a = 10;


}

class Student3 implements Cloneable {
    String name;
    int age;
    Demo1 demo1;

    public Student3() {
    }

    public Student3(String name, int age, Demo1 demo1) {
        this.name = name;
        this.age = age;
        this.demo1 = demo1;
    }

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

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

public class ObjectDemo4 {
    public static void main(String[] args) throws Exception {
        Demo1 d1 = new Demo1();


        Student3 s1 = new Student3("刘亦菲", 36, d1);
        System.out.println("s1: " + s1);
        System.out.println(s1.hashCode());
//        Student3 s2 = new Student3("章若楠", 21);

        System.out.println("===========================================");
        //首先,如果此对象的类不实现接口Cloneable ,则抛出CloneNotSupportedException 。
//        Object o1 = s1.clone();
        Object o1 = s1.clone();
        System.out.println("o1: " + o1);
        System.out.println(o1.hashCode());


    }
}

标签:Scanner,--,age,object,System,println,out,s1,name
From: https://www.cnblogs.com/wangxiaojian-lina/p/18438308

相关文章

  • INA865-2024V2 Financial Risk Management
    FinancialRiskManagement(FINA865-2024V2)GroupProjectDueat 23:59PM,Wednesday,02 October2024Yourassignedindexwillbeemailedtoyou in due course.TASKS: SubmitExcelSheetto Canvas.Preparationsteps: [2marks]Fortheassignedindex (v......
  • Flex布局基础
    Flex布局参考地址:https://www.w3school.com.cn/css/css3_flexbox.asp#flex-direction一、父项目​ 注意后面所提及的行是根据设置x还是y轴为主轴而定的,如果x轴是主轴那么行就是横着的,反之如果是y那么行就是竖着的。父项目所涉及的属性flex-direction:设置主轴的方向jus......
  • Oracle如何根据SQL_TEXT生成SQL_ID
    Oracle如何根据SQL_TEXT生成SQL_IDphp中文网发布:2016-06-0620:08:48原创1175人浏览过 本文纯属八卦,基本没有任何实用价值。Oracle总是都会通过SQL_ID来标志一个唯一的SQL。SQL_ID与SQL_TEXT一一对应。如果两个SQL文本有任何不同,包括空格等任何不可见字符......
  • JavaScript深拷贝与浅拷贝
    由于对象采用的是引用赋值。所以直接用“=”,修改属性的时候也会将原来的变量改变掉。因此,就有了浅拷贝与深拷贝用{...obj}和object.assign表示浅拷贝,其只拷贝外围对象的一层,而不会拷贝多层。 方法二:使用Object.assign  深拷贝的实现其一是通过递归实现拷贝。其二lod......
  • #C. 黑暗城堡
    #C.黑暗城堡题意设D[i]为第i号房间与第1号房间的最短路径长度;S[i]为实际修建的树形城堡中第i号房间与第1号房间的路径长度要求对于所有整数i(1<=i<=N),有S[i]=D[i]成立的方案数分析跑一遍最短路,再\(N^2\)暴力每两个点之间的边如果\(dis(1,j)=dis(1......
  • Python 潮流周刊#71:PyPI 应该摆脱掉它的赞助依赖(摘要)
    本周刊由Python猫出品,精心筛选国内外的250+信息源,为你挑选最值得分享的文章、教程、开源项目、软件工具、播客和视频、热门话题等内容。愿景:帮助所有读者精进Python技术,并增长职业和副业的收入。分享了12篇文章,12个开源项目,1则音视频,全文2000字。以下是本期摘要:......
  • 第3周 3.2 数据类型
    2.2基本数据类型展开:JAVA数据类型思维导图graphLRA(数据类型)-->B1(基本数据类型)A-->B2(引用数据类型)B1-->C1(整数类型)B1-->C2(字符类型)B1-->C3(布尔类型)B1-->C4(浮点类型)C1-->D1(byte字节型)C1-->D2(short短整型)C1-->D3(int整型)C1-->......
  • 结对项目
    这个作业属于哪个课程计科22级12班这个作业要求在哪里结对项目这个作业的目标实现一个自动生成小学四则运算题目的命令行程序成员梁晓君(3222004682)阿丽娅·阿力木(3222004678)github地址作业github链接PSP表格PSP2.1PersonalSoftwareProcessStag......
  • 2024.9.28 计划
    项目学习ROS第二章学完背包问题求方案数背包问题求具体方案总结ROS第二章总结三种基本的通信方式都解决了。步骤和框架参照上两篇和ubantu中的demo框架即可。前两种通信方式的比较:发布-订阅模式服务器通信通信模式发布/订阅请求/响应同步性异步同......
  • 结对项目
    这个作业属于哪个课程https://edu.cnblogs.com/campus/gdgy/CSGrade22-34这个作业要求在哪里https://edu.cnblogs.com/campus/gdgy/CSGrade22-34/homework/13230这个作业的目标实现一个自动生成小学四则运算题目的命令行程序github地址:https://github.com/zjm72......