jdk提供的一个带任意精度的不可变的数值类型;内部提供用于控制数值精度的各种操作方法。
Bigdecimal(Double d)
Bigdecimal(String s)
相加运算 add()
相减运算 subtract()
相乘运算 multiply()
相除运算 divide()
指定数值的n次方 pow()
设置精度和取舍模式 setScale()
public static void main(String[] args) {
BigDecimal a = new BigDecimal("100");
BigDecimal b = new BigDecimal("20");
System.out.println(a.add(b));
System.out.println(a.subtract(b));
System.out.println(a.multiply(b));
System.out.println(a.divide(b));
System.out.println(a.pow(2));
System.out.println(a.setScale(3,BigDecimal.ROUND_HALF_UP));
}
在实际开发过程中,需要对一些数值数据(金钱,百分比),做特别的格式显示,在jdk中提供了用于实现这些功能的抽象类
java.text.numberformat,该类可以用于对数值数据或字符串数据提供格式化或者解析的相关功能
fornat:将double值按照指定的格式工具,格式化为字符串
parse:将double值按照指定的格式化工具,解析为number对象返回某区域的货币格式 getCurrencylnstance()
返回某区域的百分比 getPercentlnstance()
返回某区域的通用数字格式 getlnstance()
NumberFormat nf1 = NumberFormat.getCurrencyInstance(Locale.US);
NumberFormat nf2 = NumberFormat.getPercentInstance();
NumberFormat nf3 = NumberFormat.getInstance();
System.out.println(nf1.format(100));
System.out.println(nf2.format(0.5));
System.out.println(nf3.format(10.3));
如果需要自定义格式,就可以使用DecimalFormat来定制个性化,他是Numberformat提供的一个子类
DecimalFormat(String pattern)
DecimalFormat df = new DecimalFormat(",###.#");
System.out.println(df.format(1054354.4536));
DecimalFormat df2 = new DecimalFormat("##.##'#'");
System.out.println(df2.format(0.76));
日期时间相关的API,java.util.date
date() 默认1970-01-01开始到当前的毫秒数转换为当前时间
date(long |)指定一个毫秒数得出时间日期
after():判断当前日期是否在指定日期之后
before():判断当前日期是否在指定日期之前
getTime():返回当前日期所表示的毫秒数
System.out.println(new Date()); //输出当前时间
System.out.println(System.currentTimeMillis()); //1970年到当前时间的毫秒数
Date d = new Date(165348927428l);
System.out.println(d); //当前毫秒数对应的年份日期
System.out.println(new Date().after(d)); //判断是否在指定日期之后
System.out.println(new Date().before(d)); //判断是否在指定日期之前
System.out.println(new Date().getTime()); //返回日期的毫秒数
默认的date类显示的日期格式不符合中国人的阅读习惯,因此jdk提供了对日期进行格式化的解析工具类:
java.text.dateformat,是一个抽象类,dateformat内部包含了一些静态工厂方法,返回特定的格式化对象
获得一个时间日期的格式化对象: getDateTimelnstance()
获得日期格式化对象:getDatelnstance()
获得时间格式化对象:getTimelnstance
format() 将date格式化为字符串
parse() 将字符串表示的日期解析为date对象
DateFormat df = DateFormat.getDateTimeInstance();
System.out.println(df.format(new Date())); //时间日期的格式化对象
DateFormat df1 = DateFormat.getDateInstance();
System.out.println(df1.format(new Date())); //日期格式化对象
DateFormat df2 = DateFormat.getDateTimeInstance();
System.out.println(df2.format(new Date())); //时间格式化对象
System.out.println(df.parse("2022-06-21 11:23:54")); //将指定格式化日期时间转换为date对象
dateFormat无法满足所有格式化需求,所以他为我们提供的了一个子类simpleDateformat,让我们可以定制时间日期格式,满足多样化需求
SimpleDateformat(String pattern)
//将date对象格式化输出
Date d = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
System.out.println(sdf.format(d));
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss");
System.out.println(sdf1.format(d));
//格式化日期转换为date对象
String birthday = "2000年02月22日";
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd日");
System.out.println(sdf2.parse(birthday));
正则表达式最早源于Perl语言,并不是java的特有技术,其语言(php/python/javaScript)都对正则表达式提供支持,是用英文单词对特殊符号或者字符串进行处理操作:匹配、查找、替换;使用固定的匹配模式对字符串进行筛选等操作,比如比较常见的验证或者爬虫技术
元字符匹配
元字符 | 说明 |
. | 匹配除了换行符以外的任意字符 |
\W | 匹配非字母或数字 |
\w | 匹配字母或数字 |
\d | 匹配数字 |
\D | 匹配非数字 |
\S | 匹配非空白字符 |
^ | 匹配字符串开头 |
$ | 匹配字符串结尾 |
[0-9] | 匹配数字 |
[a-zA-Z] | 匹配字母 |
[^0-9] | 匹配非数字 |
语法 | 说明 |
* | 重复0次或多次 |
+ | 重复一次到多次 |
? | 重复0次到一次 |
{n} | 重复n次 |
{n,} | 重复至少n次到多次 |
{n,m} | 重复最少n次,最多m次 |
{0,m} | 重复0次到m次 |
泛型就是参数化类型(将一种数据类型作为参数传递),可以将原本使用Object类型标的数据类型通过参数化类型来表示,将问题的解决方案提前到编译期间