String Date BigInteger BigDecimal 常用类

常用类

SimpleDateFormat 重要

new Date() 获取到当前系统时间: Sat Apr 09 09:36:18 CST 2022

进行转换: yyyy-MM-dd hh:mm:ss 日期字符串

用户输入Scanner, 输入日期只能是一个字符串 "1993-12-12" 需要把String转换为Date

使用SimpleDateFormat: 进行日期与String之间转换, 位于java.text包下: 父类: 抽象类 DateFormat

创建对象 构造方法

pattern: 日期格式表达式字符串: 比如: yyyy-MM-dd hh:mm:ss

日期每一部分的 标识符:

常用方法:

1.把日期转换为字符串

String format(Date 日期) 从DateFormat继承的

  1. 把指定日期格式字符串转换为日期

    Date parse(String s) 抛一个ParseException

 public static void main(String[] args) {
        Date now = new Date(); //得到当前系统时间
        System.out.println(now);  //Sat Apr 09 09:50:59 CST 2022
        //把日期转换为指定格式: yyyy-MM-dd   2022-04-09
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        //调用format() 方法进行转换
        String dateStr = sdf.format(now);
        System.out.println(dateStr);  //2022-04-09
​
​
        Scanner input = new Scanner(System.in);
        System.out.println("请输入您的出生日期(yyyy-MM-dd):");
        String  birthdayStr = input.next();
        //把birthdayStr字符串转换为Date类型
        SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
        //调用parse()
        try {
            Date birthday = sdf1.parse(birthdayStr);
            System.out.println(birthday);
        } catch (ParseException e) {
            // 字符串的格式与SimpleDateFormat的pattern匹配,抛这个异常
            e.printStackTrace();
        }
​
    }

Calendar 日历类, 替换java.util.Date

设置年,月,日, 时,分秒 位于java.util包 Calendar 是抽象类: 子类: GregorianCalendar

  • public abstract class Calendar

创建对象

1) 调用子类的构造方法创建Calendar对象

  1. 调用Calendar类的static方法: static Calendar getInstance(); 推荐

public static Calendar getInstance()  //Calendar返回的是基于默认时区的当前时间

常用方法

      获取指定日期部分的值

int get(int field)   //field 日期部分

  1. 设置日期

  2. 日期相加

    add(int field, int amount)

  3. Calendar对象转换Date

    Date getTime()

    Calendar的getTime() //把Calendar对象转换Date

    Date的getTime() 获取日期的毫秒值

  4. 把Date转换为Calendar

    setTime(Date date)

枚举

学生类, 性别属性: (男,女) ,姓名, 年龄

现在性别是男女:

第一种方式: setSex() 方法进行通过代码判断

 public void setSex(String sex) {
        //限制  通过逻辑代码实现
       if("男".equals(sex) ||"女".equals(sex)  ){
            this.sex = sex;
        }else{
            throw new RuntimeException("性别只能是男或者女,不能是:"+sex);
        }
    }

缺点:

  1. 编写逻辑代码: if--else

  2. 检查是在代码运行的时候,才会判断

第二种方式: 男,女作为一个常量, 要求给sex属性赋值, 把常量赋值给sex属性

public class Student {
    //定义男女的两个常量
    public static final String MAN = "男";
    public static final String  WOMAN = "女";
}
​
​
 stu.setSex(Student.MAN);

经验:

开发过程中, 善用常量: 避免"魔法数字" ,可读性

使用常量缺点:

  1. 无法检查, 很弱的限制, 口头限制,代码无法限制

好处: 可读性高

第三种: 使用私有构造方法, 提供两个公开静态的本类对象, 显示这个类的对象个数

/**
 * 性别类,
 *   使用对象,   sex 只有 两个对象:  男的对象 ,女的对象
 */
public class Sex {
    //Sex定义两个常量, 本类的对象
    public static final Sex MAN = new Sex();
    public static final Sex WOMAN = new Sex();
​
    //私有的构造方法  表示这个构造方法只能在本类使用
    private Sex(){
​
    }
​
    //提供公开的静态方法, 调用本类的构造方法,创建一个对象,返回
    //public static  Sex createInstance(){
    //    return new Sex();
    //}
}

偷懒:

public static final 类 省略: MAN ,WOMAN MAN 等同于: public static final Sex MAN = new Sex();

构造方法默认就是private修饰

public enum Sex{

MAN,WOMAN

}

JDK 为了简化上面的代码. 提供 enum (枚举) , 还是一个类

/**
 * 枚举
 *   如果一个类的对象有限个数, 列举出来,使用枚举
 */
public enum SexEnum {
    MAN,WOMAN
}
​

1.enum和class、interface的地位一样

