java常用核心类

1.Object:终极父类

java.lang.Object类是Java语言中所有类的根类,定义类时若没有用extends指明继承哪个类,编译器自动加上extends Object。Object类中共定义了9个方法,所有的类(包括数组)都继承该类中的方法,

java常用核心类_第1张图片

1.1toString方法:

toString()方法是Object类的一个重要方法,调用对象的toString()方法可以返回对象的字符串表示。该方法在Object类中的定义是返回类名加一个@符号,再加一个十六进制整数。

在Java类库中,有许多类覆盖了toString()方法,输出时能够得到可理解的结果,LocalDate类就是其一。

1.2equals()方法:

java常用核心类_第2张图片

java常用核心类_第3张图片

注意:在子类中,使用签名equals(ClassName obj)覆盖equals()方法是一个常见的错误,应该使用equals(Object obj)覆盖equals()方法。

java常用核心类_第4张图片

1.3 hashCode()方法

hashCode()方法返回一个对象的哈希码(hash code)值,它是一个整数,主要用来比较对象的大小。在Object类中hashCode()方法的实现是返回对象在计算机内部存储的十进制内存地址,

java常用核心类_第5张图片

java常用核心类_第6张图片

java.util.Objects类的hash()方法的参数是可变参数,该方法计算每个参数的哈希码,并将它们组合起来。这个方法是空指针安全的。如果类包含数组类型的实例变量,比较它们的哈希码时,首先使用静态方法Arrays.hashCode()计算数组的每个元素哈希码组成的哈希码,然后将结果传给Objects的hash()方法。

1.4clone()方法

使用Object类的clone()方法可以克隆一个对象,即创建一个对象的副本。要使类的对象能够克隆,类必须实现Cloneable接口。

提示:使用Object类继承的clone()方法克隆对象只是做了浅拷贝。它简单地从原对象中复制所有实例变量到目标对象中。如果实例变量是基本类型或不变对象(如String),将没有问题;否则,原对象和克隆对象将共享可变的状态。

1.5finalize()方法

在Java程序中,每个对象都有一个finalize()方法。在对象被销毁之前,垃圾回收器允许对象调用该方法进行清理工作,这个过程称为对象终结(finalization)。在程序中每个对象的finalize()方法仅被调用一次。利用这一点,可以在finalize()方法中清除在对象外被分配的资源。典型的例子是,对象可能打开一个文件,该文件可能仍处于打开状态。在finalize()方法中,就可以检查如果文件没有被关闭,将该文件关闭。

一、在默认情况下,通过System.gc()或者Runtime.getRuntime().gc()的调用,会显示触发Full GC,同时对老年代和新生代进行回收,尝试释放被丢弃对象占用的内存。

二、然而System.gc()调用附带一个免责声明,无法保证对垃圾收集器的调用。

三、JVM实现者可以通过System.gc()调用来决定JVM的GC行为。而一般情况下,垃圾回收应该是自动进行的,无须手动触发,否则就太过于麻烦了,在一些特殊情况下,如我们正在编写一个性能基准,我们可以在运行之间调用System.gc()

2.Math类

java.lang.Math类中定义了一些方法完成基本算术运算,如指数函数、对数函数、平方根函数以及三角函数等。Math类是final类,因此不能被继承。其构造方法的访问修饰符是private,因此不能实例化。Math类中定义的两个常量PI和E以及所有的方法都是静态的,因此仅能通过类名访问。

java常用核心类_第7张图片

Math类中的random()方法用来生成大于等于0.0小于1.0的double型随机数(0<=Math.random()<1.0)。该方法十分有用,可以用它来生成任意范围的随机数。

java常用核心类_第8张图片

3.基本类型包装类

Java语言提供了8种基本数据类型,如整型(int)、字符型(char)等。这些数据类型不属于Java的对象层次结构。Java语言保留这些数据类型主要是为了提高效率。这些类型的数据在方法调用时是采用值传递的,不能采用引用传递。

有时需要将基本类型数据作为对象处理,如许多Java方法需要对象作参数。因此,Java为每种基本数据类型提供了一个对应的类,这些类称为基本数据类型包装类(wrapper class),通过这些类,可以将基本类型的数据包装成对象。

java常用核心类_第9张图片

3.1Character类

java常用核心类_第10张图片

Character类的常用方法有:

public char charValue():返回Character对象所包含的char值。

public int compareTo(Character anotherChar):比较两个字符对象。如果该字符对象与参数字符对象相等,返回0;若小于参数字符,返回值小于0;若大于参数字符,则返回值大于0。

public static boolean isDigit(char ch):返回参数字符是否是数字。

public static boolean isLetter(char ch):返回参数字符是否是字母。

public static boolean isLowerCase(char ch):返回参数字符是否是小写字母。

public static boolean isUpperCase(char ch):返回参数字符是否是大写字母。

public static boolean isWhiteSpace(char ch):返回参数字符是否是空白字符。

public static char toLowerCase(char ch):将参数字符转换为小写字母返回。

public static char toUpperCase(char ch):将参数字符转换为大写字母返回。

