Java基础笔记 day7

本文介绍了Java编程中的ASCII码表示、Random类生成随机数、Scanner类获取用户输入以及String类中的equals方法,包括其实现原理和使用示例。
摘要由CSDN通过智能技术生成

 一、ASCII码

ASCII码 A 65 a 92  A - a=32
字符与十进制运算 底层二进制运算后转换为10进制
package com.clouds.demo07_Api;

public class ASCII {
    public static void main(String[] args) {
        //ASCII码 A 65 a 92  A - a=32
        //字符与十进制运算 底层二进制运算后转换为10进制
        char a = 'a';//97
        char A = 'A';//65
        char zero='0';
        System.out.println(a + 1);
        System.out.println(A - 10);
        System.out.println(zero);
    }
}

运行结果 

98
55
0

二、Random类

 随机数范围:不带参【0-1】  nextDouble() 带参【0---(n-1)】 nextInt(n)

//Random类
//随机数 nextDouble() 【0-1】 nextInt(n)【0---(n-1)】
//ctrl+左键查看实现方式
Random random =new Random();
double num1=random.nextDouble()*10+1;
//输出random地址
System.out.println(random);

System.out.println("随机数为"+num1);
double num2=random.nextInt(100);
System.out.println("随机数为"+num2);

运行结果 

java.util.Random@677327b6
随机数为9.241376687432245
随机数为86.0

三、Scanner类

导包:import java.util.Scanner;
        //输入Scanner类
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入:");
        //ctrl+alt+v获取返回值类型
        String str = scanner.next();
        System.out.println("输入的是"+str);

运行结果: 

请输入:123
输入的是123

四、String类中的equals方法 

String类中的equals方法是重写Object的equals方法 boolean类型 比较字符串是否相等
equals前面的参数不能为空
扩展:==是比较两个对象的地址是否相同

实现自定义对象类的equals方法来比较对象是否相同需要重写equals方法

        String str1="luojun";
        String str2="luojun";
        String str3="l";
        //String类中的equals方法是重写Object的equals方法 boolean类型 比较字符串是否相等
        //equals前面的参数不能为空
        System.out.println(str1.equals(str2));
        /*Object 父类中equals 比较两个对象的内存地址是否相同

        public boolean equals(Object obj) {
            return (this == obj);
        }*/
        //实现自定义对象类的equals方法来比较对象是否相同需要重写equals方法
        Person p1 = new Person("joker luojun",11);
        Person p2 = new Person("joker luojun",11);
        //==是比较两个对象的地址是否相同
        System.out.println(p1==p2);
        System.out.println(p1.equals(p2));
    }
Object 父类中equals 比较两个对象的内存地址是否相同,jdk8代码如下
public boolean equals(Object obj) {
    return (this == obj);
}

String 对 Object 的equals重写,jdk8代码如下

 public boolean equals(Object anObject) {
            private final char value[];
            //比较两个字符串的对象引用地址
            if (this == anObject) {
                return true;
            }
            //比较该类型是否为String类型的自身类、父类、Object类
            if (anObject instanceof String) {
            //将该类型强转为String类型
                String anotherString = (String)anObject;
                int n = value.length;
                //先比较字符串的长度是否相同
                if (n == anotherString.value.length) {
                    char v1[] = value;
                    char v2[] = anotherString.value;
                    int i = 0;
                    //通过比较数组中存放的每一个字符的对比来比较是否相同
                    while (n-- != 0) {
                        if (v1[i] != v2[i])
                            return false;
                        i++;
                    }
                    return true;
                }
            }
            return false;
        }

static class  Person{
        String name;
        int age;

