Java 内部类与常用 API(五)

内部类

概述

  • 内部类:就是在一个类中定义一个类。

  • 内部类定义格式:

    public class 类名{
        修饰符 class 类名{
        }
    }
    
  • 内部类访问特点

    • 内部类可以直接访问外部类的成员,包括私有
    • 外部类要访问内部类的成员,必须创建对象

成员内部类

  • 按照内部类在类中定义的位置不同,可以分为以下两种形式:

    • 在类的成员位置:成员内部类
    • 在类的局部位置:局部内部类
  • 外部创建成员内部类对象的格式如下:

    外部类名.内部类名 对象名 = 外部类对象.内部类对象
    

局部内部类

  • 局部内部类是在方法中定义的类,所以外界是无法直接使用,需要在方法内部创建对象并使用
  • 该类可以直接访问外部类的成员,也可以访问方法内的局部变量

匿名内部类

  • 匿名内部类是局部内部类的一种

  • 前提:存在一个类或者接口,这里的类可以是具体类,也可以是抽象类

  • 格式:

    new 类名或者接口名(){
    	重写方法;
    };
    
  • 本质:是一个继承了该类或者是实现了该接口的子类匿名对象

常用 API

Math

  • 概述:Math 类没有构造方法,查看帮助文档,可以直接调用静态的成员。

  • Math 类的常用方法

    方法名 说明
    public static intabs(int a) 绝对值,返回结果为 int 类型
    public static doubleceil(double a) 向上取整,返回结果为 double 类型
    public static doublefloor(double a) 向下取整,返回结果为 double 类型
    public static intround(float a) 四舍五入,返回结果为 int 类型
    public static intmax(int a,int b) 返回两个 int 值中的最大值
    public static intmin(int a,int b) 返回两个 int 值中的最小值
    public static doublepow(double a,double b) 返回 a 的 b 次幂的值
    public static doublerandom() 返回值为 double 的正值,[ 0.0,1.0 )

System

  • 概述:System 包含几个有用的类字段和方法,它不能被实例化。

  • System 类的常用方法

    方法名 说明
    public static voidexit(int status) 终止当前运行的 Java 虚拟机,非零表示异常终止
    public static longcurrentTimeMillis() 返回当前时间(以毫秒为单位)

Object

  • 概述:Object 是类层次结构的根,每个类都可以将 Object 作为超类。所有类都直接或者间接地继承自该类

  • 构造方法:public Object()

  • 子类构造方法默认访问父类的无参构造方法的原因:

    • 因为它们的顶级父类只有无参构造方法
  • 查看方法的源码的方法:选中方法,按下 Ctrl + B 快捷键可以查看

  • ObjecttoString()建议重写,用于改变打印输出对象的格式(因为 println方法使用时调用了 toString 方法来定义打印的内容格式),使用 idea 提供的 toString() 重写方法可以查看对象的属性。(注:String 类已重写)

  • Objectequals(Object obj) 方法用于比较对象是否相等。默认比较地址,重写可以比较内容,idea 可自动生成。(注:String 类已重写)

Arrays

  • 概述: Arrays 类包含用于操作数组的各种方法

  • Arrays 类常用的方法:

    方法名 说明
    public static StringtoString(int[] a) 返回指定数组的内容的字符串表示形式
    public static voidsort(int[] a) 按照数字顺序排列指定的数组
  • 工具类的设计思想:

    • 构造方法用 private 修饰,防止外界创建对象
    • 成员用 public static 修饰,可以让外界通过类名直接调用

基本类型包装类

  • 概述:将基本数据类型封装成对象的好处在于可以在对象中定义更多的功能方法操作该数据。

  • 常用的操作之一:用于基本数据类型与字符串之间的转换

    基本数据类型 包装类
    byte Byte
    short Short
    int Integer
    long Long
    float Float
    double Double
    char Character
    boolean Boolean

