Arrays 的工具类
Arrays 作为工具类有两个常用的方法
1、Arrays.toString(int[]) 返回指定数值内容的字符串表示形式
2、Arrays.sort(int[]) 按照数值顺序排列指定的数组、
public class Demo {
public static void main(String[] args) {
int[] arr= {24,69,80,57,13};
System.out.println("排序前"+ Arrays.toString(arr));
Arrays.sort(arr);
System.out.println("排序后"+ Arrays.toString(arr));
}
}
输出:
排序前[24, 69, 80, 57, 13]
排序后[13, 24, 57, 69, 80]
工具类的设计思想:
- 构造方法用 private 修饰
- 成员方法用 public static 修饰
Interger包装类的使用
Integer 类的构造方法
Integer i =Integer.valueOf(100);
System.out.println(i);
Integer i2 =Integer.valueOf("100");
System.out.println(i2);
// 这个会报错,必须是数字类型的字符串
Integer i3 =Integer.valueOf("abc");
System.out.println(i3);
int 和String类型的相互转换
int->String
// int->String
int num=100;
// 方式一
String s1 = ""+num;
System.out.println(s1);
// 方式二 利用String的方法
String s2 = String.valueOf(100);
System.out.println(s2);
String->int
// String->int
//方式一 String->Integer->int
String s3 = "100";
Integer i3= Integer.valueOf(s3);
int i4 = i3.intValue();
System.out.println(i4);
// 方式二
int i5 = Integer.parseInt("100");
System.out.println(i5);
一个案例:
// 案例
// "91 27 46 38 50" 进行排序输出
String s = "91 27 46 38 50";
String[] ss=s.split(" ");
int[] arr=new int[ss.length];
for (int i = 0; i < ss.length; i++) {
// System.out.println(ss[i]);
arr[i]=Integer.parseInt(ss[i]);
}
// 排序
Arrays.sort(arr);
// 定义
StringBuilder sb = new StringBuilder();
for (int i = 0; i < arr.length; i++) {
if(i==arr.length-1){
sb.append(arr[i]);
}else {
sb.append(arr[i]).append(" ");
}
}
String result = sb.toString();
System.out.println(result);
装箱:把基本数据类型转换为对应的包装类类型
拆箱:把包装类类型转换为基本的数据类型
Date 日期类
java.util 包下
Date 类代表了特定的时间,以毫秒的精度
两种构造方法
Date d1 = new Date();
System.out.println(d1);
long date = 1000*60*60;
Date d2= new Date(date);
System.out.println(d2);
Sun May 09 14:51:45 CST 2021
Thu Jan 01 09:00:00 CST 1970
常用方法:
getTIME()
setTime()
// 获取毫秒值
Date d1= new Date();
System.out.println( d1.getTime());
long time=1000*60*60;
long time1=System.currentTimeMillis();
System.out.println(time1);
// 给定毫秒值,给定时间
d1.setTime(time);
System.out.println(d1);
SimpleDateFormat 类
用于区域设置敏感的格式格式化和解析日期。它允许格式化和解析以及规范化
y->Year 年
M-> month in year 月
d->Day in month 日
H->Hour in day(0-23) 时
m->Mintue in hour 分
s->Second in minute 秒
重点了解日期格式化和解析
构造方法
方法:
1、格式化(从Date到String) format
2、解析(从String 到 Date)parse
//格式化
Date d = new Date();
SimpleDateFormat sdf = new SimpleDateFormat();
String s = sdf.format(d);
System.out.println(s); // 21-5-9 下午3:07 这种无参的模式不是我们想要的
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
String s1 = sdf1.format(d);
System.out.println(s1); // 2021年05月09日 15:08:55
// 解析 从String 到 Date
String ss = "2021-05-09 11:11:11";
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date dd = sdf2.parse(ss);
System.out.println(dd); //Sun May 09 11:11:11 CST 2021
日期工具类
方法1: 把日期转换为制定格式的字符串
方法2:把字符串转换为指定格式的日期
public class DateUtils {
private DateUtils(){
}
public static String dateToString(Date date, String format){
SimpleDateFormat sdf = new SimpleDateFormat(format);
String s = sdf.format(date);
return s ;
}
public static Date stringToDate(String s, String format) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat(format);
Date date = sdf.parse(s);
return date;
}
public static void main(String[] args) throws ParseException {
Date d = new Date();
String s = DateUtils.dateToString(d,"yyyy年MM月dd日 HH:mm:ss");
System.out.println(s);
String s2 = DateUtils.dateToString(d,"yyyy年MM月dd日");
System.out.println(s2);
System.out.println("--------");
String s3 = "2021-07-09 12:12:12";
Date d2= DateUtils.stringToDate(s3,"yyyy-MM-dd HH:mm:ss");
System.out.println(d2);
// 2021年05月09日 15:21:50
//2021年05月09日
//--------
//Fri Jul 09 12:12:12 CST 2021
}
}
Calendar 日历类 是抽象类
public static void main(String[] args) {
// 获取日历对象
java.util.Calendar c = java.util.Calendar.getInstance();// 多态的形式
System.out.println(c);
// 获取日历字段的值
int year = c.get(java.util.Calendar.YEAR);
int month = c.get(java.util.Calendar.MONTH)+1;// 这里的月份是从0 开始的
int day = c.get(java.util.Calendar.DAY_OF_MONTH);
System.out.println(year+"年"+month+"月"+day+"日");
//2021年5月9日
}
常用的方法
// add 方法 public abstract void add(int field,int amount) 根据日历的规则,将指定的时间量添加或减去给定的日历字段
c.add(java.util.Calendar.YEAR,-3); // 求三年前的今天
int year = c.get(java.util.Calendar.YEAR);
int month = c.get(java.util.Calendar.MONTH)+1;// 这里的月份是从0 开始的
int day = c.get(java.util.Calendar.DAY_OF_MONTH);
System.out.println(year+"年"+month+"月"+day+"日");
// 2018年5月9日
// public final void set(int year,int month,int date) 设置当前日历的年月日
c.set(2022,10,22);
int year = c.get(java.util.Calendar.YEAR);
int month = c.get(java.util.Calendar.MONTH)+1;// 这里的月份是从0 开始的
int day = c.get(java.util.Calendar.DAY_OF_MONTH);
System.out.println(year+"年"+month+"月"+day+"日");
// 2022年11月22日
案例:获取任意一年的二月有多少天
思路:
获取日历对象
设置日历对象的年为输入的年份,月份为2,因为从0开始,date设置为1。
然后利用add方法对date字段进行减1的操作。
最后获取data字段的值,即为该年2月份的天数。
Scanner s = new Scanner(System.in);
System.out.println("请输入年份:");
int year = s.nextInt();
// 设置日历对象的年月日
java.util.Calendar c = java.util.Calendar.getInstance();
c.set(year,2,1);
c.add(java.util.Calendar.DATE,-1);
int date = c.get(java.util.Calendar.DATE);
System.out.println(year+"年2月一共有"+date+"天");
// 请输入年份:
// 2008年2月一共有29天
}