自学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

}

}  

posted @ 2020-09-07 19:42  master_hxh  阅读(93)  评论(0编辑  收藏  举报