Integer

  • 概述:Integer 类包装一个对象中的原始类型 int 的值。

  • Integer 类常用的方法:

    方法名 说明
    publicInteger(int value) 根据 int 值创建 Integer 对象(过时)
    publicInteger(String s) 根据 String 值创建 Integer 对象(过时)
    public static IntegervalueOf(int i) 返回表示指定的 int 值的 Integer 实例
    public static IntegervalueOf(String s) 返回一个保存指定值的 Integer 对象 String
    • 注意:上述的 String 类型参数均指的是数字字符串

int 和 String 的相互转换

  • 基本类型包装类的最常见操作就是:用于基本类型和字符串之间的相互转化。
  1. int 转换为 String

    public static String valueOf(int i):返回 int 参数的字符串表示形式。该方法是 String 类中的方法。

  2. String 转换为 int

    public static int parseInt(String s):将字符串解析为 int 类型。该方法是 Integer 类中的方法。

split 字符串分割函数

  • public String[] split(String regex):将字符串对象按照 regex 分隔符进行分割,并返回字符串数组。

自动装箱和拆箱

  • 装箱:把基本数据类型转换为对应的包装类类型

  • 拆箱:把包装类类型转换为对应的基本数据类型

    Integer i = 100;  //自动装箱,实际上是Integer i = Integer.valueOf(100);
    int i1 = i;       //自动拆箱,实际上是int i1 = i.intValue();
    

    注意:在使用包装类类型的时候,如果做操作,最好先判断是否为 null。

日期类

Date 类

  • 概述:Date 代表了一个特点的时间,精确到毫秒。

  • 常用的构造方法:

    方法名 说明
    publicDate() 分配一个 Date 对象,并初始化为当前系统时间
    publicDate(long date) 分配一个 Date 对象,并将其初始化为给定距离标准基准时间的毫秒值(date 参数)的时间

    注意:DatetoString() 方法也已重写。

  • 常用成员方法:

    方法名 说明
    public longgetTime() 获取的是日期对象从标准基准时间Date 对象中时间的毫秒值
    public voidsetTime(long time) 设置时间,给的是毫秒值

SimpleDateFormat

  • 概述:SimpleDateFormat 是一个具体的类,用于以区域设置敏感的方式格式化和解析日期。

  • 日期和时间格式由日期和时间模式字符串指定,在日期和时间模式字符串中,从 ‘A’ 到 ‘Z’ 以及从 ‘a’ 到 ‘z’ 引号的字母被解释为表示日期或时间字符串的组件的模式字母。

  • 常用的模式字母及对应关系如下:

    模式字母 含义
    y
    M
    d
    H
    m
    s
  • SimpleDateFormat 的构造方法

    方法名 说明
    publicSimpleDateFormat() 构造一个 SimpleDateFormat,使用默认模式和日期格式
    publicSimpleDateFormat(String pattern) 构造一个 SimpleDateFormat,使用给定的模式和默认的日期格式
  • SimpleDateFormat 格式化和解析日期

    1. 格式化(从 Date 到 String)

      public final String format(Date date):将日期格式化成日期/时间字符串。

    2. 解析(从 String 到 Date)

      public Date parse(String source):从给定字符串的开始解析文本以生成日期。

Calendar 类

  • 概述:Calendar 类是一个抽象类,不能直接实例化,可以通过多态方式创建对象(由子类实现对象转化),用于获取日期中的信息(例如年、月、日、星期、周、时间等)。

  • Calendar 类创建对象的方式

    Calendar c = Calendar.getInstance();
    

    其中 public static Calendar getInstance() 方法是通过创建子类对象,并以 Calendar 类型返回子类对象。

  • Calendar 的常用方法

    方法名 说明
    public intget(int field) 返回给定日历字段的值
    public abstract voidadd(int field,int amount) 根据日历的规则,将指定的时间量添加或减去给定的日历字段(注意:该方法可以直接使用,因为子类已进行实现)
    public final voidset(int year,int month,int date) 设置当前日历的年月日
  • 注意:Calendar.MONTH 成员变量的取值范围是 [0,11],其中 0 表示 1 月。

  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3175 引用 • 8212 回帖 • 1 关注
  • 内部类
    1 引用
  • API

    应用程序编程接口(Application Programming Interface)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。

    77 引用 • 429 回帖
  • 包装类
    1 引用

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...