SheepDog1998

博客园 首页 新随笔 联系 订阅 管理

接常见工具类-高级篇(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

 

 

 

 

 

 

 

 

 

 

posted on 2021-04-14 20:22  SheepDog1998  阅读(71)  评论(0)    收藏  举报