文章目录
工具类的设计思想:构造方法用private修饰;成员用public static修饰
Math
Math包含执行基本数字运算方法,通过类名就可以直接调用
常用方法
方法名 | 说明 |
---|---|
public static int abs(int a) | 返回参数的绝对值 |
public static int ceil(double a) | 返回大于或等于参数的最小double值,等于一个整数 |
public static int floor(double a) | 返回小于或等于参数的最小double值,等于一个整数 |
public static int round(float a) | 按照四舍五入返回最接近参数的int |
public static int max(int a,int b) | 返回两个int值的较大值 |
public static int min(int a,int b) | 返回两个int值的较小值 |
public static double pow(double a,double b) | 返回a的b次幂的值 |
public static double random() | 返回值为double的正值,[0.0,1.0) |
常用方法举例
//返回参数的绝对值
System.out.println(Math.abs(-10));
//返回大于或等于参数的最小double值,等于一个整数
System.out.println(Math.ceil(12.11));
//返回小于或等于参数的最小double值,等于一个整数
System.out.println(Math.floor(12.11));
//按照四舍五入返回最接近参数的int
System.out.println(Math.round(23.1));
//返回两个int值的较大值
System.out.println(Math.max(12, 23));
//返回两个int值的较小值
System.out.println(Math.min(12, 23));
//返回a的b次幂的值
System.out.println(Math.pow(2, 4));
//返回值为double的正值,[0.0,1.0)
System.out.println(Math.random());
System
System不能被实例化,成员都是被静态修饰,通过类名直接调用
常用方法
方法名 | 说明 |
---|---|
public static void exit(int status) | 终止当前运行的java虚拟机,非0表示异常终止 |
public static long currentTimeMillis() | 返回当前时间(以毫秒为单位) |
常用方法举例
//终止当前运行的java虚拟机,非0表示异常终止
System.out.println("开始");
System.exit(0);
//此时下面这行代码将无法运行,因为java虚拟机被关闭
System.out.println("结束");
//返回当前时间(以毫秒为单位)
System.out.println(System.currentTimeMillis());
//计算时间
long start =System.currentTimeMillis();
for (int i = 0; i < 10000; i++) {
System.out.println(i);
}
long end=System.currentTimeMillis();
System.out.println("共耗时:"+(end-start)+"毫秒");
Object
是类层次的根,每个类都有Object作为超类,所有对象(包括数组)都实现了这个类的方法
为什么说子类的构造方法默认访问的是无参构造方法?因为它们的*父类只有无参构造方法
toString()方法
返回的一个由类的名称,其中所述对象时实例,该符号字符的字符串“@”,并且对象的哈希码的无符号十六进制表示
public String toString(){
return getClass().getName()+"@"+Integer.toHexString(hashCode());
}
equal()方法
比较对象是否相等,默认比较地址,重写可以比较内容。
public boolean equals(Object obj){
//比较的是两个对象的地址值
return (this==obj);
}
Arrays
Array包含用于操作数组的各种方法(包括搜索和排序),方法都用static修饰
常用方法
方法名 | 说明 |
---|---|
public static toString(int[] a) | 返回指定数组内容的字符串表示形式 |
public static void sort(int[] a) | 按照数字顺序排列指定的数组 |
常用方法举例
int[] arr= {24,69,80,57,13};
// 返回指定数组内容的字符串表示形式
System.out.println("排序前:"+Arrays.toString(arr));
//按照数字顺序排列指定的数组
Arrays.sort(arr);
System.out.println("排序后:"+Arrays.toString(arr));
基本类型包装类
将基本数据类型封装成对象的好处在意可以在对象中定义更多的方法操作该数据,最常用的操作就是用于基本类型和字符串之间的相互转换
基本数据类型和包装类的对应关系
基本数据类型 | 包装类 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
常用的操作之一:用于基本数据类型与字符串之间的转换
Integer
包装一个对象中原始类型为Int值
常用方法
方法名 | 说明 |
---|---|
public Integer(int value) | 根据int值创建Integer对象(过时) |
public Integer(String s) | 根据String值创建Intefer对象(过时) |
public static Integer valueOf(int i) | 返回表示指定的int值的Integer实例 |
public static Integer valueOf(String s) | 返回一个保存指定值的Integer对象String |
常用方法举例
Integer integer=new Integer(100);
System.out.println(integer);
Integer integer2=new Integer("123");
System.out.println(integer2);
Integer integer3=Integer.valueOf(100);
System.out.println(integer3);
Integer integer4=Integer.valueOf("123");
System.out.println(integer4);
字符串String、数组、数据类型转换
将基本的数据类型转换为包装类(装箱)
方法:包装类 对象名称=new 包装类(基本数据类型)
int i=3;
Integer integer=new Integer(i);
将包装类对象转换为基本数据类型(拆箱)
方法:调用包装类对应的xxxValue()
int i1=integer.intValue();
jdk1.5版本之后支持自动装箱和拆箱
/*****自动装箱*****/
Integer i2=5;
/*****自动拆箱*****/
int i3=i2;
字符串转换成基本数据类型
方法:通过包装类的parseXxx(String s)静态方法
String string="12";
int a=Integer.parseInt(string);
将基本数据类型转换成字符串
方法:String.valueOf(基本数据类型)
String s=String.valueOf(3);
字符串转换成包装类
方法:调用包装类构造器,将字符串作为形参传入即可
Integer integer2=new Integer("222");
将包装类转成字符串
方法:包装类的对象.toString()
integer2.toString();
字符串中的数据排序举例
public static void main(String[] args) {
//定义字符串
String string="7 3 0 8 5";
//把字符串中的数字数据存储到一个int类型的数组
String[] strings=string.split(" ");
for (int i = 0; i < strings.length; i++) {
System.out.println(strings[i]);
}
//定义一个int数组,把String[] 数组中的每一个元素存储到int数组中
int[] arr=new int[strings.length];
for (int i = 0; i < arr.length; i++) {
arr[i]=Integer.parseInt(strings[i]);
}
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
//对int数组进行排序
Arrays.sort(arr);
//把排序后的int数组中的元素进行拼接得到一个字符串
//这里拼接采用StringBuilder来实现
StringBuilder stringBuilder=new StringBuilder();
for (int i = 0; i < arr.length; i++) {
if (i==arr.length-1) {
stringBuilder.append(arr[i]);
}else {
stringBuilder.append(arr[i]).append(" ");
}
}
//把StringBuilder类型数据转换成String数据
String string2=stringBuilder.toString();
System.out.println(string2);
}
日期类
Date
代表了一个特定的时间,以毫秒为精度
常用方法
方法名 | 说明 |
---|---|
public Date() | 分配一个Date对象,并初始化,以便他代表它被分配的时间,精确到毫秒 |
public Date() | 分配一个Date对象,并将其初始化为表示从标准基准时间起指定的毫秒数 |
public long getTime() | 获取的是日期对象从1970年1月1日00:00:00到现在的毫秒值 |
public void setTime(long time) | 设置时间,给的是毫秒值 |
常用方法举例
//代表它被分配的时间,精确到毫秒
Date date=new Date();
System.out.println(date);
//表示从标准基准时间起指定的毫秒数
long date1=1000*60*60;
Date date2=new Date(date1);
System.out.println(date2);
//获取的是日期对象从1970年1月1日00:00:00到现在的毫秒值
Date date3=new Date();
System.out.println(date3.getTime());
//设置时间,给的是毫秒值
long date1=1000*60*60;
date3.setTime(date1);
System.out.println(date3);
SimpleDateFormat
用于以区域设置敏感的方式格式化和解析日期,重点学习日期格式化和解析
常用模式字母以及对应关系
模式字母 | 对应关系 |
---|---|
y | 年 |
M | 月 |
d | 日 |
H | 时 |
m | 分 |
s | 秒 |
常用方法
方法名 | 说明 |
---|---|
public SimpleDateFormat() | 构造一个类,使用默认格式和日期格式 |
public SimpleDateFormat(String pattern) | 构造一个类,使用给定的模式和默认的日期格式 |
public final String format(Date date) | 将日期格式化成日期/时间字符串 |
public Date parse(String source) | 从给定字符串的开始解析文本以生成日期 |
常用方法举例
//将日期格式化成日期/时间字符串
Date date=new Date();
SimpleDateFormat simpleDateFormat=new SimpleDateFormat();
String string=simpleDateFormat.format(date);
System.out.println(string);
//从给定字符串的开始解析文本以生成日期
SimpleDateFormat simpleDateFormat2=new SimpleDateFormat("yyyy年 MM月 dd日 HH:mm:ss");
String string2=simpleDateFormat2.format(date);
System.out.println(string2);
Calendar
为某一时刻和一组日历字段之间的转换提供了一些方法,并为操作日历字段提供了一些方法
常用方法
方法 | 说明 |
---|---|
Calendar rightNow=Calendar.getInstance() | 类方法getInstance用于获取Calendar对象,其日历字段已使用当前日期和时间初始化 |
public int get (int field) | 返回给定日历字段的值 |
public abstract void add(int field,int amount) | 根据日历规则,将指定的时间量添加或减法去给定的日历字段 |
public final void set(int year,int month,int date) | 设置当前的年月日 |
Calendar calendar=Calendar.getInstance();
System.out.println(calendar);
int year=calendar.get(calendar.YEAR);
int month=calendar.get(calendar.MONTH)+1;
int date=calendar.get(calendar.DATE);
System.out.println(year+"年 "+month+"月 "+date+"日");
//三年前的今天
calendar.add(Calendar.YEAR, -3);
year=calendar.get(calendar.YEAR);
month=calendar.get(calendar.MONTH)+1;
date=calendar.get(calendar.DATE);
System.out.println(year+"年 "+month+"月 "+date+"日");
//十年后的五天前
calendar.add(Calendar.YEAR, +10);
calendar.add(Calendar.DATE, -5);
year=calendar.get(calendar.YEAR);
month=calendar.get(calendar.MONTH)+1;
date=calendar.get(calendar.DATE);
System.out.println(year+"年 "+month+"月 "+date+"日");
//指定日期
calendar.set(2048, 11, 11);
year=calendar.get(calendar.YEAR);
month=calendar.get(calendar.MONTH);
date=calendar.get(calendar.DATE);
System.out.println(year+"年 "+month+"月 "+date+"日");
案例:二月天
获取任意一年的二月有多少天
Scanner scanner=new Scanner(System.in);
//输入任意年份
System.out.println("请输入年份");
int year=scanner.nextInt();
//设置日历对象的年、月、日
Calendar calendar=Calendar.getInstance();
calendar.set(year, 2,1);
//3月1日往前推一天,就是2月最后一天
calendar.add(Calendar.DATE, -1);
int date=calendar.get(Calendar.DATE);
//获取这一天输出即可
System.out.println(year+"年的2月份有"+date+"天");