        public Person(String name, int age) {
            this.name = name;
            this.age = age;
        }
        //实现自定义对象类的equals方法来比较对象是否相同需要重写equals方法
        public boolean equals(Object obj) {

            //比较两个对象的地址
            if(this == obj){
                return true;
            }
            //比较两个对象的类型
            if(obj==null || this.getClass() != obj.getClass()){
                return false;
            }
            //比较两个对象的属性值
            Person p2 = (Person) obj;
            return this.age==p2.age&& this.name.equals(p2.name);
        }
       /* public boolean equals(Object anObject) {
            private final char value[];
            //比较两个字符串的对象引用地址
            if (this == anObject) {
                return true;
            }
            //比较该类型是否为String类型的自身类、父类、Object类
            if (anObject instanceof String) {
            //将该类型强转为String类型
                String anotherString = (String)anObject;
                int n = value.length;
                //先比较字符串的长度是否相同
                if (n == anotherString.value.length) {
                    char v1[] = value;
                    char v2[] = anotherString.value;
                    int i = 0;
                    //通过比较数组中存放的每一个字符的对比来比较是否相同
                    while (n-- != 0) {
                        if (v1[i] != v2[i])
                            return false;
                        i++;
                    }
                    return true;
                }
            }
            return false;
        }*/
    }

 运行结果:

true
false
true

五、完整代码及运行结果

package com.clouds.demo07_Api;

//API
//java.lang包不用导包
import java.util.Random;
import java.util.Scanner;

public class demo01_API {
    public static void main(String[] args) {
        //Random类
        //随机数 nextDouble() 【0-1】 nextInt(n)【0---(n-1)】
        //ctrl+左键查看实现方式
        Random random =new Random();
        double num1=random.nextDouble()*10+1;
        //输出random地址
        System.out.println(random);

        System.out.println("随机数为"+num1);
        double num2=random.nextInt(100);
        System.out.println("随机数为"+num2);

       //输入Scanner类
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入:");
        //ctrl+alt+v获取返回值类型
        String str = scanner.next();
        System.out.println("输入的是"+str);

        String str1="luojun";
        String str2="luojun";
        String str3="l";
        //String类中的equals方法是重写Object的equals方法 boolean类型 比较字符串是否相等
        //equals前面的参数不能为空
        System.out.println(str1.equals(str2));
        /*Object 父类中equals 比较两个对象的内存地址是否相同

        public boolean equals(Object obj) {
            return (this == obj);
        }*/
        //实现自定义对象类的equals方法来比较对象是否相同需要重写equals方法
        Person p1 = new Person("joker luojun",11);
        Person p2 = new Person("joker luojun",11);
        //==是比较两个对象的地址是否相同
        System.out.println(p1==p2);
        System.out.println(p1.equals(p2));
    }

    static class  Person{
        String name;
        int age;

        public Person(String name, int age) {
            this.name = name;
            this.age = age;
        }
        //实现自定义对象类的equals方法来比较对象是否相同需要重写equals方法
        public boolean equals(Object obj) {

            //比较两个对象的地址
            if(this == obj){
                return true;
            }
            //比较两个对象的类型
            if(obj==null || this.getClass() != obj.getClass()){
                return false;
            }
            //比较两个对象的属性值
            Person p2 = (Person) obj;
            return this.age==p2.age&& this.name.equals(p2.name);
        }
       /* public boolean equals(Object anObject) {
            private final char value[];
            //比较两个字符串的对象引用地址
            if (this == anObject) {
                return true;
            }
            //比较该类型是否为String类型的自身类、父类、Object类
            if (anObject instanceof String) {
            //将该类型强转为String类型
                String anotherString = (String)anObject;
                int n = value.length;
                //先比较字符串的长度是否相同
                if (n == anotherString.value.length) {
                    char v1[] = value;
                    char v2[] = anotherString.value;
                    int i = 0;
                    //通过比较数组中存放的每一个字符的对比来比较是否相同
                    while (n-- != 0) {
                        if (v1[i] != v2[i])
                            return false;
                        i++;
                    }
                    return true;
                }
            }
            return false;
        }*/
    }

}

 运行结果

java.util.Random@677327b6
随机数为9.241376687432245
随机数为86.0
请输入:123
输入的是123
true
false
true

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值