java常用类

常用类

Object类

Object类的几个特性

  • 超类,基类 ,所有类的间接或者直接的父类;
  • Object 类中的所有方法,在所有的对象中都能够使用;
  • Object 可以存储任何的对象

Object 中的常用方法

  1. public final Class<?> getClass():返回的是一个class类型
public static void main(String[] args){
    Student s1 = new Student();
    Student s2 = new Student();
    if (s1.getClass() == s2.getClass()){
        System.out.print("s1和s2属于同一类型");
    }else{
    	System.out.print("s1和s2不属于同一类型");
    }
}
  1. public int hashCode():返回的是一个哈希码值

    • 哈希值是根据 对象的地址 或者 字符串 或者 数字 使用哈希算法计算出来的int类型的数值;
    • 一般,相同对象返回相同的哈希值;
    • 哈希值 也可以理解为 对象的地址;
  2. public String toString ():返回一个字符串,但是一般会在实体类中重写该方法

  3. public boolean equals(Object obj)

public boolean equals(Object obj) {
    //注意:这里比较的是两个对象的地址
	return this == obj;
}

包装类

什么是包装类

  • 基本数据类型对应的引用数据类型
  • Object 可用于接收所有的数据, 包装类的默认值都是 null

注:基本数据类型创建后,存储在栈中;包装类创建后,存储在堆中。

基本数据类型和对应的包装类

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

装箱和拆箱

  1. 装箱

    //将基本数据类型转换成包装类(从栈转换成堆),就叫装箱
    public static void main (String[] args){
        int i = 100;
        integer integer01 = i;
    }    
    
  2. 拆箱

    //将包装类转换成基本数据类型(从堆转换成栈),就叫拆箱
    public static void main (String[] args){
        integer integer01 = 100;
        int int01 = integer;
    }    
    

注:包装类 Byte,Short, Integer, Long, Float, Double 都继承了Number类;

基本数据类型和字符串之间的的转换

  1. int >>>> String
int age = 100;
String str = Integer.toString(age);
  1. String >>>> int
String str = "150";		//注意:str的字符串中只能是数字
int i = Integer.parseInt(str);
  1. String >>> boolean
// str 为" true"转换成true  非"true"转换成false
String str = "true";
Boolean flag = Boolean.parseBoolean(str);

包装类 String

  • 创建String对象的字符串后,字符串是不能改变的,改变的指向的地址;

1608615692(1)

  • 字符串字面值存储在字符串池中,可以实现共享

1608615925(1)

  • String 常用方法

    public int length():返回字符串的长度
    public char charAt(int index):返回字符的所在坐标
    public boolean contains(String str):判断是否包含str
    public char[] toCharArray():将字符串转换成char数组
    public String trim():去掉字符创收尾的空格
    public String toUpperCase():将小写转换成大写
    public boolean endWith(String str):判断是以str为结尾的
    public String replace(char oldChar,char newChar):将旧的字符替换成新的字符,返回一个先的字符串
    

可变字符串 StringBuffer 和 StringBuilder

  1. StringBuffer 速度比String快,但比StringBuilder慢,线程安全;

  2. StringBuilder速度快,但是线程不安全,建议单线程时使用;

  3. StringBuffer 和 StringBuilder的常用方法(两者相同)

    StringBuffer sb = new StringBuffer;
    sb.append("java");//在字符串的后面追加"java"
    sb.insert(0,"java");//在下标为0的位置,添加“java”
    sb.delete(0,5);//删除0到4的字符
    sb.replace(0,5,"java");//将下标0到4的字符替换成"java"  上面的三个都能用replace()来实现
    

BigDecimal

  • 比较 double float 和 BigDecimal

    • double,float由于存储方式的原因(存储的是一个近似值),所以在计算后的结果会出现误差
    • BigDecimal 存储是直接存储的方式,所以计算的结果没有误差;精确计算浮点数;
  • BigDecimal 的创建及使用

    
    BigDecimal bd1 = new BigDecimal("1.0");
    BigDecimal bd2 = new BigDecimal("0.9");
    //减法
    bd1.subtract(bd2);
    //加法
    bd1.add(db2);
    //乘法
    bd1.multiply(bd2);
    //除法 参数的2是保留两位小数 最后一个参数是四舍五入
    bd1.divide(bd2,2,BigDecimal.ROUND_HALF_UP);
    

Date类

概念

  • Date表示特定的瞬间,精确到毫秒
  • Date中大部分的方法都被Calendar 所取代;

还没有 被弃用的方法

public static void main(String[] args) {
        //此时此刻的时间
        Date date01 = new Date();
        //昨天的时间
    	//getTime()获取1970 01 01到现在的毫秒值
        Date date02 = new Date(date01.getTime()-60*60*24*1000);

        //after()   before():判断时间在另一个时间的前面还是后面返回结果为boolean
        boolean r1 = date01.after(date02);//r1的结果为true
        boolean r2 = date01.before(date02);//r1的结果为false

        //compareTo():比较两个时间 ,返回int值
        int i1 = date01.compareTo(date02);//i1=1
        int i2 = date01.compareTo(date01);//i2=0
        int i3 = date02.compareTo(date01);//i3=-1
        
    	//打印时间
        System.out.println(date01.toString());
        System.out.println(date02.toLocaleString());
}

Calendar类

概念

  • Calendar 提供了获取或设置各种日历字段的方法;
  • 构造方法
    • protected Calendar() :由于是protected修饰的,所有无法直接的创建对象;

常用方法

  • static Calendar getInstance() 提供静态的方法创建Calendar对象;
  • void set(int year,int month,int hourofday,int minute,int second) 设置日历的年,月,日,时,分,秒;
  • int get (int field) 返回给定日历字段的值;
  • void setTime(Date date) 用给定的Date设置日历的时间;
  • Date getTime() 返回一分Date对象的日历时间;
  • void add(int field,int amount) 按照日历的规则,给指定字段添加或减少时间量;
  • long getTimeInMillise() 毫秒为单位返回该日历的时间值;

SimpleDateFormat类

概念

  • SimpleDateFormat 是个一语言环境有关的方式来格式化和解析日期的实现类;

  • 格式化日期 :将日期转换成字符串;解析日期:将字符串转换成日期;

  • 常用的时间模式字母

    字母 日期或时间
    y
    M 月份
    d 天数
    H 一天中的小时数(0-23)
    m 分钟
    s
    S 毫秒

实例

public static void main(String[] args) {
        //将日期转换成字符串
        //实例化SimpleDateFormat 的参数为转换后字符串的格式
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
        Date date = new Date();
        String str = sdf.format(date);
        System.out.println(str);  //输出为“2020年12月23日”
}

public static void main(String[] args) throws ParseException {
        //将字符串转换成日期
        //实例化SimpleDateFormat 的参数为转换后日期的格式
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
        Date date = new Date();
        String str = "1997年9月9日";
        date = sdf.parse(str);
        System.out.println(date);     //输出为“Tue Sep 09 00:00:00 CST 1997”
}

System类

概念

  • System系统类,主要用于获取系统的属性数据和其他操作,构造方法为私有的,不能实例化;

  • 常用方法

    • static long currentTimeMillis(); 获取当前系统时间,返回的是一个毫秒值;

版权声明:本文为ylrcblogs原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/ylrcblogs/p/14178056.html