概述
文章目录
- 替换功能
- 正则表达式
- StringBuffer
- String,StringBuffer,StringBuilder区别
- 功能
- Math类
- Random类
- System类
- Date类
- Calendar类
- SimpleDateFormat 类
- BigInteger_BigDecimal
替换功能
package api1.stringdemo;
public class StringTihuan {
public static void main(String[] args) {
/*
替换功能
String replace(char old,char new)
String replace(String old,String new)
replaceAll(String regex, String replacement)
replaceFirst(String regex, String replacement)
去除字符串两空格 String trim()
*/
String s=" abcde fg ";
String s1=s.replace("cd","CC");
System.out.println(s1); // abCCe fg
System.out.println(s.length()); //10 字符串长度包括10
System.out.println(s.trim()); //abcde fg
System.out.println(s.trim().length()); //8
/*
String s="ab2cd3ef5g";
String[] ss=s.split("\d");
System.out.println(Arrays.toString(ss)); //[ab, cd, ef, g] */
String s="abcdefcdg";
String s1=s.replaceAll("cd","CC");
System.out.println(s1); //abCCefCCg
String s2=s.replaceFirst("cd","CC");
System.out.println(s2); //abCCefcdg
}
}
正则表达式
正则 表达式
规则
是一种字符串模式匹配语言
指定规则:手机号规则
package api1.stringdemo;
import java.util.Arrays;
import java.util.Scanner;
public class StringZhengze {
/*
替换功能
replaceAll(String regex, String replacement)
replaceFirst(String regex, String replacement)
*/
public static void main(String[] args) {
/*
String s="ab2cd3ef5g";
String[] ss=s.split("\d");
System.out.println(Arrays.toString(ss)); //[ab, cd, ef, g] */
String s="abcdefcdg";
String s1=s.replaceAll("cd","CC");
System.out.println(s1); //abCCefCCg
String s2=s.replaceFirst("cd","CC");
System.out.println(s2); //abCCefcdg
/*
正则 表达式
规则
是一种字符串模式匹配语言
指定规则:手机号规则
注册手机号
手机号 15111111111 11位 数字 以1开头 ---格式
邮箱 wrwuert7254632@re23.com
*/
/*Scanner s=new Scanner(System.in);
System.out.println("请输入手机号");
String phone=s.next(); */
//凡是程序中有输入的地方 必须对输入内容做验证
//验证phone这个字符串是否为手机号? phone.legth()==11 phone.charAt(0)==1
//boolean matches(String regex)
/*
. 任何字符(与行结束符可能匹配也可能不匹配)
d 数字:[0-9]
D 非数字: [^0-9]
s 空白字符:[ tnx0Bfr]
S 非空白字符:[^s]
w 单词字符:[a-zA-Z_0-9]
W 非单词字符:[^w]
X? X,一次或一次也没有
X* X,零次或多次
X+ X,一次或多次
X{n} X,恰好 n 次
X{n,} X,至少 n 次
X{n,m} X,至少 n 次,但是不超过 m 次
X|Y X 或 Y
*/
String x="ab";
boolean res=x.matches("a"); //用字符串对象中matchse("正则表达式")
System.out.println(res); //false 做验证 不匹配为false
String x1="12345678901";
//boolean res1=x1.matches("\d?"); //用字符串对象中的matches("正则表达式"); 一次或一次也没有 11为false
//boolean res1=x1.matches("\d*"); //零次或多次
//boolean res1=x1.matches("\d*"); //一次或多次
//boolean res1=x1.matches("\d{11}"); //恰好11次
//boolean res1=x1.matches("\d{11,}"); //至少11次
boolean res1=x1.matches("\d{1,11}"); //至少1次 但不超过11次
System.out.println(res1); //不是数字 false
//手机号格式规则
boolean res2=s.matches("1[35789]\d{9}");
System.out.println(res2); //第一位为1,第二位为3/5/7/8/9,后面有九位[数字]
//qq 数字 6--12 第一位没有0
boolean qq="012345".matches("[1-9]\d{5,11}");
System.out.println(qq); //第一位是1到9,后面有5-11位
//通用邮箱格式 \. 对.号进行转义
boolean res="fgd3AA73@163qq.com.cn".matches("\w{6,10}@\w{2,5}\.(com|com\.cn)");
System.out.println(res);
}
}
StringBuffer
我们如果对字符串进行拼接操作,每次拼接,都会构建一个新的String 对象,既耗时,又浪费空间。字符串扩容
String,StringBuffer,StringBuilder区别
- String:
是字符常量,适用于少量的字符串操作的情况
值不能变 底层 final char [] value;
一旦需要改变值,必须重新创建一个String value=value+111; - StringBuffer:
适用多线程下在字符缓冲区进行大量操作的情况
添加synchronized 同步锁 多线程安全
值可变 char [] value 继承 AbstractStringBuilder - StringBuilder:
适用于单线程下在字符缓冲区进行大量操作的情况
没有添加同步锁 多线程不安全
值可变 char [] value 继承 AbstractStringBuilder - StringBuffer和StringBuilder功能相同,只是线程安全不同
public synchronized StringBuffer append(String str) {
toStringCache = null;
super.append(str);调用父类
return this;
}
public StringBuilder append(String str) {
super.append(str); 调用父类
return this;
}
功能
构造,添加append,删除delete,替换replace,反转reverse
package api1.stringdemo;
public class StringBufferDemo {
public static void main(String[] args) {
/*
StringBuffer线程安全的,值可变的字符串
public StringBuffer(){
super(16);
}
AbstractStirngBuilder(int capacity){
value=new char[capacity]
}
StringBuilder线程不安全的,值可变的字符串
*/
//StringBuffer s=new StringBuffer(); //创建了一个字符串对象。底层是一个char数组
//StringBuffer s1=new StringBuffer(30);
StringBuffer s=new StringBuffer("abcd"); //字符串扩容 abcd11111222223333344444
s.append("11111"); //将append里字符串添加到此序列
s.append("22222");
s.append("33333");
s.append("44444");
//s.insert(1,"xxxx"); //axxxxbcd11111222223333344444
//s.deleteCharAt(2); //abd11111222223333344444
//s.delete(0,5); //1111222223333344444 删除指定区间字符串 包含开始不包含结尾
//System.out.println(s); //底层value数组中创建,StringBuffer对象没变
//System.out.println(s.reverse()); //反转 44444333332222211111dcba
//System.out.println(s.replace(0,5,"ccccc")); //替换指定区间字符串 ccccc1111222223333344444
String ss=new String(s); //将stingBuffer对象 变成String对象,就可以使用string里的方法
}
}
Math类
java.lang.Math
提供了一系列静态方法用于科学计算;其方法的参数和 返回值类型一般为double型
package api1;
public class MathDemo {
/*
abs 绝对值
sqrt 平方根
pow(double a, double b) a的b次幂
max(double a, double b)
min(double a, double b)
random() 返回 0.0 到 1.0 的随机数
long round(double a) double型的数据a转换为long型(四舍五入)
*/
public static void main(String[] args) {
System.out.println(Math.abs(-5)); //相反数 5
System.out.println(Math.sqrt(9)); //平方根3.0
System.out.println(Math.pow(2, 3)); //次方 8.0
System.out.println(Math.random());//0.9641808089904788 随机数 大于等于 0.0 ,小于 1.0 。
System.out.println(Math.floor(9.99)); //9.0
System.out.println(Math.ceil(9.001)); //10.0
System.out.println(Math.round(9.55)); //10
System.out.println(Math.max(3, 5)); //5
}
}
Random类
import java.util.Random;
用于产生随机数
package api1;
import java.util.Arrays;
import java.util.Random;
public class RandomDemo {
public static void main(String[] args) {
/*
随机数
*/
Random r=new Random();
//System.out.println(r.nextBoolean()); 随机返回true false
System.out.println(r.nextInt()); //705359992 随机返回整数
System.out.println(r.nextLong()); //-5961209393186785663
System.out.println(r.nextFloat()); //0.35238278
System.out.println(r.nextDouble()); //0.2880023757444067
byte[] b=new byte[5]; //[0,0,0,0,0]
r.nextBytes(b);
System.out.println(Arrays.toString(b)); //[48, -113, -40, -101, -41]
}
}
System类
包含一些有用的类字段和方法。它不能被实例化。
package api1.system;
import java.util.Arrays;
public class SystemDemo {
public static void main(String[] args) {
//PrintStream out
System.out.println("11");
System.out.println(Person.phone.no);
//System 里面包含了一些对于系统信息相关的方法
//System.exit(0); //退出 停止虚拟机
//System.out.println("aaaaaaaaaaaaa");
//自1970-1-1 0:0:0 至程序运行那一刻的时间差
long a=System.currentTimeMillis(); //1647767762714
System.out.println(a);
/*for(int i=0;i<10000;i++){
System.out.println(i);
}
System.out.println(System.currentTimeMillis()-a); */
//System.out.println(System.gc()); //运行垃圾回收器
System.out.println(System.getenv()); //拿到操作系统的信息
System.out.println(System.getenv("Path"));
//数组复制
int[] b={1,2,3,4,5};
int[] ints= Arrays.copyOf(b,10);
//返回一个指定长度的新数组,把原数组值填充进去
System.out.println(Arrays.toString(ints)); //[1, 2, 3, 4, 5, 0, 0, 0, 0, 0]
int[] c={1,2,3,4,5};
int[] d=new int[10];
/*
src 原数组
srcpos 原数组起点
dest 目标数组
destpos 目标数组起点
length 要复制的数量
*/
System.arraycopy(c,0,d,4,c.length);
System.out.println(Arrays.toString(b)); //[1, 2, 3, 4, 5]
}
}
Date类
import java.util.Date;
代表当前系统时间
package api1;
import java.util.Date;
public class DateDemo {
//使用Date类代表当前系统时间
public static void main(String[] args) {
/* 无参构造
Date date=new Date(); //创建一个日期对象,里面包含程序运行时那一刻的时间
System.out.println(date.getYear()+1900);//获得年 过期方法 可以使用 只是官方不推荐
System.out.println(date.getMonth()+1); // 0开始
System.out.println(date.getDate()); //月中的第几天
System.out.println(date.getDay()); //周中的第0天 从0开始 0-星期天
System.out.println(date.getHours());
System.out.println(date.getMinutes());
System.out.println(date.getSeconds());
System.out.println(date.getTime()); */
//有参构造
Date date=new Date(1621735853158L);
date.setMonth(7);
System.out.println(date.getMonth()+1); //8
System.out.println(date.getHours()); //10
System.out.println(date.getMonth()); //7
System.out.println(date.getHours()); //10
System.out.println(date.getMinutes()); //10
System.out.println(date.getSeconds()); //53
System.out.println(date); //Mon Aug 23 10:10:53 CST 2021
System.out.println(date.toLocaleString()); //根据本地区习惯输出一个字符串格式的时间 2021-8-23 10:10:53
}
}
Calendar类
import java.util.Calendar;
import java.util.GregorianCalendar;
是抽象类 不能创建对象
使用时实现特定的子类的对象,创建对象的过程对程序员来说是透明的,只需要使用getInstance方法创建
GregorianCalendar c = new GregorianCalendar();//直接new子类对象
package api1;
import java.util.Calendar;
import java.util.GregorianCalendar;
public class CalendarDemo {
public static void main(String[] args) {
//是抽象类 不能创建对象
//使用时实现特定的子类的对象,
//创建对象的过程对程序员来说是透明的,只需要使用getInstance方法创建
//Calendar c=Calendar.getInstance(); 返回是子类对象
GregorianCalendar c = new GregorianCalendar();//直接new子类对象
c.set(2002,5,10);
//System.out.println(c.getTime()); //Mon Jun 10 18:11:55 CST 2002
System.out.println(c.get(Calendar.YEAR)); //2002
System.out.println(c.get(Calendar.MONTH)+1); //6
System.out.println(c.get(Calendar.DAY_OF_MONTH)); //10
System.out.println(c.get(Calendar.DAY_OF_WEEK)); //2
System.out.println(c.get(Calendar.DAY_OF_YEAR)); //161 一年中第几天
}
}
SimpleDateFormat 类
日期格式化类
BigInteger_BigDecimal
import java.math.BigInteger;
import java.math.BigDecimal;
BigInteger:大整数 可以表示任意整数
可以准确地表示任何 大小的整数值而不会丢失任何信息
add(),subtract(),multiply(),divide()
BigDecimal:计算机是二进制的,浮点数会失去 一定的精确度。
根本原因是:十进制值通常没有完全相同的二进制表示形式;
十进制数的二进制表示形式可 能不精确。只能无限接近于那个值
package api1;
import java.math.BigInteger;
public class BigIntegerDemo {
public static void main(String[] args) {
/*
BigInteger 大整数 可以表示任意整数
可以准确地表示任何 大小的整数值而不会丢失任何信息
add(),subtract(),multiply(),divide()
*/
BigInteger a=new BigInteger("11111111111111111111111111111117899997777777777777777777");
BigInteger b=new BigInteger("555555555555555555555555555555555555555588888888888888888888");
BigInteger c=a.add(b);
System.out.println(c);
}
}
package api1;
import java.math.BigDecimal;
public class BigDecimalDemo {
public static void main(String[] args) {
/*
计算机是二进制的,浮点数会失去 一定的精确度。
根本原因是:十进制值通常没有完全相同的二进制表示形式;
十进制数的二进制表示形式可 能不精确。只能无限接近于那个值
*/
double d=10.5;
System.out.println(10.5-10.4); //0.09999999999999964
BigDecimal a=new BigDecimal("122222222222222222222233333333333333333333333311111111");
BigDecimal b=new BigDecimal("12.4");
System.out.println(a.subtract(b)); //122222222222222222222233333333333333333333333311111098.6
}
}
最后
以上就是细腻故事为你收集整理的javaSE第五章_<API常用类(2)>【替换,正则表达式,StringBuffer类,Random类,System类,Date-Calendar,BigInteger_BigDecimal】的全部内容,希望文章能够帮你解决javaSE第五章_<API常用类(2)>【替换,正则表达式,StringBuffer类,Random类,System类,Date-Calendar,BigInteger_BigDecimal】所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复