java基础类(object类,scanner类)

    xiaoxiao2022-07-14  168

    Object类

    -概述:类层次结构的根类,所有类都直接或间接的继承该类

    -方法:

             -1.public int hashCode();

                 a:返回该对象的哈希码值,默认情况,根据对象的地址来计算

                 b:不同对象的哈希码值一般不同,但同一对象的哈希码值一定相

    public static void main(String[] args) { // TODO Auto-generated method stub Object o1 = new Object(); student s = new student(); teacher t = new teacher(); System.out.println(o1.hashCode()); System.out.println(s.hashCode()); System.out.println(t.hashCode()); } } class student{ } class teacher{ }

            -2.public final Class getClass();

                a:返回此object的运行时类

                b:可以通过Class类中的一个方法,来获取对象真实类的全名称

                    public String getName();

    public static void main(String[] args) { // TODO Auto-generated method stub student s1 = new student(); Class clazz = s1.getClass(); System.out.println(clazz); } } class student{ }

     

            -3.public String toString();              返回该对象的字符串表示

                a:默认public String toString() {                        return getClass().getName() + "@" + Integer.toHexString(hashCode());                 }

                     左边:类名

                     中间:@

                      右边:hashCode值的16进制表示

                 b:toString方法的作用:更方便的显示属性值

                     getXxxx方法的作用:为了获取值,也可以赋值或实现其他操作

                 c:如果直接打印对象的引用,会默认调用toString方法

                 d:由于默认情况下的数据对我们来说没有意义,一般建议重写该方法由于默认情况下的数据对我们来说没有意义,一般建 议重写该方法

    public static void main(String[] args) { // TODO Auto-generated method stub student s1 = new student(); System.out.println(s1.toString()); //System.out.println(s1); //直接打印对象引用,默认调用toString方法 } /*@Override public String toString() { return "demo6 []"; } */ } class student{ }

             - 4.public boolean equals(Object obj) {             //指示某个对象是否与此对象"相等",默认比较两个对象的地址值

                        return (this == obj);               }

    public static void main(String[] args) { // TODO Auto-generated method stub student s1 = new student("张三",23); student s2 = new student("李四",24); student s3 = new student("张三",23); System.out.println(s1.equals(s2)); System.out.println(s1.equals(s3)); } } class student{ String name; int age; public student(String name, int age) { super(); this.name = name; this.age = age; } public student() { super(); } public boolean equals(Object obj){ //重写父类(object)的equals方法 //若使Object obj = s2;=>Object obj = new student();则意味着父类对象指向子类对象,则此时需要向下转型 student s = (student)obj; return this.name.equals(s.name)&&this.age == s.age; } }

    一般我们在使用equals方法需要重写,比较两个对象的属性值是否相等

    -equals和==号的异同

    -共同点:都可以做比较,返回值都是boolean

    -区别:

             -1.==是一个比较运算符号,既可以比较基本数据类型,也可以比较引用数据类型,基本数据类型比较的是值,引用数据类型比较 的是地址值

             -2.equals方法只能比较引用数据类型,equals方法在没重写之前,比较的使地址值,底层依赖的是==号,但是比较地址值没有意义,所以一般需要重写

    42.Scanner类的概述和方法介绍

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

    - Scanner的构造方法原理:           * Scanner(InputStream source)           * System类下有一个静态的字段:           * public static final InputStream in; 标准的输入流,对应着键盘录入。

    -方法:

              -hasNextXxx();判断是否还有下一个输入项,其中Xxx可以是Int,Double等。如果需要判断是否包含下一个字符串,则可以省略Xxx

              -nextXxx();获取下一个输入项。Xxx的含义和上个方法中的Xxx相同,默认情况下,Scanner使用空格,回车等作为分隔符

    public static void main(String[] args) { Scanner sc = new Scanner(System.in); if(sc.hasNextInt()){ int i = sc.nextInt(); System.out.println(i); }else{ System.out.println("输入类型不匹配"); } }

    -获取数据出现的小问题及解决方法

    -两个常用的方法:

                             * public int nextInt():获取一个int类型的值                          * public String nextLine():获取一个String类型的值

    public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入第一个数:"); int i = sc.nextInt(); System.out.println("请输入字符串:"); String str = sc.nextLine(); System.out.println("i = "+i+", str = "+str); }

    -原因:当使用nextInt()方法录入整数i时,我们录入的不仅有10,还有\r\n(回车键),而nextInt()方法只获取10就结束了

                nextLine()方法可以录入任意类型的数据,它通过(\r\n)来判断是否结束一行,所以此时str为空

    -解决方案:

                     1.创建两次Scanner对象,但会在堆创建空间,造成空间浪费

                     2.都使用nextLine()来获取数据,再将获取到的字符串格式数据转换成所需要的类型即可

    最新回复(0)