小白学JAVA之十四——常用类

小白学JAVA之十四——常用类

一. 常用包

  • java.lang包 - 该包是Java语言的核心包,并且该包中的所有内容由Java虚拟机自动导入。
    如:System类、String类、…
  • java.util包 - 该包是Java语言的工具包,里面提供了大量工具类以及集合类等。
    如:Scanner类、Random类、List集合、…
  • java.io包 - 该包是Java语言中的输入输出包,里面提供了大量读写文件相关的类等。
    如:FileInputStream类、FileOutputStream类、…
  • java.net包 - 该包是Java语言中的网络包,里面提供了大量网络编程相关的类等。
    如:ServerSocket类、Socket类、…
  • java.sql 包 - 该包是Java语言中的数据包,里面提供了大量操作数据库的类和接口等。
    如:DriverManager类、Connection接口、…

二. Object类

1.基本概念

  • java.lang.Object类是Java语言中类层次结构的根类,也就是说任何一个类都是该类的直接或者间接子类。
    如果定义一个Java类时没有使用extends关键字声明其父类,则其父类为 java.lang.Object 类。
  • Object类定义了“对象”的基本行为, 被子类默认继承。

2.常用方法

在这里插入图片描述

import java.util.Objects;

public class Student extends Object {
    private int id; // 用于描述学号的成员变量
    private String name; // 用于描述姓名的成员变量

    public Student() {
    }

    public Student(int id, String name) {
        setId(id);
        setName(name);
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        if (id > 0) {
            this.id = id;
        } else {
            System.out.println("学号不合理哦!!!");
        }
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

	 /**
     * 为了比较两个对象的内容,也就是学号信息需要重写该方法
     */
    // Student this = s1;
    // Object obj = s2;
    /*
    @Override
    public boolean equals(Object obj) {
        // 当调用对象和参数对象指向同一个对象时,则内容一定相同
        if (this == obj) return true;
        // 当调用对象为不为空而参数对象为空时,则内容一定不相同
        if (null == obj) return false;
        // 判断obj指向的对象是否为Student类型的对象,若是则条件成立,否则条件不成立
        if (obj instanceof Student) {
            Student ts = (Student) obj;
            // 以学号作为基准判断两个对象是否相等  int是基本数据类型,内存空间中放的就是数据本身,使用 == 可以判断数据是否相同
            //return this.getId() == ts.getId();
            // 以姓名作为基准判断两个对象是否相等  String是引用数据类型,内存空间中放的是地址,使用 == 判断地址是否相同
            // 也就是判断两个对象中姓名字符串的地址是否相同,不够完美
            //return this.getName() == ts.getName();
            return this.getName().equals(ts.getName()); // 比较姓名字符串的内容是否相同
        }
        // 否则类型不一致没有可比性,则内容一定不相同
        return false;
    }
    */

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Student student = (Student) o;
        return id == student.id &&
                Objects.equals(name, student.name);
    }
	
	/**
     * 为了使得该方法的结果与equals方法的结果保持一致,从而满足Java官方的常规协定,需要重写该方法
     */
    /*
    @Override
    public int hashCode() {
        //return getId(); // 不再代表内存地址的编号了
        final int type = 12;
        //return type*31 + getId();
        return type*31 + getName().hashCode();
    }
    */
	
    @Override
    public int hashCode() {
        return Objects.hash(id, name);
    }

	 /**
     * 为了返回更有意义的字符串数据,则需要重写该方法
     */

    @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", name='" + name + '\'' +
                '}';
    }

三. 包装类

3.1 包装类的分类

在这里插入图片描述

3.2 Integer类

3.2.1基本概念

java.lang.Integer类内部包装了一个int类型的变量作为成员变量,主要用于实现对int类型的包装并提供int类型到String类之间的转换等方法。

3.2.2常用方法

在这里插入图片描述

3.2.3装箱和拆箱