public static boolean isJavaIdentifierStart(char ch):返回参数字符是否允许作为Java标识符的开头字符。

public static boolean isJavaIdentifierPart (char ch):返回参数字符是否允许作为Java标识符的中间字符。

3.2Boolean类

Boolean类的对象封装了一个布尔值(true或false),

该类有下面两个构造方法:

public Boolean(boolean value):用一个boolean型值创建一个Boolean对象。

public Boolean(String s):用一个字符串创建Boolean对象。如果字符串s不为null,且其值为“true”(不区分大小写)就创建一个true值,否则创建一个false值。

Boolean类的常用方法有:

public boolean booleanValue():返回该Boolean对象所封装的boolean值。

public static boolean parseBoolean(String s):将参数s解析为一个boolean值。如果参数不为null,且等于“true”(不区分大小写),则返回true,否则返回false。

public static Boolean valueOf(boolean b):将参数b的值转换为Boolean对象。

public static Boolean valueOf(String s):将参数s的值转换为Boolean对象。

java常用核心类_第11张图片

3.3创建数值类对象

6种数值型包装类都有两个构造方法。一个是以该类型的基本数据类型作为参数;另一个是以一个字符串作为参数。

例如,Integer类有下面两个构造方法:

public Integer (int value):使用int类型的值创建包装类型Integer对象。

public Integer (String s):使用字符串构造Integer对象,如果字符串不能转换成相应的数值,则抛出NumberFormatException异常。

java常用核心类_第12张图片

java常用核心类_第13张图片

java常用核心类_第14张图片

3.4数值类的常量

每个数值包装类都定义了SIZE、BYTES、MAX_VALUE、MIN_VALUE常量。SIZE表示每种类型的数据所占的位数,BYTES表示数据所占的字节数。MAX_VALUE表示对应基本类型数据的最大值。对于Byte、Short、Integer和Long来说,MIN_VALUE表示byte、short、int和long类型的最小值。对Float和Double来说,MIN_VALUE表示float和double型的最小正值。

除了上面的常量外,在Float和Double类中还分别定义了POSITIVE_INFINITY、NEGATIVE_INFINITY、NaN(not a number),它们分别表示正、负无穷大和非数值。

java常用核心类_第15张图片

3.5自动装箱和拆箱:

为方便基本类型和包装类型之间转换,Java 5版提供了一种新的功能,称为自动装箱和自动拆箱。自动装箱(autoboxing)是指基本类型的数据可以自动转换为包装类的实例,自动拆箱(unboxing)是指包装类的实例自动转换为基本类型的数据。

java常用核心类_第16张图片

java常用核心类_第17张图片

java常用核心类_第18张图片

3.6字符串转换为基本类型:

将字符串转换为基本数据类型,可通过包装类的parseXxx()静态方法实现,这些方法定义在各自的包装类型中。例如,在Integer类中定义了parseInt()静态方法,该方法将字符串s转换为int型数。

java常用核心类_第19张图片

其他包装类中定义的相应方法如下:

public static byte parseByte(String str):将字符串参数str转换为byte类型值。

public static short parseShort(String str) :将字符串参数str转换为short类型值。

public static int parseInt(String str) :将字符串参数str转换为int类型值。

public static long parseLong(String str) :将字符串参数str转换为long类型值。

public static float parseFloat(String str) :将字符串参数str转换为float类型值。

public static float parseDouble(String str) :将字符串参数str转换为double类型值。

public static boolean parseBoolean(String str):将字符串参数str转换为boolean类型值。

java常用核心类_第20张图片

3.7BigInteger和BigDecimal类

如果在计算中需要非常大的整数或非常高精度的浮点数,可以使用java.math包中定义的BigInteger类和BigDecimal类。这两个类都扩展了Number类并实现了Comparable接口,它们的实例都是不可变的。BigInteger的实例可以表示任何大小的整数。可以使用new BigInteger(String)和new BigDecimal(String)创建BigInteger和BigDecimal实例,然后使用add()、subtract()、multiply()、divide()以及remainder()等方法执行算术运算,还可以使用compareTo()方法比较它们的大小。

java常用核心类_第21张图片

java常用核心类_第22张图片

对BigDecimal对象,其精度没有限制。使用divide()方法时,如果运算不能终止,将抛出ArithmeticException异常。但是,可以使用重载的divide(Bigdecimal d,int scale, int roundingMode)方法来指定精度和圆整的模式以避免异常。这里,scale为小数点后最小的位数。下面代码创建两个BigDecimal对象,然后执行除法运算,保留20位小数,圆整模式为BigDecimal.ROUND_UP。

java常用核心类_第23张图片

4.日期-时间API

时间是自然界无处不在的客观属性。在自然界中,时间每时每刻都存在、连续发生一去不复返的。为了方便在计算机中表示时间,人们使用时间轴表示时间点,时间点是时间轴上离散的点,相邻时间点之间距离等于一个最小不可分割的时间单位。Java SE 8开始提供了一个新的日期-时间API,它们定义在java.time包中。常用的类包括LocalDate、LocalTime、LocalDateTime、YearMonth、MonthDay、Year、Instant、Duration及Period等类。

4.1本地日期类LocalDate

