常用类—封装类、String、StringBuilding、StringBuffer、日期类、Math、Random、枚举

一、封装类

package com.java.test;

/*
* 封装类常用方法
* */

public class Test01 {
    public static void main(String[] args) {
        int a = 10;

        Integer integer = new Integer(10);//封装类的定义方式1

        /*非静态方法*/

        int i = integer.compareTo(5);//比较连个数字的值,integer比5大返回1,比5小返回-1,等于5返回0
        double v = integer.doubleValue();//将整数转换为小数
        int i1 = integer.intValue();//将Integer转换为int类型

        /*静态方法*/

        Integer valueOf = Integer.valueOf(10);//封装类的定义方式2
        int i2 = Integer.parseInt("123");//将字符串类型转换为int类型
        int compare = Integer.compare(1,2);//比较两个数
        Integer integer1 = Integer.getInteger("123");//将字符串转换为Integer
        int max = Integer.max(1, 2);//返回最大值
        int min = Integer.min(1, 2);//返回最小值
        String s = Integer.toBinaryString(11);//十进制转二进制
        String s1 = Integer.toOctalString(11);//十进制转八进制
        String s2 = Integer.toHexString(11);//十进制转十六进制

        /*静态属性*/

        int maxValue = Integer.MAX_VALUE;
        int minValue = Integer.MIN_VALUE;

        /*将字符串转换为基本数据类型*/

        byte b = Byte.parseByte("123");
        short i3 = Short.parseShort("123");
        int i4 = Integer.parseInt("123");
        long l = Long.parseLong("21123");
        float v1 = Float.parseFloat("123.2");
        double v2 = Double.parseDouble("123.2");
        boolean aTrue = Boolean.parseBoolean("true");

        /*Character类型没有该方法*/

    }
}

(1)八个类名中,除了Integer和Character类以外,其它六个类的类名和基本数据类型一致,只是类名的第一个字母大写而已

(2)八个类中,除了Character和Boolean以外,其他的都是“数字型“,“数字型”都是java.lang.Number的子类。

(3)Integer类提供了一个静态内部类IntegerCache,对于定义一个静态数组cache,长度为256,赋值为-128—127。对于自动装箱时如果是-128—127范围内的数据,直接获取数组的指定值;对于这个范围之外的数据,通过new Integer()重新创建对象。这么做的目的是提高效率。导致的结果是通过valueOf定义的Integer类型的变量数值在-128—127之间的会直接获取静态数组cache中定义好的对象。

(4)int i = 5; Integer j = i; 该过程就是自动装箱。        Integer i = 5; int j = i; 该过程就是自动拆箱。自动装箱过程是通过调用封装类valueOf()方法实现的,而自动拆箱过程是通过调用封装类 xxxValue()方法 实现的(xxx代表对应的基本数据类型,如intValue()、doubleValue()等)。

(5)基本数据类型和封装类进行比较:将封装类型转换为基本数据类型再进行比较—自动调用xxxValue()方法(自动拆箱)。

二、字符串类

String:字符串类型,由“  ”引起来的若干字符

字符串常量池:JDK源码当中,对这个字符串常量池的定义其实是一个哈希表。

特点:如果以前有这个字符串常量,那么就不会重复的进行储存。换句话说String类型是不可变的

StringBuilder 和 StringBuffer 与 String的区别是String代表不可变的字符序列 是无法修改的,而StringBuilder 和 StringBuffer代表可变字符序列 是可以修改的。

StringBuffer StringBuilder 大部分功能是相似的
StringBuffer 采用同步处理,属于线程安全操作;而 StringBuilder未采用同步处理,属于线程不安全操作。

三、日期类

(1)Date类(获取时间)

在标准Java类库中包含一个Date类。它的对象表示一个特定的瞬间,精确到毫秒。在网上商城下单时,在对报销单进行审核时,都需要获取当前的时间,通过Date类就可以完成。

package com.java.test;

import java.util.Date;

public class Test04 {
    public static void main(String[] args) {
        System.out.println(System.currentTimeMillis());//时刻值
        Date date = new Date();
        System.out.println(date.toString());
        /*
        * java.util.Date和java.sql.Date相互转换
        * 方法:借助于长整型的时刻值
        * */
        java.sql.Date date1 = new java.sql.Date(date.getTime());
        System.out.println(date1);
        Date date2 = new Date(date1.getTime());
        System.out.println(date2);
    }
}

 (2)DateFormat类(格式化)

DateFormat是一个抽象类,一般使用它的的子类SimpleDateFormat类来实现。主要作用就是把时间对象转化成指定格式的字符串。反之,把指定格式的字符串转化成时间对象。

package com.java.test;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Test05 {
    public static void main(String[] args) throws ParseException {
        //构造方法参数列表,表示日期格式
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        Date date = new Date();
        String format = simpleDateFormat.format(date);//将日期类型转换为字符串类型

        Date parse = simpleDateFormat.parse(format);//将字符串类型转换为日期类型
    }
}

(3)Calendar类(日历类)

Calendar 类是一个抽象类,为我们提供了关于日期计算的相关功能,比如:年、月、日、时、分、秒的展示和计算。GregorianCalendar 是 Calendar 的一个具体子类,提供了世界上大多数国家/地区使用的标准日历系统。

优点:便于日期|时间的计算

package com.java.test;

import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

public class Test06 {
    public static void main(String[] args) {
        GregorianCalendar gcr = new GregorianCalendar();//创建日期类
        gcr.add(Calendar.YEAR,1);//年份+1
        gcr.set(1999,9,19);//设置年月日
        gcr.set(Calendar.YEAR,1999);//设置年
        int actualMaximum = gcr.getActualMaximum(Calendar.DATE);//获取这个月有多少天
        System.out.println(gcr.get(Calendar.YEAR));//获取年份
        int i = gcr.get(Calendar.DAY_OF_WEEK);//获取今天是这个星期的第几天,星期日是第一天
        int i1 = gcr.get(Calendar.MONTH);//获取月,从0-11

        Date date = new Date();
        gcr.setTime(date);//将日期设置到日历类中
        
    }
}

四、Math类

java.lang.Math提供了一系列静态方法用于科学计算;其方法的参数和返回值类型一般为double型。如果需要更加强大的数学运算能力,计算高等数学中的相关内容,可以使用apache commons下面的Math类库。

五、Random类

Math类中虽然为我们提供了产生随机数的方法Math.random(),但是通常我们需要的随机数范围并不是[0, 1)之间的double类型的数据,这就需要对其进行一些复杂的运算。如果使用Math.random()计算过于复杂的话,我们可以使用例外一种方式得到随机数,即Random类,这个类是专门用来生成随机数的,并且Math.random()底层调用的就是Random的nextDouble()方法。

六、枚举

定义枚举要使用enum关键字。 所有的枚举类型隐性地继承自 java.lang.Enum。枚举实质上还是类!而每个被枚举的成员实质就是一个枚举类型的实例,他们默认都是public static final修饰的。可以直接通过枚举类型名使用它们。

注意: 需要定义一组常量时,推荐使用枚举类型;

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值