Java常用类学习笔记(一)

Object类

概念
  • java.lang.Object类是Java语言中类层次结构的根类,也就是说任何一个类都是该类的直接或者间 接子类。
  • 如果定义一个Java类时没有使用extends关键字声明其父类,则其父类为 java.lang.Object 类。
  • Object类定义了“对象”的基本行为, 被子类默认继承
Object类中的常用方法
方法声明 功能介绍
Object() 使用无参方式构造对象
boolean equals(Object obj) 用于判断调用对象是否与参数对象相等。 该方法默认比较两个对象的地址是否相等,与 == 运算符的结果一致 若希望比较两个对象的内容,则需要重写该方法。 若该方法被重写后,则应该重写hashCode方法来保证结果的一致 性。
int hashCode() 用于获取调用对象的哈希码值(内存地址的编号)。 若两个对象调用equals方法相等,则各自调用该方法的结果必须相同,若两个调用对象equals方法不相等,则各自调用该方法的结果应该不相同。 为了使得该方法与equals方法保持一致,需要重写该方法。
String toString() 用于获取调用对象的字符串形式 该方法默认返回的字符串为:包名.类名@哈希码值的十六进制 为了返回更有意义的数据,需要重写该方法 使用print或println打印引用或字符串拼接引用都会自动调用该方法
Class getClass() 用于返回调用对象执行时的Class实例,反射机制使用

包装类

通常情况下基本数据类型的变量不是对象,为了满足万物皆对象的理念就需要对基本数据类型的变量进行打包封装处理变成对象,而负责将这些变量声明为成员变量进行对象化处理的相关类,叫做包装类。

包装类 对应的基本类型
java.lang.Byte byte
java.lang.Short short
java.lang.Integer int
java.lang.Long long
java.lang.Float float
java.lang.Double double
java.lang.Boolean boolean
java.lang.Character char
Integer类
  1. 基本概念
    java.lang.Integer类内部包装了一个int类型的变量作为成员变量,主要用于实现对int类型的包装并 提供int类型到String类之间的转换等方法
    private final int value;
    包装类中定义了一个final的变量值,因此改变包装类的值时需要先自动拆箱,进行运算后再重新自动装箱。

  2. 常用的常量

常量类型和名称 功能介绍
public static final int MAX_VALUE 表示int类型可以描述的最大值,即2^31-1
public static final int MIN_VALUE 表示int类型可以描述的最小值,即-2^31
public static final int SIZE 表示int类型采用二进制补码形式的位数
public static final int BYTES 表示int类型所占的字节个数
public static final Class TYPE 表示int类型的Class实例
  1. 常用的方法