在Java5发布之前使用包装类对象进行运算时,需要较为繁琐的“拆箱”和“装箱”操作;即运算前先将包装类对象拆分为基本类型数据,运算后再将结果封装成包装类对象。
从Java5开始增加了自动拆箱和自动装箱的功能。

	// 1.使用构造方法来构造Integer类型的对象并打印
        Integer it1 = new Integer(123);
        System.out.println("it1 = " + it1); // 自动调用toString方法   123
        Integer it2 = new Integer("456");
        System.out.println("it2 = " + it2); // 456
    // 上述方法已过时,建议使用valueOf方法取代之,相当于从int类型到Integer类型的转换,叫做装箱
        Integer it3 = Integer.valueOf(123);
        System.out.println("it3 = " + it3); // 123
        // 相当于从String类型到Integer类型的转换
        Integer it4 = Integer.valueOf("456");
        System.out.println("it4 = " + it4); // 456   自动调用toString方法得到的是String类型
        // 获取调用对象中的整数数值,相当于从Integer类型到int类型的转换,叫做拆箱
        int ia = it4.intValue();
        System.out.println("获取到的整数数据是:" + ia); // 456  得到的是int类型

    // 2.从Java5开始增加了自动装箱和自动拆箱的机制
        Integer it5 = 100;  // 直接通过赋值运算符实现自动装箱
        int ib = it5;       // 直接通过赋值运算符实现自动拆箱
3.2.4自动装箱池

在Integer类的内部提供了自动装箱池技术,将-128到127之间的整数已经装箱完毕,当程序中使用该范围之间的整数时,无需装箱直接取用自动装箱池中的对象即可,从而提高效率。

3.2.5装箱和拆箱笔试考点
		Integer it6 = 128; //127;
        Integer it7 = 128; //127;
        Integer it8 = new Integer(128); //new Integer(127);
        Integer it9 = new Integer(128); //new Integer(127);
        System.out.println(it6 == it7);      // 比较地址  false // true  地址一样
        System.out.println(it6.equals(it7)); // 比较内容  true
        System.out.println(it8 == it9);      // 比较地址  false
        System.out.println(it8.equals(it9)); // 比较内容  true

3.3 Double类

3.3.1基本概念

java.lang.Double类型内部包装了一个double类型的变量作为成员变量,主要用于实现对double类型的包装并提供double类型到String类之间的转换等方法。

3.3.2常用方法

在这里插入图片描述

3.4 Boolean类

3.4.1基本概念

java.lang.Boolean类型内部包装了一个boolean类型的变量作为成员变量,主要用于实现对boolean类型的包装并提供boolean类型到String类之间的转换等方法。

3.4.2常用方法

在这里插入图片描述

3.5 Character类

3.5.1基本概念

java.lang.Character类型内部包装了一个char类型的变量作为成员变量,主要用于实现对char类型的包装并提供字符类别的判断和转换等方法。

3.5.2常用方法

在这里插入图片描述

3.6 包装类(Wrapper)的使用总结

  • 基本数据类型转换为对应包装类的方式:
    调用包装类的构造方法或静态方法valueOf即可
  • 获取包装类对象中基本数据类型变量数值的方式:
    调用包装类中的xxxValue方法即可
  • 字符串转换为基本数据类型的方式:
    调用包装类中的parseXxx方法即可

四. 数学处理类

4.1 Math类

4.1.1基本概念

java.lang.Math类主要用于提供执行数学运算的方法,如:对数,平方根。

4.1.2常用方法

在这里插入图片描述

4.2 BigDecimal类

4.2.1基本概念

由于float类型和double类型在运算时可能会有误差,若希望实现精确运算则借助java.math.BigDecimal类型加以描述。

4.2.2常用方法

在这里插入图片描述

4.2.3 BigDecimal类实现精确计算
	// 实现精确运算
        System.out.println(0.1 + 0.2); // 0.30000000000000004
        BigDecimal bd3 = new BigDecimal("0.1");
        BigDecimal bd4 = new BigDecimal("0.2");
        System.out.println("精确计算的结果是:" + bd3.add(bd4)); // 0.3

4.3 BigInteger类

4.3.1基本概念

若希望表示比long类型范围还大的整数数据,则需要借助java.math.BigInteger类型描述。

4.3.2常用方法

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值