LocalDate对象用来表示带年月日的日期,不带时间信息。使用LocalDate对象可记录重要的事件,如人的出生日期、产品的出厂日期等。可以使用下列方法创建LocalDate对象。

public static LocalDate now():获得默认时区的系统时钟的当前日期。

public static LocalDate of(int year, int month, int dayOfMonth):通过指定的年、月、日值获得一个LocalDate对象。月份的有效值为1~12,日的有效值为1~31。如果指定的值非法将抛出java.time.DateTimeException异常。

public static LocalDate of(int year, Month month, int dayOfMonth) :通过指定的年、月、日值获得一个LocalDate对象。

public static LocalDate now(Clock clock):获得默认时区的指定时钟的日期。

java常用核心类_第24张图片

java常用核心类_第25张图片

java常用核心类_第26张图片

java常用核心类_第27张图片

下面程序从键盘输入一个年份和一个月份,输出该月的日历。

java常用核心类_第28张图片

程序运行结果如下:

java常用核心类_第29张图片

4.2 本地时间类LocalTime

LocalTime对象表示本地时间,包含时、分和秒,它是不可变对象,最小精度是纳秒。例如,时间13:45:30可以用LocalTime对象存储。时间对象中不包含日期和时区。使用下面方法创建LocalTime对象。

public static LocalTime now():获得默认时区系统时钟的当前时间。

public static LocalTime now(ZoneId zone):获得指定时区系统时钟的当前时间。

public static LocalTime of(int hour, int minute, int second):根据给定的时、分、秒创建一个LocalTime实例。

public static LocalTime of(int hour, int minute, int second, int nanoOfSecond):根据给定的时、分、秒和纳秒创建一个LocalTime实例。

java常用核心类_第30张图片

4.3 本地日期时间类LocalDateTime

LocalDateTime类用来处理日期和时间,该类对象实际是LocalDate和LocalTime对象的组合,用来表示一个特定事件的开始时间等,如北京奥林匹克运动会开幕时间是2008年8月8日下午8点。

除了now()方法外,LocalDateTime类还提供了of()方法创建对象,如下所示。

public static LocalDateTime now():获得默认时区系统时钟当前日期和时间对象。

public static LocalDateTime of(int year, int month, int dayOfMonth, int hour,int minute):通过指定的年月日和时分获得日期时间对象,秒和纳秒设置为0。

public static LocalDateTime of(int year, int month, int dayOfMonth, int hour, int minute,int second) :通过指定的年月日和时分秒获得日期时间对象。 

public static LocalDateTime now(ZoneId zone):获得指定时区系统时钟当前日期和时间对象。

LocalDateTime类定义了from()方法可从另一种时态格式转换成LocalDateTime实例,也定义了在LocalDateTime实例上加、减小时、分钟、周和月等,下面代码演示了几个方法的使用。

java常用核心类_第31张图片

提示:Java还提供ZonedDateTime表示更复杂的时区时间,有关时区和时间偏移的类还有ZonedId、OffsetDateTime和OffsetTime等,这些对象都带有时区信息。

4.4 Instant类、Duration类和Period类

Instant类表示时间轴上的一个点。Duration类和Period类都表示一段时间,前者是基于时间的(秒、纳秒);后者是基于日期的(年、月、日)。

4.4.1Instant类

java常用核心类_第32张图片

4.4.2Duration类

Duration对象用来表示机器时间,它的测度是基于秒、纳秒的。如果创建Duration实例结束点在开始点之前,它的值可以为负值。为了计算两个瞬时点的时间差,可以使用静态方法Duration.between()。例如,下面代码计算一个算法的运行时间。

java常用核心类_第33张图片

4.4.3Period类

Period类表示基于日期的(年、月、日)一段时间,该类提供了getDays()、getMonths()、getYears()等方法从Period中抽取一段时间。整个时间段用年、月、日表示,如果要用单一时间单位表示,可以使用ChronoUnit.between()方法。

java常用核心类_第34张图片

4.5其他常用类

除上述介绍的类外,日期-时间API还定义了一些其他表示日期和时间的类,包括Clock类、Year类、YearMonth类与MonthDay类、Month枚举以及ZonedDateTime与OffsetDateTime等。Year表示一年,下面代码使用它的isLeap()方法确定给定的年是否是闰年。2012年是闰年,代码返回true。

java常用核心类_第35张图片

java常用核心类_第36张图片

4.6日期时间解析和格式化

日期-时间API提供了parse()方法解析包含日期和时间信息,还提供了format()方法格式化时态数据。

1.时态数据解析LocalDate类的带一个参数的parse(CharSequence)方法使用ISO_LOCAL_DATE格式化器将一个字符串(如"2015-07-09")解析成日期数据。若需要指定不同的格式化器,可使用带两个参数的parse(CharSequence, DateTimeFormatter)方法。若字符串不能解析成对应的日期-时间数据,将抛出java.time.format.DateTimeParseException异常。

java常用核心类_第37张图片

java常用核心类_第38张图片

java常用核心类_第39张图片

java常用核心类_第40张图片

你可能感兴趣的:(java,开发语言)