接常见工具类-高级篇(1)
String类的常用方法:
String[] split(String regex):按照指定字符串拆分原字符串,得到一个字符串型数组
String str = "aa,bb,cc,dd"; String[] arr = str.split(","); System.out.println(Arrays.toString(arr)); //结果 [aa, bb, cc, dd]
String replace(char oldChar, char newChar):将字符串中某个字符替换成新字符,返回一个新的字符串
String str = "I 爱 Java!"; String strNew = str.replace('a', 'A'); System.out.println(strNew); //结果 I 爱 JAvA!
String toUpperCase():将字符串中所有字符转换成大写,返回一个新的字符串
String toLowerCase(): 将字符串中所有字符转换成小写,返回一个新的字符串
String str = "aa,BB,cc,dd"; System.out.println(str.toUpperCase()); System.out.println(str.toLowerCase()); //结果 AA,BB,CC,DD aa,bb,cc,dd
char charAt(int):返回字符串中指定索引处的字符
int length():返回字符串长度(包含空格的)
//给定一个字符串,计算字符串中A出现的次数 int count=0; System.out.println("请输入一个字符串:"); String str = new Scanner(System.in).nextLine(); for(int i=0;i<str.length();i++){ if(str.charAt(i)=='A'){ count++; } } System.out.println("字符串中A出现的次数:"+count); //结果: 请输入一个字符串: Aaaapple A 字符串中A出现的次数:2
String substring(int begin):返回的是从索引值begin开始的子字符串
String substring(int begin,int end):返回的是从索引值begin开始到end-1结束的子字符串
String str = "abcdefghij"; System.out.println(str.substring(5)); System.out.println(str.substring(2,7)); //结果 fghij cdefg
int indexOf/lastIndexOf():返回的是指定字符(字符串)在原字符串中第一次/最后一次出现的索引
String str = "abcdabcdabcd"; System.out.println(str.indexOf('a'));//0 System.out.println(str.indexOf("cd"));//2 System.out.println(str.indexOf('c',6));//6 System.out.println(str.indexOf('c',7));//10 System.out.println(str.lastIndexOf('a'));//8 //Strng.indexOf(substring) //搜索String中的substring,默认从0位开始; //String.indexOf(substring,m) //搜索String中的substring, 默认从第m位开始;
//判断邮箱是否合法,要求:邮箱中只能有一个@ String email = "renych@126.com"; if(email.indexOf('@')==email.lastIndexOf('@')){ System.out.println("合法"); }
StringBuffer sbf = new StringBuffer("study"); String str = sbf.toString(); if(str.indexOf('a') != -1){ System.out.println("字符串中包含a"); }else{ System.out.println("字符串中不包含a"); } //结果 字符串中不包含a
String trim():去除字符串的前后空格,返回一个新的字符串
String str = " fdgd fdgf fghg "; System.out.println(str.trim()); //结果 fdgd fdgf fghg
String concat(String str):将指定字符串连接在该字符串的结尾处
String str1 = "1234"; String str2 = "5678"; System.out.println(str1.concat(str2));
StringBuffer类:可变的字符序列
StringBuffer(String str) 构造一个初始化为指定字符串内容的字符串缓冲区
append():在原字符串后面追加新内容
insert():在字符串中指定位置插入新的内容
toString():将StringBuffer转换成String类型
StringBuffer sbf = new StringBuffer("study"); sbf.append(" hard"); sbf.append(" !!!"); System.out.println(sbf); sbf.insert(0, "I must "); System.out.println(sbf); //结果 //study hard !!! //I must study hard !!!
StringBuilder类:可变的字符序列 使用方式和StringBuffer完全相同,但是StringBuffer是线程安全的,StringBuilder是线程不安全的。所以推荐使用StringBuffer。
线程安全:多个线程并发访问统一数据类对象时,不会出现数据混乱的问题。
日期类:
java.util.Date:用于构建系统时间等
java.sql.Date:用于和数据库交互
构造器:
new Date() 构建当前系统时间
getTime() 用来获取时间的毫秒数 (从1970-01-01)
常用的方法:after() before() compareTo() equals()
Date now = new Date(); System.out.println(now); System.out.println(now.getTime()); Date date = new Date(); System.out.println(date.getTime()); System.out.println(now.equals(date)); //结果 Thu Apr 15 00:40:41 CST 2021 1618418441891 1618418441966 false
Calendar类:
java.util 抽象类
获取系统时间:Calendar c = Calendar.getInstance();
Calendar类中年份的数值直接书写,月份的值为实际的月份值减1,日期的值就是实际的日期值。
获取指定日期:
Calendar c2 = Calendar.getInstance(); int year = c2.get(Calendar.YEAR); //年份
修改指定日期:obj.set(年,月,日); 例:c.set(2010, 10, 10); c.set(Calendar.YEAR, 2020);
public void set(int field,int value) 在该方法中,参数field代表要设置的字段的类型,常见类型如下: Calendar.YEAR——年份 Calendar.MONTH——月份 Calendar.DATE——日期 Calendar.DAY_OF_MONTH——日期,和上面的字段完全相同 Calendar.HOUR——12小时制的小时数 Calendar.HOUR_OF_DAY——24小时制的小时数 Calendar.MINUTE——分钟 Calendar.SECOND——秒 Calendar.DAY_OF_WEEK——星期几 后续的参数value代表,设置成的值。例如: c1.set(Calendar.DATE,10); 该代码的作用是将c1对象代表的时间中日期设置为10号,其它所有的数值会被重新计算,例如星期几以及对应的相对时间数值等。
获取指定日期中的参数:???
//例:
Calendar c = Calendar.getInstance(); System.out.println(c); c.set(2010, 10, 10); System.out.println(c); c.set(Calendar.YEAR, 2020); System.out.println(c); System.out.println(c.get(Calendar.YEAR)+"年"+(c.get(Calendar.MONTH)+1)+"月"+c.get(Calendar.DATE)+"日"+c.get(Calendar.DAY_OF_WEEK)); //结果 java.util.GregorianCalendar[time=1618419344417,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2021,MONTH=3,WEEK_OF_YEAR=16,WEEK_OF_MONTH=3,DAY_OF_MONTH=15,DAY_OF_YEAR=105,DAY_OF_WEEK=5,DAY_OF_WEEK_IN_MONTH=3,AM_PM=0,HOUR=0,HOUR_OF_DAY=0,MINUTE=55,SECOND=44,MILLISECOND=417,ZONE_OFFSET=28800000,DST_OFFSET=0] java.util.GregorianCalendar[time=?,areFieldsSet=false,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2010,MONTH=10,WEEK_OF_YEAR=16,WEEK_OF_MONTH=3,DAY_OF_MONTH=10,DAY_OF_YEAR=105,DAY_OF_WEEK=5,DAY_OF_WEEK_IN_MONTH=3,AM_PM=0,HOUR=0,HOUR_OF_DAY=0,MINUTE=55,SECOND=44,MILLISECOND=417,ZONE_OFFSET=28800000,DST_OFFSET=0] java.util.GregorianCalendar[time=?,areFieldsSet=false,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2020,MONTH=10,WEEK_OF_YEAR=16,WEEK_OF_MONTH=3,DAY_OF_MONTH=10,DAY_OF_YEAR=105,DAY_OF_WEEK=5,DAY_OF_WEEK_IN_MONTH=3,AM_PM=0,HOUR=0,HOUR_OF_DAY=0,MINUTE=55,SECOND=44,MILLISECOND=417,ZONE_OFFSET=28800000,DST_OFFSET=0] 2020年11月10日3
Calendar类中的其它方法:
add()方法:
add(int field,int amount):该方法的作用是在Calendar对象中的某个字段上增加或减少一定的数值,增加时amount的值为正,减少时amount的值为负。
after()方法:
after(Object when):该方法的作用是判断当前日期对象是否在when对象的后面,如果在when对象的后面则返回true,否则返回false。
Calendar c1 = Calendar.getInstance(); c1.add(Calendar.DATE, 100); c1.add(Calendar.DATE, 7); System.out.println(c1.get(Calendar.YEAR)+"年"+(c1.get(Calendar.MONTH)+1)+"月"+c1.get(Calendar.DATE)+"日"); Calendar c2 = Calendar.getInstance(); System.out.println(c1.after(c2)); //结果 2021年7月31日 true
getTime()方法:
该方法的作用是将Calendar类型的对象转换为对应的Date类对象,两者代表相同的时间点。
类似的方法是setTime(),该方法的作用是将Date对象转换为对应的Calendar对象。setTime(Date date)
转换的示例代码如下: Date d = new Date(); Calendar c6 = Calendar.getInstance(); //Calendar类型的对象转换为Date对象 Date d1 = c6.getTime(); //Date类型的对象转换为Calendar对象 Calendar c7 = Calendar.getInstance(); c7.setTime(d);
SimpleDateFormat类:
实现日期和字符串之间的转换
获取SimpleDateFormat的实例如下:
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

