zoukankan      html  css  js  c++  java
  • 自学Java基础知识第十一天

    day11

    1. Object类型

    1.1 equals方法

    1. equals : 方法功能用于判断两个对象是否相等, 比较的两个对象分别是方法的调用者对象与参数对象obj
    1. equals方法比较:

    1) Object源代码中 : 比较的是两个对象的内存地址是否相等

    2) 实际开发中, 通常不进行对象的内存地址比较, 比较对象中的成员变量比较有意义, 需要子类重写父类中的equals方法功能, 使用快捷键 alt + shift + s , 选择equals方法, 重写之后就是比较对象中的成员变量

       举例 : 全班有50个学生, 录入学生的信息, 每一个学生具有姓名和年龄属性, 录入信息时, 需要去掉重复的学生信息, 如果两个学生 : 姓名和年龄都相同,认为这个同一个人, 需要去重复

          

    代码

    package com.ujiuye.object;

    // 父类就是Object

    public class Person {

    private String name;

    private int age;

    public String getName() {

    return name;

    }

    public void setName(String name) {

    this.name = name;

    }

    public int getAge() {

    return age;

    }

    public void setAge(int age) {

    this.age = age;

    }

    public Person(String name, int age) {

    super();

    this.name = name;

    this.age = age;

    }

    public Person() {

    super();

    }

    @Override

    public boolean equals(Object obj) {

    if (this == obj)

    return true;

    if (obj == null)

    return false;

    if (getClass() != obj.getClass())

    return false;

    Person other = (Person) 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;

    }

    }

    package com.ujiuye.object;

    public class Test {

    public static void main(String[] args) {

    /*Person p = new Person();

    Person p1 = new Person();

     * public boolean equals(Object obj) {

             return (this == obj); // p == obj

            }

         // this : 哪个对象调用了带有this的方法, this关键字表示哪个对象

     *

     *

    boolean boo = p.equals(p1);

    System.out.println(boo);// false

    */

    Person pp1 = new Person("张三",20);

    Person pp2 = new Person("张三",21);

    System.out.println(pp1.equals(pp2));// true

    }

    }

    1.2 ==equals的使用比较

    1. == : 比较运算符

    1) 比较基本数据类型 : 比较的是数据对应的数值是否相等  4 == 3

    2) 比较引用数据类型 : 比较的是两个引用数据类型的地址是否相等

    1. equals : 是方法功能

    1) 不能比较基本数据类型 : 因为基本数据类型无法调用任何方法功能

    2) equals可以比较引用数据类型:

       a : Object源代码比较的是两个对象地址是否相等

       b : 重写之后的equals方法功能, 比较的是两个对象中,成员变量的是是否相等

     

    2. Scanner类型

    1. Scanner类型 : 表示扫描器, 将设备上输入的基本数据类型和字符串进行扫描, 来自于java.util包中
    1. Scanner类型构造方法:

       Scanner(InputStream source) : InputStream表示输入流资源, System.in 系统的标准输入就是一个输入流资源, 默认关联到通过键盘录入

    1. Scanner类型中的常用方法功能: 扫描基本数据类型

    1) nextByte() : 接收通过键盘录入字节整数, 返回值结果byte类型,范围-128---127

    2) nextShort():

    3) nextInt():

    4) nextLong():

    5) nextFloat():

    6) nextDouble():

    7) nextBoolean():

      注意 : 通过Scanner类型录入基本数据类型的方法中,缺少nextChar(), 因为通过键盘录入字符串功能替代输入字符

    1. Scanner类型扫描字符串:

    1) next() : 扫描通过键盘录入的字符串, 返回值类型String类型, 可以通过空格区分多个数据,也通过回车换行区分多个数据

    2) nextLine() : 扫描通过键盘录入的字符串,通过回车换行区分多个数据, 这个方法使用时, 如果前面的数据有回车换行, 那么nextLine会获取到这次换行, 以为数据输入结束

    代码

    package com.ujiuye.scanner;

    import java.util.Scanner;

    public class DemoScanner {

    public static void main(String[] args) {

    Scanner sc = new Scanner(System.in);

    /*System.out.println("请输入一个字节数据:");

    byte b = sc.nextByte();

    System.out.println(b);*/

    // 1. 通过键盘录入字符串

    System.out.println("请输入一个字符串:");

    String s = sc.next();

    String s1 = sc.next();

    System.out.println(s+"---" + s1);

    // 2.

    System.out.println("请继续输入字符串:");

    String s2 = sc.next();

    String s3 = sc.next();

    System.out.print(s2 + "++" + s3);

    System.out.println("--------------");

    // 3. nextLine();

    String s4 = sc.nextLine();

    String s5 = sc.nextLine();

    String s6 = sc.nextLine();

    System.out.println(s4 + "ppppp" + s5);

    }

    }

    3. Random类型(扩展)

    1. Random类型 : 来自于java.util, 表示生成随机数
    2. Random类型中的常用方法功能:

    1) nextInt(int n) : 表示随机生成一个整数,整数范围[0,n), 实际数据范围0-(n-1)

    2) nextDouble() : 表示随机生成一个浮点类型, 范围[0.0 , 1.0) , 实际数据范围, 包括0.0,不包括1.0

    代码

    package com.ujiuye.scanner;

    import java.util.Random;

    public class DemoRandom {

    public static void main(String[] args) {

    // 1. 创建出一个Random类型对象

    Random ran = new Random();

    // 2. 需求: 1-100之间的任意一个随机数

    int number = ran.nextInt(100)+1;// (0-99) +1 ---> 1-100

    System.out.println(number);

    int num = ran.nextInt(3);//0-2

    System.out.println(num);

    // 3. 生成一个随机浮点类型

    double d = ran.nextDouble();

    System.out.println(d);

    }

    }

    4. String类型

    4.1 String类型概述

    1. String类型, 来自于java.lang, 用于表示字符串类型
    2. java, 所有的字符串常量,都是String类型的对象(举例 “abc”, “hello”)
    3. 字符串称为常量, 字符串表示值定义之后不可改变; String类型底层将一个字符串以字符数组的形式进行存储, private final char value[]; 在整个String类型中, 没有任何方法功能修改char类型数组value , 既然不能修改,因此称字符串为常量
    4. 字符串常量, 存储在常量池中, 在方法区中

       

     

    4.2 String类型构造方法

    1. String() : 表示创建出一个空字符串序列 “”
    2. String(String s) : 表示创建出一个与参数字符串s序列相同的字符串
    3. String(byte[] b) : 表示将参数字节数组b中的数据参数平台默认编码表, 将字节数据转换成字符, 将字符进行拼接, 转换成一个字符串
    4. String(byte[] b, int beginIndex,int length): 主要是将字节数组的一部分转换成字符串

    1) 从字节数组bbeginIndex索引位置开始

    2) length : 截取length个字节(表示个数)

    1. String(char[] ch) : 表示将参数ch字符数组中的内容转换成一个字符串
    2. String(char[] ch, int beginIndex,int length) : 主要是将字符数组的一部分转换成字符串

    3) 从字符数组chbeginIndex索引位置开始

    4) length : 截取length个字符(表示个数)

    代码

    package com.ujiuye.string;

    public class Demo02_String类型构造 {

    public static void main(String[] args) {

    // 1. String()

    String s = new String();

    System.out.println(s + "-----------");// "" 空字符串序列

    String s1 = "  ";

    System.out.println(s1 + "---------");

    // 2. String(String s)

    // s2 对象创建过程 : 需要在内存中创建出两块空间

    // 1) new 关键字在堆内存中开辟空间地址, 赋值给s2对象

    // 2) "abc" 需要在常量池中开辟空间,假设0x001

    String s2 = new String("abc");

    System.out.println(s2);// abc

    // 3) 重复使用了常量池空间0x001

    String s3 = "abc";

    System.out.println(s2 == s3);// false

    // 3. String(byte[] b)

    byte[] b = {97,98,99,100};// a

    String s4 = new String(b);

    System.out.println(s4);// abcd

    // 4. String(byte[] b, int index, int length)

    String s5 = new String(b, 1, 2);

    System.out.println(s5);// bc

    // 5. String(char[] ch)

    char[] ch = {'a','A','1','?',''};

    String s6 = new String(ch);

    System.out.println(s6);// aA1?

    // 6. String(char[] ch, int beginIndex,int length)

    // 从字符数组chbeginIndex索引位置开始

    // length : 截取length个字符(表示个数)

    String s7 = new String(ch,2,3);

    System.out.println(s7);// 1?

    }

    }

    4.3 String类型的判断功能

    1. equals(Object obj) : String类型从父类Object继承而来,重写方法功能, 重写之后比较的就是方法调用字符串与参数对象obj字符串内容是否完全相等, 返回值类型boolean
    2. equalsIgnoreCase(String anotherString) : 方法调用字符串与参数字符串内容是否相等, 但是忽略大小写
    3. startsWith(String prefix): 判断方法调用字符串是否以参数字符串为前缀(开头)
    4. endsWith(String prefix): 判断方法调用字符串是否以参数字符串为后缀(结尾)
    5. contains(String s) : 判断方法调用字符串是否完全包含参数字符串s, 完全包含返回true, 否则返回false
    6. isEmpty() : 验证方法调用字符串是否为空字符串, “”就是一个空字符串, 如果是空字符串返回true, 否则返回false

    代码

    package com.ujiuye.string;

    public class Demo03_String类型判断功能 {

    public static void main(String[] args) {

    // 1. equals()

    String s1 = "abc";

    String s2 = "abc";

    String s3 = new String("abc");

    String s4 = "abc ";

    String s5 = "Abc";

    System.out.println(s1.equals(s2));// true

    System.out.println(s1.equals(s3));// true

    System.out.println(s1.equals(s4));// false

    System.out.println(s1.equals(s5));// false

    System.out.println("------------------");

    // 2. equalsIgnoreCase(String s) : 用于区分字母大小写

    // 可以在验证码比较中进行使用

    System.out.println(s1.equalsIgnoreCase(s5));// true

    String s6 = "1";

    String s7 = "";

    String s8 = "";

    System.out.println(s6.equalsIgnoreCase(s7));// false

    System.out.println(s7.equalsIgnoreCase(s8));// false

    System.out.println("+++++++++++++++");

    // 3. 验证人姓名 : 判断是否姓张

    String name = "张三";

    boolean boo = name.startsWith("");

    System.out.println(boo);// true

    System.out.println(name.startsWith(""));// false

    // 4. 验证文件是不是txt文件

    String file = "abc.txt";

                  //   txt

    boolean boo1 = file.endsWith("txt");

    System.out.println(boo1);// true

    System.out.println("??????????????????");

    // 5. contains(String s)

    String s9 = "123hello";

    String s10 = "33h";

    System.out.println(s9.contains(s10));// false

    System.out.println(s9.contains("h3"));// false

    System.out.println(s9.contains("el"));// true

    System.out.println("++++++++++++++");

    // 6.isEmpty() : 验证方法调用字符串是否为空字符串, “”就是一个空字符串, 如果是空字符串返回true, 否则返回false

    System.out.println("".isEmpty());// true

    System.out.println(" ".isEmpty());// false

    }

    }

    4.4 String类获取功能

    1. length() : 获取到字符串中的字符个数, 如果字符串length() 结果为0, 那么这个字符串调用isEmpty()方法功能结果为true
    2. charAt(int index) : 将字符串中index索引位置对应的字符获取到, 返回值类型char类型
    3. substring(int beginIndex) : 将字符串从beginIndex索引位置开始截取, 一直截取到剩下的全部,返回新的字符串
    4. substring(int beginIndex,int endIndex) : 将字符串从beginIndex索引开始, endIndex-1索引位之间的字符序列获取到, 截取出的新字符串,返回新的字符串

    注意 : Java给开发人员提供源代码中, 涉及到两个索引位操作的,一般包含开始索引而不包含结束索引

    1. indexOf(String str) : 获取到参数str在方法调用字符串中第一次出现的索引位置, 如果找到了返回 >= 0 索引值, 如果没有找到,返回值负数
    2. indexOf(String str, int beginIndex) : 从参数beginIndex索引位置开始, 向后寻找str在方法调用字符串中第一次出现的索引位置

    注意 : 结果表示从beginIndex索引位置开始向后寻找, 找到了, 从找到的字符, 从头开始计算出现的索引位置

    1. valueOf(Object obj) : 静态方法, 表示将其他数据类型转换成字符串类型

    代码

    package com.ujiuye.string;

    public class Demo04_String类获取功能 {

    public static void main(String[] args) {

    // 1. length() :

            String s1 = "";

            System.out.println(s1.length());// 0

            

            String s2 = "123  67yuit";

            System.out.println(s2.length());// 11

            

            // 2. charAt(int index)

            char ch = s2.charAt(8);

            System.out.println(ch);// u

            

            // 3. 字符串遍历: 获取到字符串中的每一个字符

            for(int index = 0; index < s2.length(); index++) {

             char ch1 = s2.charAt(index);

             System.out.print(ch1 + "---");

            }

            

            System.out.println();

            

            // 4. substring(int index):

            String s3 = "helloworld";

            String newS3 = s3.substring(4);//oworld

            System.out.println(newS3);

            

            // substring(int beginIndex, int endIndex):

           String s4 = s3.substring(2, 6);//llow

           System.out.println(s4);

           

           // 5.indexOf(String str) : 获取到参数str在方法调用字符串中第一次出现的索引位置, 如果找到了返回 >= 0 索引值, 如果没有找到,返回值负数

           int index1 = s3.indexOf("o");

           System.out.println(index1);// 4

           

           System.out.println(s3.indexOf("oo"));// -1

           

           // 6. indexOf(String str, int index);

           int  index2 = s3.indexOf("o", 5);

           System.out.println(index2);// 6

           

           // 7. valueOf

           String boo = String.valueOf(true);

           System.out.println(boo + 123);// true123

    }

    }

    4.5 String类型转换功能

    1. getBytes() : 将方法调用字符串通过平台默认编码集, 字符转换成字节数据, 返回一个字节数组
    2. toCharArray() : 将方法调用字符串中的字符序列,转换成一个字符数组
    3. toUpperCase() : 将方法调用字符串中的所有字母, 变成大写字母, 返回全新字符串
    4. toLowerCase() : 将方法调用字符串中的所有字母, 变成小写字母, 返回全新字符串

    代码

    package com.ujiuye.string;

    import java.util.Arrays;

    public class Demo05_String类转换功能 {

       public static void main(String[] args) {

       // 1.getBytes()

       String s = "1234";

       byte[] b = s.getBytes();

       System.out.println(Arrays.toString(b));// [49, 50, 51, 52]

       

       // 2.toCharArray()

       String s1 = "hello在家?>>>";

       char[] ch = s1.toCharArray();

       System.out.println(Arrays.toString(ch));//[h, e, l, l, o, , , ?, >, >, >]

       

       // 3.toUpperCase() : 将方法调用字符串中的所有字母, 变成大写字母, 返回全新字符串

       String s2 = s1.toUpperCase();

       System.out.println(s2);// HELLO在家?>>>

       

       String s3 = "HelloWorld";

       // 4.toLowerCase() : 将方法调用字符串中的所有字母, 变成小写字母, 返回全新字符串

       String s4 = s3.toLowerCase();

       System.out.println(s4);// helloworld   

       }

    }

    4.6 String类型其他功能

    1. replace(String old, String newString): 将字符串中所有的old字符串部分替换成newString, 返回替换后的新字符串
    2. trim() : 去空格, 将字符串的前后的空格,tab缩进去除掉, 但是字符串中的空格无法去除, 返回一个去除空格后的新字符串

    代码

    package com.ujiuye.string;

    public class Demo06_String类其他功能 {

    public static void main(String[] args) {

            String s = "HelloWorldooo";

            String sNew = s.replace("o", "*");

            System.out.println(sNew);// Hell*W*rld***

            

            // trim()

            String name = " 张三       ";

            String rightName = "张三";

            

            String newName = name.trim();

            System.out.println(newName);

            System.out.println(newName.equals(rightName));// true

            

            

            String s1 = "   123  abc 你好 *    ";

            String s1New = s1.trim();

            System.out.println(s1New);

    }

    }

    5. Math(了解)

    1. Math: 来自于java.lang, 用于封装常用的数学运算
    2. Math类的成员常量:

     public static final double E : 自然对数

     public static final double PI : 表示圆周率, 3.14...

    1. Math类中构造方法,私有化,证明不能创建Math对象
    2. Math类中所有方法功能都是static静态, 类名.直接调用

      常用方法功能:

    1) abs(double d) : 获取到参数的绝对值, 将绝对值结果进行返回

    2) ceil(double d) : 将参数d进行向上取整, 返回值类型double

    3) floor(double d) : 将参数d进行向下取整, 返回值类型double

    4) round(double d) : 根据参数d第一位小数值,决定向上还是向下取整, 规则 : 四舍五入

    5) max(int a, int b): 获取出两个数值中的较大值, 将较大值进行返回

    6) min(int a, int b) : 获取出两个数值中的较小值, 将较小值进行返回

    代码

    package com.ujiuye.math;

    public class Demo01_Math {

    public static void main(String[] args) {

            // 1. Math类中静态常量

    System.out.println(Math.E);// 2.718281828459045

    System.out.println(Math.PI);// 3.141592653589793

    // 常用方法

    double d = Math.abs(-3.3);

    System.out.println(d);// 3.3

    double d1 = Math.ceil(3.01);

    System.out.println(d1);// 4.0

    double d2 = Math.floor(3.01);

    System.out.println(d2);// 3.0

    long l = Math.round(4.56);

    System.out.println(l);// 5

    long l2 = Math.round(4.46);

    System.out.println(l2);// 4

    long l3 = Math.round(4.50);

    System.out.println(l3);// 5

    int max = Math.max(3, 3);

    System.out.println(max);// 3

    int min = Math.min(6, 9);

    System.out.println(min);// 6

    }

    }  

  • 相关阅读:
    entity framework 缓存干扰的数据不一致问题
    async中await是干啥的,用不用有什么区别?
    await使用中的阻塞和并发
    Quartz.Net—MisFire
    Quartz.net misfire实践
    Quartz.NET 前一次任务未执行完成时不触发下次的解决方法
    Omni(USDT)钱包安装(ubuntu)
    USDT(omniCore)测试环境搭建
    WaitAll 和 WhenAll 的使用及区别
    C# 之 FileSystemWatcher事件多次触发的解决方法
  • 原文地址:https://www.cnblogs.com/masterhxh/p/13628739.html
Copyright © 2011-2022 走看看