极客说

记录精彩的程序人生

Open Source, Open Mind,
Open Sight, Open Future!
  menu
18 文章
0 浏览
2 当前访客
ღゝ◡╹)ノ❤️

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修饰,可以让外界通过类名直接调用

基本类型包装类

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

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

    基本数据类型包装类
    byteByte
    shortShort
    intInteger
    longLong
    floatFloat
    doubleDouble
    charCharacter
    booleanBoolean

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内部类与常用API(五)
作者:wangdj
地址:https://qntop.com/articles/2024/10/27/1729958797691.html