2.使用enum定义的枚举类默认继承了java.lang.Enum,而不是继承Object类。枚举类可以实现一个或多个接口。

3.枚举类的所有实例都必须放在第一行展示,不需使用new 关键字,不需显式调用构造器。自动添加public static final修饰。

4.使用enum定义、非抽象的枚举类默认使用final修饰,不可以被继承。

5.枚举类的构造器只能是私有的。

枚举类的父类java.lang.Enum: 父类有两个属性:

1) name: 枚举的对象的名字, name() 获取对象名字

2) ordinal: 枚举对象下标 ordinal() 获取对象的下标

枚举使用场景: 某个类的对象有限个数, 需要列举出来, 可以使用枚举

比如: 季节类: 春夏秋冬 季节类定义枚举

BigInteger, BigDecimal 大整数, 大小数

int.long,double 存的位数有限, double还有精度问题: 0.1+0.2 !=0.3

解决上面问题: 提供BigInteger,BigDecimal 存放无限大小的数字, BigDecimal 解决小数精度问题

位于 java.math包

创建对象

BigInteger(String val) 
BigDecimal(String val)     

常用方法

加减乘除

add(BigDecimal augend)   //加
subtract(BigDecimal subtrahend)    //减
multiply(BigDecimal multiplicand)   //承
divide(BigDecimal divisor)      //除
    
转换为基本数据类型:
  int intValue()
  long longValue()
  double  doubleValue()
  String toString() 
  setScale(保留小数位, BigDecimal.ROUND_HALF_UP)  //四舍五入

注意:在实际开发中,关于金钱方面的,不会使用double类型,而是使用java.math.DigDecimal类型。

或者: 单位不是使用元作为单位, 使用分作为单位, 1.99元 --> 199分

重点: String, Date

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: BigInteger转换为BigDecimal可以通过BigDecimal的构造函数来实现,将BigInteger作为参数传递给BigDecimal构造函数即可。 例如: BigInteger bigInteger = new BigInteger("12345678901234567890"); BigDecimal bigDecimal = new BigDecimal(bigInteger); 这样就将BigInteger型的bigInteger转换为了BigDecimal型的bigDecimal。 ### 回答2: BigIntegerBigDecimal都是Java中处理大数的BigInteger表示不可变的任意精度整数,而BigDecimal表示不可变的任意精度十进制数。 要将BigInteger转换为BigDecimal,可以使用BigDecimal的构造方法来完成转换。BigDecimal的构造方法接受一个BigInteger型的参数,可以直接将BigInteger转换为相应的BigDecimal对象。 以下是将BigInteger对象转换为BigDecimal对象的示例代码: ```java BigInteger bigInteger = new BigInteger("1234567890"); BigDecimal bigDecimal = new BigDecimal(bigInteger); ``` 上述代码中,首先创建了一个BigInteger对象bigInteger,其值为"1234567890"。然后使用BigDecimal的构造方法将bigInteger转换为相应的BigDecimal对象bigDecimal。 通过以上代码,我们成功将BigInteger对象转换为BigDecimal对象。这样就可以继续使用BigDecimal提供的各种方法进行高精度的数值计算。 需要注意的是,由于BigDecimal表示的是十进制数,而BigInteger表示的是整数,所以在转换时可能会导致精度的损失或受到舍入模式的影响。因此,在进行大数计算时,需要根据具体的需求选择合适的转换方式和精度控制。 ### 回答3: 在Java中,BigIntegerBigDecimal是数字处理中非常常用的两个BigInteger用于处理任意长度的整数,而BigDecimal用于处理任意精度的小数。 要将BigInteger转换为BigDecimal,可以使用BigDecimal的构造函数。BigDecimal有一个可以接受BigInteger值的构造函数,这样可以将BigInteger的值转换为BigDecimal。 以下是一个简单的示例代码,演示如何将BigInteger转换为BigDecimal: ```java import java.math.BigDecimal; import java.math.BigInteger; public class BigIntegerToBigDecimal { public static void main(String[] args) { BigInteger bigInteger = new BigInteger("1234567890"); BigDecimal bigDecimal = new BigDecimal(bigInteger); System.out.println("BigInteger: " + bigInteger); System.out.println("BigDecimal: " + bigDecimal); } } ``` 在上述示例中,我们首先创建了一个BigInteger对象(bigInteger),并将其初始化为1234567890。然后,我们使用BigDecimal的构造函数将bigInteger转换为BigDecimal(bigDecimal)。最后,我们将bigIntegerbigDecimal的值输出到控制台上。 输出结果: BigInteger: 1234567890 BigDecimal: 1234567890 通过这种方式,我们可以将BigInteger转换为BigDecimal,用于处理高精度的小数计算。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值