format():将日期类型装换成字符串类型
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date now = new Date(); String dateStr = sdf.format(now); System.out.println(dateStr); //结果 2021-04-15 01:22:17
parse():将字符串的日期转换成日期类型
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); String str = "2010-02-03"; Date d = sdf.parse(str); System.out.println(d); //结果 Wed Feb 03 00:00:00 CST 2010
Math类:
提供和数学运算相关的方法 所有的成员都是static的 都是用类名去访问
floor():返回小于等于参数的最大double值
ceil():返回大于参数的最小double值
round():四舍五入 返回整数
random():获取随机数 0~1
System.out.println(Math.E); System.out.println(Math.PI); System.out.println((int)Math.floor(2.56)); System.out.println((int)Math.ceil(2.56)); System.out.println(Math.round(2.46)); System.out.println(Math.random()); //结果 2.718281828459045 3.141592653589793 2 3 2 0.8997436196919716
//返回一个1~10范围内的随机数 int num = (int)Math.ceil(Math.random()*10); System.out.println(num);
DecimalFormat()
DecimalFormat是NumberFormat的一个具体子类,通常使用DecimalFormat的构造方法来生成格式,例如:NumberFormat nf=new DecimalFormat("0.00");
System.out.println(new DecimalFormat("0").format(3.1415)); System.out.println(new DecimalFormat("0.0").format(3.1415)); System.out.println(new DecimalFormat("0.000").format(3.1415)); long l = 15645312121L; System.out.println(new DecimalFormat(",###").format(l)); //结果 3 3.1 3.142 15,645,312,121
2021-4-15
浙公网安备 33010602011771号