5.1、Java常用类

2021/4/29 20:55:49

本文主要是介绍5.1、Java常用类,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

日期类

Date类

java.util.Date是用来处理日期、时间的一个类,并且自带toString方法

常用方法:

toString():显示当前的年、月、日、时、分、秒

getTime():获取当前Date对象对应的毫秒数。(时间戳)

SimpleDateFormat类

java.test.SimpleDateFormat

1、fomart方法,可以将Date类型的日期,转化为自定格式的字符串

2、parse方法,可以将字符串格式的日期,转化为Date类型的日期

import java.text.ParseException; 
import java.text.SimpleDateFormat;
import java.util.Date; 
public class DateTest {   
  public static void main(String[] args) throws ParseException { 
    //Date类可以获取当前的日期      
    Date d1 = new Date();       
    //因为Date类有toString方法,所以可以直接输出      
    System.out.println(d1);         
    //SimpleDateFormat类的format方法,可以将Date类型的日期,转化为自定格式的字符串      
    //其中yy-MM-dd hh-mm-ss中的字母格式固定    
    SimpleDateFormat s1 = new SimpleDateFormat("yyyy年MM月dd日 hh时mm分ss秒");        
    String str1 = s1.format(d1);     
    System.out.println(str1);       
    //SimpleDateFormat类的parse方法,可以将固定格式的字符串日期,转化为Date类型      
    String str2 = "2020-3-12 18-50-44";      
    SimpleDateFormat s2 = new SimpleDateFormat("yyyy-MM-dd hh-mm-ss");         
    Date d2 = s2.parse(str2);  
    System.out.println(d2);   
  }
}
输出
Tue Mar 30 12:18:27 CST 2021
2021年03月30日 12时18分27秒 
Thu Mar 12 18:50:44 CST 2020

Calendar类

java.util.Calendar

Calendar类是一个抽象类,不可以被实例化,在程序中需要调用其静态方法getInstance()来得到一个Calendar对象,然后根据这个对象再调用其他的方法,例如:

Calendar calendar = Calendar.getInstance();

常用方法:

Object类

java.lang.Object

  • Object类是所Java类的根父类

  • 如果在类的声明中未使用extends关键字指明其父类,则默认父类为java.lang.Object类

  • Object类中的功能(属性、方法)就具通用性。

  • 属性:无

  • 方法:equals() / toString() / getClass() /hashCode() / clone() / finalize()
    / wait() / notify() / notifyAll()

  • Object类只声明了一个空参的构造器

equals()方法

  • 是一个方法,而非运算符

  • 只能适用于引用数据类型

  • Object类中equals()的定义:

public boolean equals(Object obj) { return (this == obj); }

  • 说明:Object类中定义的equals()和==的作用是相同的:比较两个对象的地址值是否相同.即两个引用是否指向同一个对象实体

  • 像String、Date、File、包装类等都重写了Object类中的equals()方法。重写以后,比较的不是两个引用的地址是否相同,而是比较两个对象的"实体内容"是否相同。

  • 通常情况下,我们自定义的类如果使用equals()的话,也通常是比较两个对象的"实体内容"是否相同。那么,我们就需要对Object类中的equals()进行重写.

  • 重写的原则:比较两个对象的实体内容是否相同.

  • 如果equals方法比较两个对象返回为true,那么两个对象的hashcode一定相同

  • 如果equals方法比较两个对象返回为false,那么两个对象的hashcode不一定不相同

==和equals的区别

  1. ==
    既可以比较基本类型也可以比较引用类型。对于基本类型就是比较值,对于引用类型
    就是比较内存地址

  2. equals的话,它是属于java.lang.Object类里面的方法,如果该方法没有被重写过默认也
    是==;我们可以看到String等类的equals方法是被重写过的,而且String类在日常开发中
    用的比较多,久而久之,形成了equals是比较值的错误观点。

  3. 具体要看自定义类里有没有重写Object的equals方法来判断。

  4. 通常情况下,重写equals方法,会比较类中的相应属性是否都相等。

hashCode方法:

包装类

针对八种基本数据类型定义相应的引用类型—包装类(封装类)

基本数据类型、包装类和String类间的转化

自动装箱与自动拆箱

jdk5.0新加入特性

包装类的缓存机制

//a和b都使用的是Integer提供的缓存对象,所以地址一样
Integer a = 10;
Integer b = 10;
Sysout.out.println(a == b);
输出
true
*****************************************************************
Integer a1 = new Integer(10);
Integer b1 = new Integer(10);
Sysout.out.println(a1 == b1);
输出
false
*****************************************************************
 //Integer提供了-128~127的缓存对象,所以在超过范围以后,会产生新的对象
Integer a2 = 128; 
Integer b2 = 128; 
Sysout.out.println(a2 == b2); 
输出
false

除了Double和Float,其他包装类都有缓存对象!

整数:-128~127

Character:[0~127]

Boolean:true、false

缓存减少了频繁创建和销毁对象的次数!

String类

java.lang.String

概述

String:字符串,使用一对""引起来表示。

  1. String声明为final的,不可被继承

  2. String实现了Serializable接口:表示字符串是支持序列化的。