方法声明 功能介绍
Integer(int value) 根据参数指定的整数来构造对象(已过时)
Integer(String s) 根据参数指定的字符串来构造对象 (已过时)
int intValue() 获取调用对象中的整数值并返回
static Integer valueOf(int i) 根据参数指定整数值得到Integer类型对象
boolean equals(Object obj 比较调用对象与参数指定的对象是否相等
String toString() 返回描述调用对象数值的字符串形式
static int parseInt(String s) 将字符串类型转换为int类型并返回
static String toString(int i) 获取参数指定整数的十进制字符串形式
static String toBinaryString(int i) 获取参数指定整数的二进制字符串形式
static String toHexString(int i) 获取参数指定整数的十六进制字符串形式
static String toOctalString(int i) 获取参数指定整数的八进制字符串形式
装箱与拆箱的概念
  • 在Java5发布之前使用包装类对象进行运算时,需要较为繁琐的“拆箱”和“装箱”操作;即运算前先将包装类对象拆分为基本类型数据,运算后再将结果封装成包装类对象。
    Integer ia = 100;//自动装箱 int ib = ia;//自动拆箱

  • 从Java5开始增加了自动拆箱和自动装箱的功能。

自动装箱池
  • 在Integer类的内部提供了自动装箱池技术,将-128到127之间的整数已经装箱完毕,当程序中使用 该范围之间的整数时,无需装箱直接取用自动装箱池中的对象即可,从而提高效率。
考点
Integer it1 = 128;
Integer it2 = 128;
Integer it3 = new Integer(128);
Integer it4 = new Integer(128);
System.out.println(it1 == it2);        //比较地址 false
System.out.println(it1.equals(it2));   //比较内容 true
System.out.println(it3 == it4);        //比较地址  false
System.out.println(it3.equals(it4));   //比较内容  true
Integer it5 = 127;
Integer it6 = 127;
Integer it7 = new Integer(127);
Integer it8 = new Integer(127);
System.out.println(it5 == it6);        //比较地址 true(地址一样)
System.out.println(it5.equals(it6));   //比较内容 true
System.out.println(it7 == it8);        //比较地址  false
System.out.println(it7.equals(it8));   //比较内容  true
//--------------------------------------------------------//
Integer ia = 2;
Integer ib = 3;
ia += 1;   //先自动拆箱,再自动装箱。运算结果为3,再自动装箱池里面,因此ia,ib指向同一个地址
System.out.println(ia == ib);//true
double 类的概述
  1. 基本概念
    java.lang.Double类型内部包装了一个double类型的变量作为成员变量private final double value;,主要用于实现对double 类型的包装并提供double类型到String类之间的转换等方法
  2. 常用的常量
常量类型和名称 功能介绍
public static final int SIZE 表示double类型的二进制位数
public static final int BYTES 表示double类型的字节个数
public static final Class TYPE 表示double类型的Class实例
  1. 常用的方法
方法声明 功能介绍
Double(double value) 根据参数指定的浮点数据来构造对象(已过时)
Double(String s) 根据参数指定的字符串来构造对象 (已过时)
double doubleValue() 获取调用对象中的浮点数据并返回
static double valueOf(double d) 根据参数指定浮点数据得到Double类型对象
boolean equals(Object obj) 比较调用对象与参数指定的对象是否相等
String toString() 返回描述调用对象数值的字符串形式
static double parseDouble(String s) 将字符串类型转换为double类型并返回
boolean isNaN() 判断调用对象的数值是否为非数字
  • java.lang.Number类是个抽象类,是上述类的父类来描述所有类共有的成员
Boolean 类的概述
  1. 基本概念
    java.lang.Boolean类型内部包装了一个boolean类型的变量作为成员变量private final boolean value;,主要用于实现对 boolean类型的包装并提供boolean类型到String类之间的转换等方法
  2. 常用的常量
常量类型和名称 功能介绍
public static final Boolean FALSE 对应基值为false的对象
public static final Boolean TRUE 对应基值为true的对象
public static final Class TYPE 表示boolean类型的Class实例
  1. 常用的方法
方法声明 功能介绍
Boolean(boolean value) 根据参数指定的布尔数值来构造对象(已过时)
Boolean(String s) 根据参数指定的字符串来构造对象 (已过时)
boolean booleanValue() 获取调用对象中的布尔数值并返回
static Boolean valueOf(boolean b) 根据参数指定布尔数值得到Boolean类型对象
boolean equals(Object obj) 比较调用对象与参数指定的对象是否相等
String toString() 返回描述调用对象数值的字符串形式
static boolean parseBoolean(String s) 将字符串类型转换为boolean类型并返回(只要参数不是true,则返回false,忽略大小写)
Character类的概述
  1. 基本类型
    java.lang.Character类型内部包装了一个char类型的变量作为成员变量private final char value;,主要用于实现对char类型 的包装并提供字符类别的判断和转换等方法
  2. 常用的常量
常量类型和名称 功能介绍
public static final int SIZE 表示char类型的二进制位数
public static final int BYTES 表示char类型的字节个数
public static final Class TYPE 表示char类型的Class实例
  1. 常用的方法
方法声明 功能介绍
Character(char value) 根据参数指定的字符数据来构造对象(已过时)
char charValue() 获取调用对象中的字符数据并返回
static Character valueOf(char c) 根据参数指定字符数据得到Character类型对象
boolean equals(Object obj) 比较调用对象与参数指定的对象是否相等
String toString() 返回描述调用对象数值的字符串形式
static boolean isUpperCase(char ch) 判断参数指定字符是否为大写字符
static boolean isLowerCase(char ch) 判断参数指定字符是否为小写字符
static boolean isDigit(char ch) 判断参数指定字符是否为数字字符
static char toUpperCase(char ch) 将参数指定的字符转换为大写字符
static char toLowerCase(char ch) 将参数指定的字符转换为小写字符
包装类(Wrapper)的使用总结
  • 基本数据类型转换为对应包装类的方式
    调用包装类的构造方法(已过时)或静态方法(Class.valueOf())即可
  • 获取包装类对象中基本数据类型变量数值的方式
    调用包装类中的xxxValue方法即可
  • 字符串转换为基本数据类型的方式
    调用包装类中的parseXxx方法即

数学处理类

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

  2. 常用的方法

方法声明 功能介绍
static int max(int a, int b) 返回两个参数中的最大值
static int min(int a, int b) 返回两个参数中的最小值
static double pow(double a, double b) 返回第一个参数的幂
static int abs(int a) 返回参数指定数值的绝对值
static long round(double a) 返回参数四舍五入的结果
static double sqrt(double a) 返回参数的平方根
static double random() 返回0.0到1.0的随机
BigDecimal类
  1. 基本概念
    由于float类型和double类型在运算时可能会有误差,若希望实现精确运算则借助 java.math.BigDecimal类型加以描述
    注:一定要用字符串初始化才能保证准确运算
  2. 常用的方法
方法声明 功能介绍
BigDecimal(String val) 根据参数指定的字符串来构造对象
BigDecimal add(BigDecimal augend) 用于实现加法运算
BigDecimal subtract(BigDecimal subtrahend) 用于实现减法运算
BigDecimal multiply(BigDecimal multiplicand) 用于实现乘法运算
BigDecimal divide(BigDecimal divisor) 用于实现除法运算
//注意事项
import java.math.RoundingMode
BigDecimal bd1 = new BigDecimal("1");
BigDecimal bd2 = new BidDecimal("0.3");
//ArithmetriException  不能表示精确的值
System.out.println("除法的结果是" + bd1.divide(db2));
//加入舍入模式
System.out.println("除法的结果是" + bd1.divide(db2,RoundingMode.HALF_UP));
BigInteger 类
  1. 基本概念
    若希望表示比long类型范围还大的整数数据,则需要借助java.math.BigInteger类型描述

  2. 常用的方法

方法声明 功能介绍
BigInteger(String val) 根据参数指定的字符串来构造对象
BigInteger add(BigInteger val) 用于实现加法运算
BigInteger subtract(BigInteger val) 用于实现减法运算
BigInteger multiply(BigInteger val) 用于实现乘法运算
BigInteger divide(BigInteger val) 用于实现除法运算
BigInteger remainder(BigInteger val) 用于实现取余运算
BigInteger[] divideAndRemainder(BigInteger val) 用于实现取商和余数的运算

String 类

String类的概念
  • java.lang.String类用于描述字符串,Java程序中所有的字符串字面值都可以使用该类的对象加以描 述,如:“abc”。
  • 该类由final关键字修饰,表示该类不能被继承。 从jdk1.9开始该类的底层**不使用char[]**来存储数据,而是改成 byte[]加上编码标记,从而节约了一 些空间。
  • 该类描述的字符串内容是个常量不可更改,因此可以被共享使用
常量池的概念
  • 由于String类型描述的字符串内容是常量不可改变,因此Java虚拟机将首次出现的字符串放入常量池中,若后续代码中出现了相同字符串内容则直接使用池中已有的字符串对象而无需申请内存及创建对象,从而提高了性能
常用的构造方法
方法声明 功能介绍
String() 使用无参方式构造对象得到空字符序列
String(byte[] bytes, int offset, int length) 使用bytes数组中下标从offset位置开始的length个字节来构造对象
String(byte[] bytes) 使用bytes数组中的所有内容构造对象
String(char[] value, int offset, int count) 使用value数组中下标从offset位置开始的count个字符来构造对象
String(char[] value) 使用value数组中的所有内容构造对象
String(String original) 根据参数指定的字符串内容来构造对象,新创建对象为参 数对象的副本
常用的成员方法
方法声明 功能介绍
String toString() 返回字符串本身
byte[] getBytes() 将当前字符串内容转换为byte数组并返回
char[] toCharArray() 用于将当前字符串内容转换为char数组并返回
char charAt(int index) 方法charAt用于返回字符串指定位置的字符。
int length() 返回字符串字符序列的长度
boolean isEmpty() 判断字符串是否为空
int compareTo(String anotherString) 用于比较调用对象和参数对象的大小关系
int compareToIgnoreCase(String str) 不考虑大小写,也就是’a’和’A’是相等的关系
String concat(String str) 用于实现字符串的拼接
boolean contains(CharSequence s) 用于判断当前字符串是否包含参数指定的内容
String toLowerCase() 返回字符串的小写形式
String toUpperCase() 返回字符串的大写形式
String trim() 返回去掉前导和后继空白的字符串
boolean startsWith(String prefix) 判断字符串是否以参数字符串开头
boolean startsWith(String prefix, int toffset) 从指定位置开始是否以参数字符串开头
boolean endsWith(String suffix) 判断字符串是否以参数字符串结尾
boolean equals(Object anObject) 用于比较字符串内容是否相等并返回
int hashCode() 获取调用对象的哈希码值
boolean equalsIgnoreCase(String anotherString) 用于比较字符串内容是否相等并返回,不考虑大小写, 如:'A’和’a’是相等
int indexOf(int ch) 用于返回当前字符串中参数ch指定的字符第一次出现的下标
int indexOf(int ch, int fromIndex) 用于从fromIndex位置开始查找ch指定的字符
int indexOf(String str) 在字符串中检索str返回其第一次出现的位置,若找不到返回-1
int indexOf(String str, int fromIndex) 表示从字符串的fromIndex位置开始检索str第一次出现的位置
int lastIndexOf(int ch) 用于返回参数ch指定的字符后一次出现的下标
int lastIndexOf(int ch, int fromIndex) 用于从fromIndex位置开始查找ch指定字符出现的下标
int lastIndexOf(String str) 返回str指定字符串后一次出现的下标
int lastIndexOf(String str, int fromIndex) 用于从fromIndex位置开始反向搜索的第一次出现的下
String substring(int beginIndex, int endIndex) 返回字符串中从下标beginIndex(包括)开始到 endIndex(不包括)结束的子字符串
String substring(int beginIndex) 返回字符串中从下标beginIndex(包括)开始到字符串结尾 的子字符串
正则表达式
  1. 概念
    正则表达式本质就是一个“规则字符串”,可以用于对字符串数据的格式进行验证,以及匹配、查找、替换等操作。该字符串通常使用^运算符作为开头标志,使用$运算符作为结尾标志,当然也可以省略

  2. 规则
    正则表达式的规则

  3. 正则表达式相关的方法

方法名称 方法说明
boolean matches(String regex) 判断当前正在调用的字符串是否匹配参数指定的正则表达式规则
String[] split(String regex) 参数regex为正则表达式,以regex所表示的字符串为分隔 符,将字符串拆分成字符串数组
String replace(char oldChar, char newChar) 使用参数newChar替换此字符串中出现的所有参数 oldChar
String replaceFirst(String regex, String replacement) 替换此字符串匹配给定的正则表达式的第一个子字符串
String replaceAll(String regex, String replacement) 将字符串中匹配正则表达式regex的字符串替换成 replacement

可变字符串类和日期相关类

可变字符串类
  1. 基本概念
  • 由于String类描述的字符串内容是个常量不可改变,当需要在Java代码中描述大量类似的字符串时,只能单独申请和存储,此时会造成内存空间的浪费。
  • 为了解决上述问题,可以使用java.lang.StringBuilder类和java.lang.StringBuffer类来描述字符序 列可以改变的字符串,如:“ab”。
  • StringBuffer类是从jdk1.0开始存在,属于线程安全的类,因此效率比较低。
  • StringBuilder类是从jdk1.5开始存在,属于非线程安全的类,效率比较高
  1. StringBuilder类常用的构造方法
方法声明 功能介绍
StringBuilder() 使用无参方式构造对象,容量为16
StringBuilder(int capacity) 根据参数指定的容量来构造对象,容量为参数指定大小
StringBuilder(String str) 根据参数指定的字符串来构造对象,容量为:16+字符串长度
  1. StringBuilder常用的成员方法
方法声明 功能介绍
int capacity() 用于返回调用对象的容量
int length() 用于返回字符串的长度,也就是字符的个数
StringBuilder insert(int offset, String str) 插入字符串并返回调用对象的引用,就是自己。
StringBuilder append(String str) 追加字符串
StringBuilder deleteCharAt(int index) 将当前字符串中下标为index位置的单个字符删除
StringBuilder delete(int start,int end) 删除字符串
StringBuilder replace(int start,int end, String str) 替换字符串
StringBuilder reverse() 字符串反转

(intern() 方法返回字符串对象的规范化表示形式。
它遵循以下规则:对于任意两个字符串 s 和 t,当且仅当 s.equals(t) 为 true 时,s.intern() == t.intern() 才为 true。)

        //考点一:StringBuilder 本身可以修改,那么为什么成员方法还有返回值?  答:为了连续调用
        StringBuilder sb = new StringBuilder();
        sb.reverse().append("1").append("2").insert(0,"3").delete(0,1).reverse();
        //考点二:如何实现StringBuilder类型和String类型的转换
        String str1 = sb.toString();
        sb = new StringBuilder(str1);
        //考点三:String,StringBuilder,StringBuffer之间的效率比较?
        //String效率低于StringBuffer低于StringBuilder
        //考点四:String是线程安全的吗?
        //答:是线程安全,因为String类是不可变类
        
  • StringBuilder的扩容机制:在原长度的基础上,先乘2再加2
  1. 返回值的设计
  • StringBuilder的很多方法的返回值均为StringBuilder类型。这些方法的返回语句均为:return this
  • 由此可见,这些方法在对StringBuilder所封装的字符序列进行改变后又返回了该对象的引用。基于这样设计的目的在于可以连续调用
System 类
  1. 基本概念
    Java.lang.System类中提供了一些有用的字段和方法
  2. 常用方法
static long currentTimeMillis() 返回当前时间与1970年1月1日0时0分0秒之间以毫秒为单位的时间差
Date 类
  1. 基本概念
    java.util.Date类主要用于描述特定的瞬间,也就是年月日时分秒,可以精确到毫秒
  2. 常用的方法
方法声明 功能介绍
Date() 使用无参的方式构造对象,也就是当前系统时间
Date(long date) 根据参数指定毫秒数构造对象, 参数为距离1970年1月1日0时0分0秒的毫秒数
long getTime() 获取调用对象距离1970年1月1日0时0分0秒的毫秒数
void setTime(long time) 设置调用对象为距离基准时间time毫秒的时间点
SimpleDateFormat类
  1. 基本概念
    java.text.SimpleDateFormat类主要用于实现日期和文本之间的转换。
  2. 常用的方法
方法声明 功能介绍
SimpleDateFormat() 使用无参方式构造对象
SimpleDateFormat(String pattern) 根据参数指定的模式来构造对象,模式主要有: y-年 M-月 d-日 H-时 m-分 s-秒
final String format(Date date) 用于将日期类型转换为文本类型
Date parse(String source) 用于将文本类型转换为日期类型
Calendar类
  1. 基本概念
  • java.util.Calender类主要用于描述特定的瞬间,取代Date类中的过时方法实现全球化。
  • 该类是个抽象类,因此不能实例化对象,其具体子类针对不同国家的日历系统,其中应用广泛的是GregorianCalendar(格里高利历),对应世界上绝大多数国家/地区使用的标准日历系统
  1. 常用的方法
方法声明 功能介绍
static Calendar getInstance() 用于获取Calendar类型的引 用
void set(int year, int month, int date, int hourOfDay, int minute, int second) 用于设置年月日时分秒信息
Date getTime() 用于将Calendar类型转换为 Date类型
void set(int field, int value) 设置指定字段的数值
void add(int field, int amount) 向指定字段增加数值
  • 考点:既然Calendar是一个抽象类,那Calendar.getInstance的意义是什么
    答: 由源码可知,返回的并不是Calendar的对象,而是Calendar子类的对象GregorianCalendar等对象,形成了多态
  1. 多态的使用场合
  • 通过方法的参数传递形成多态; public static void draw(Shape s){ s.show(); } draw(new Rect(1, 2, 3, 4));
  • 在方法体中直接使用多态的语法格式 Account acc = new FixedAccount();
  • 通过方法的返回值类型形成多态 Calender getInstance(){ return new GregorianCalendar(zone, aLocale); }
Java8中的日期相关类
  1. Java8日期类的由来
    JDK 1.0中包含了一个java.util.Date类,但是它的大多数方法已经在JDK 1.1引入Calendar类之后被弃用了。而Calendar并不比Date好多少。它们面临的问题是:
  • Date类中的年份是从1900开始的,而月份都从0开始。
  • 格式化只对Date类有用,对Calendar类则不能使用。
  • 非线程安全等。
  1. 基本概述
  • Java 8通过发布新的Date-Time API来进一步加强对日期与时间的处理。
  • java.time包:该包日期/时间API的基础包。
  • java.time.chrono包:该包提供对不同日历系统的访问。
  • java.time.format包:该包能够格式化和解析日期时间对象。
  • java.time.temporal包:该包包含底层框架和扩展特性。 java.time.zone包:该包支持不同时区以及相关规则的类。
  1. LocalDate类
  • 基本概念
    java.time.LocalDate类主要用于描述年-月-日格式的日期信息,该类不表示时间和时区信息
  • 常用的方法
static LocalDate now() 在默认时区中从系统时钟获取当前日期
  1. LocalTime类
方法声明 常用的方法
static LocalTime now() 从默认时区的系统时间中获取当前时间
static LocalTime now(ZoneId zone) 获取指定时区的当前时间
  1. LocalDateTime类
  • 基本概念
    java.time.LocalDateTime类主要用于描述ISO-8601日历系统中没有时区的日期时间,如2007-1203T10:15:30。
  • 常用方法
方法声明 功能介绍
static LocalDateTime now() 从默认时区的系统时间中获取 当前日期时间
static LocalDateTime of(int year, int month, int dayOfMonth, int hour, int minute, int second) 根据参数指定的年月日时分秒 信息来设置日期时间
int getYear() 获取年份字段的数值
int getMonthValue() 获取1到12之间的月份字段
int getDayOfMonth() 获取日期字段
int getHour() 获取小时数
int getMinute() 获取分钟数
int getSecond() 获取秒数
LocalDateTime withYear(int year) 设置为参数指定的年
LocalDateTime withMonth(int month) 设置为参数指定的月
LocalDateTime withDayOfMonth(int dayOfMonth) 设置为参数指定的日
LocalDateTime withHour(int hour) 设置为参数指定的时
LocalDateTime withMinute(int minute) 设置为参数指定的分
LocalDateTime withSecond(int second) 设置为参数指定的秒
LocalDateTime plusYears(long years) 加上参数指定的年
LocalDateTime plusMonths(long months) 加上参数指定的月
LocalDateTime plusDays(long days) 加上参数指定的日
LocalDateTime plusHours(long hours) 加上参数指定的时
LocalDateTime plusMinutes(long minutes) 加上参数指定的分
LocalDateTime plusSeconds(long seconds) 加上参数指定的秒
LocalDateTime minusYears(long years) 减去参数指定的年
LocalDateTime minusMonths(long months) 减去参数指定的月
LocalDateTime minusDays(long days) 减去参数指定的日
LocalDateTime minusHours(long hours) 减去参数指定的时
LocalDateTime minusMinutes(long minutes) 减去参数指定的分
LocalDateTime minusSeconds(long seconds) 减去参数指定的秒
  1. Instant类
  • 基本概述
    java.time.Instant类主要用于描述瞬间的时间点信息
  • 常用的方法
方法声明 功能介绍
static Instant now() 从系统时钟上获取当前时间
OffsetDateTime atOffset(ZoneOffset offset) 将此瞬间与偏移量组合以创建偏移日期时间
static Instant ofEpochMilli(long epochMilli) 根据参数指定的毫秒数来构造对象,参数为距离1970年1月1 日0时0分0秒的毫秒数
long toEpochMilli() 获取距离1970年1月1日0时0分0秒的毫秒数
  1. DateTimeFormatter类
  • 基本概念
    java.time.format.DateTimeFormatter类主要用于格式化和解析日期
  • 常用的方法
方法声明 功能介绍
static DateTimeFormatter ofPattern(String pattern) 根据参数指定的模式来获取对象
String format(TemporalAccessor temporal) 将参数指定日期时间转换为字符串
TemporalAccessor parse(CharSequence text) 将参数指定字符串转换为日期时间

你可能感兴趣的:(java)