java学习日志day14
2019年7月16日
replaceAll
将字符串的某种元素,全部替换为指定的元素;
格式
str.replaceAll("\d","*")
对字符串中的数字排序;
把非数字字符替换;
String str = “465asd45679asd12ads”;
str = str.replaceAll("\D","");
char[] cs = str.toCharArray();
Arrays.sort(cs);
System.out.println(Arrays.toString(cs));
若匹配替换符号
str = str.replaceAll("\[//|]","")
.split(); 设定一个字符串为切割符
以匹配到的信息,进行分割,生成一个字符串数组;
前面出现多少个切割符就切出多少个空串,后面还是全切掉;
----------------------------------*
包装类
为了能快速使用基本数据类型,提供基本类型对应的类—包装类
创建出这些包装类的对象,就能使用java提供的功能,便捷操作基本
类型数据;
java提供了9种包装类
byte、short、 char、 int、 long、 float、 double、boolean、void
Byte、Short、 Charactor、 Integer Long、 Float、 Double、Boolean、Void
Void的返回值一定是null;
------------------------------*
Integer
创建Integer对象
包装类对象由基本类型数据构建而来----称之为封箱
Integer in = new Integer(4);
或者 基本类型数据直接赋值给包装类对象–自动封箱–jdk1.5开始拥有此功能
Integer in = 5;
底层为 Integer.valueOf();
包装类对象直接赋值给基本类型,称为自动拆箱;
int i = in;------自动拆箱–jdk1.5开始拥有此功能
其他类型同理;
底层依赖 包装类.valueOf();
xxValue();生成基本类型数据
只有整型才有共享范围;
整型的共享范围为-127–128;超出范围后每次返回一个新对象;
Integer的字符串用法
开头会检测字符串开头是否是+或-,后面内容不能出现非整数
Integer in = new Integer(“123”);
Boolean b = new Boolean(TrUe);布尔值会忽略大小写;
Integer.parseInt(“123”);
包装类的哈希码值都是固定的;
-----–----–--–---–**-----–----
Class Math
最终类,提供了简单的数学运算,提供了大量的静态方法
使用方法 Math.方法();
ceil向上取整
floor向下取整
round四舍五入
以下为常用方法
Math.random();提供一个伪随机小数,大于等于0.0,小于1.0;
30-50之间的整数,随机范围20
((int)30+Math.random(*20))
strictfp只能加到方法上,在底层进行运算时,可以把处理的位数,提高
到80位;
因为大部分小数的二进制的补码是无限位数,但是存储的位数是固定的
所以不能进行精确运算
运用BigDecimal进行更为精确运算
BigDecimal()括号内如果为小数则提供更精确的运算,但是不会得到实际想要的结果
BigDecimal("")括号内的数字转换为字符串形式,则就能进行理想化的精确运算
若想运算超大数的运算,则可以通过 BigInterger来进行;
BigInteger b1 = new BigInteger(“4654654564654556497897”);
BigInteger b2 = new BigInteger(“8798321132134687968878745”);
练习:用java程序实现两个整数乘法的过程;
0.00为占位符,如果这个位上有值,就把值展示出来,没有值就补0展示;
若加0.00转换为#号,则若设定的占为数上没有值,则不补0;展示原值;
DecimalFormat d = new DecimalFormat(“0.00”);----(#.#####)
String s = d.format(2.2335);
输出结果为2.23,保留两位小数;
----**-–------------–---------–**–--
时间/日期类
Date类
calendar类
Date类
Date date =new Date();
若不设定值则输出当前日期时间
System.out.println(date);
若指定具体的时间时,则会默认加上1900年1月
则设定日期时需减去1990年1月
//方法名上有黑线,则表示这个方法是过时
则表示在未来的版本可能不支持,不建议用
Date date =new Date(2008-1900,8-1,8);
可以使用
SimpleDateFormat(以字符串形式指定日期格式 例如 yyyy-MM-dddd HH:MM:ss)
yyyy-MM-dddd HH:MM:ss
String str = “20000-11-30 15:10:11”;
SimpleDateFormat dat = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);
Date date = dat.parse(str);
SimpleDateFormat dt = new SimpleDateFormat(“yyyy年MM月dd日 HH时mm分ss秒”);
String s = dt.format(date);
System.out.println(s);
//jdk1.8time包下更新 只展示日期
LocalDate f=LocalDate.now();
//加日期
System.out.println(f.plus(1,ChronoUnit.CENTURIES));