实现了Comparable接口:表示String可以比较大小

  1. String内部定义了final char[] value用于存储字符串数据

  2. 通过字面量的方式(区别于new给一个字符串赋值,此时的字符串值声明在字符串常量池中)。

  3. 字符串常量池中是不会存储相同内容(使用String类的equals()比较,返回true)的字符串的。

常用方法:


boolean starsWith(String value): 判断一个字符串是否以value开始

boolean endsWith(String value): 判断一个字符串是否以value结尾

String类两种赋值方法的区别

一、通过字面量定义的方式

String s1 = "abc";
String s2 = "abc";
System.out.println(s1 == s2);
输出
true

此类赋值方法,会将"abc"存入字符串常量池中,由于字符串常量池内不会存放重复的字符串,在常量池中指向同一个"abc"对象,所以s1和s2的地址信息一样。

二、通过new + 构造器的方式

String s1 = new String("abc");
String s2 = new String("abc");
System.out.println(s1 == s2);
输出
false

此类赋值方法,s1和s2指向堆空间中的不同的String类型的对象,而这两个不同的String类型对象的char[
],指向常量池中的同一个“abc”对象,所以,s1和s2的地址信息不一样。

String s = new String("abc");方式创建对象,在内存中创建了几个对象?

两个:一个是堆空间中new结构,另一个是char[]对应的常量池中的数据:"abc"

两个字符串类型对象连接,如果在编译期,可以就确定值的情况下,那么连接的结果会放入字符串常量池;只要有一个是变量,连接的结果不会进入字符串常量池。

StringBuffer、StringBuilder类

三者的对比

  • String : 不可变的字符序列;底层使用char[]存储

  • StringBuffer : 可变的字符序列;线程安全的,效率低;底层使用char[]存储

  • StringBuilder :
    可变的字符序列;jdk5.0新增的,线程不安全的,效率高;底层使用char[]存储

三者的执行效率对比

从高到低排列:StringBuilder > StringBuffer > String

常用方法(StringBuffer、StringBuilder)

  • 增:append(xxx)

  • 删:delete(int start,int end)

  • 改:setCharAt(int n,char ch) / replace(int start,int end,String str)

  • 查:charAt(int n )

  • 插:insert(int offset , xxx)

  • 长度:length();

  • 缓冲区长度:capacity();

  • 遍历:for() + charAt() / toString()

Math类

java.lang.Math

提供了一系列静态方法用于科学计算。其方法的参数和返回 值类型一般为double型。

常用方法

BigInteger类

java.math.BigInteger

BigInteger可以表示不可变的任意精度的整数。BigInteger 提供所有 Java
的基本整数操作符的对应物,并提供 java.lang.Math 的所有相关方法。
另外,BigInteger 还提供以下运算:模算术、GCD 计算、质数测试、素数生成、
位操作以及一些其他操作。

构造器

BigInteger(String val):根据字符串构建BigInteger对象

BigDecimal类

java.math.BigDecimal

一般的Float类和Double类可以用来做科学计算或工程计算,但在商业计算中,
要求数字精度比较高,故用到BigDecimal类。BigDecimal类支持不可变的、任意精度的有符号十进制定点数。

构造器:

public BigDecimal(double val)

public BigDecimal(String val)

常用方法:

比较器

自然排序:java.lang.Comparable

定制排序:java.util.Comparator

Comparable接口

重写compareTo(obj)的规则:

如果当前对象this大于形参对象obj,则返回正整数,

如果当前对象this小于形参对象obj,则返回负整数,

如果当前对象this等于形参对象obj,则返回零。

使用方法:

//必须在需要排序的类中,实现Comparable接口,并且重写方法compareTo
public class Goods implements Comparable<Goods>{
    private double goodsPrice;
 	@Override
    public int compareTo(Goods o) {
        return Double.compare(this.goodsPrice,o.goodsPrice);
    }
}

Comparator接口

当元素的类型没实现java.lang.Comparable接口而又不方便修改代码,或者实现了java.lang.Comparable接口的排序规则不适合当前的操作,那么可以考虑使用
Comparator 的对象来排序

重写compare(Object o1,Object o2)规则:

比较o1和o2的大小: 如果方法返回正整数,则表示o1大于o2;

如果返回0,表示相等;

返回负整数,表示o1小于o2。

使用方法:

//在新的类里面,进行Comparator接口的实现并且重写compare方法
public class GoodsesIdUp implements Comparator<Goods> {
    @Override
    public int compare(Goods o1, Goods o2) {
        return Double.compare(o1.getGoodsPrice(),o2.getGoodsPrice());
    }
}

两种排序方式对比

  • Comparable接口的方式一旦一定,保证Comparable接口实现类的对象在任何位置都可以比较大小。

  • Comparator接口属于临时性的比较。

UUID类

java.util.UUID

UUID是国际标准化组织(ISO)提出的一个概念。这个数值可以通过一定的算法计算出来。为了提高效率,常用的UUID可缩短至16位。UUID用来识别属性类型,在所有空间和时间上被视为唯一的标识。一般来说,可以保证这个值是真正唯一的任何地方产生的任意一个UUID都不会有相同的值。UUID是基于当前时间、计数器(counter)和硬件标识(通常为无线网卡的MAC地址)等数据计算生成的。

使用方法:

UUID.randomUUID()



这篇关于5.1、Java常用类的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程