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不能被实例化,成员都是被静态修饰,通过类名直接调用
方法名 | 说明 |
---|---|
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作为超类,所有对象(包括数组)都实现了这个类的方法
为什么说子类的构造方法默认访问的是无参构造方法?因为它们的顶级父类只有无参构造方法
返回的一个由类的名称,其中所述对象时实例,该符号字符的字符串“@”,并且对象的哈希码的无符号十六进制表示
public String toString(){ return getClass().getName()+"@"+Integer.toHexString(hashCode()); }
比较对象是否相等,默认比较地址,重写可以比较内容。
public boolean equals(Object obj){ //比较的是两个对象的地址值 return (this==obj); }
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 |
常用的操作之一:用于基本数据类型与字符串之间的转换
包装一个对象中原始类型为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);
方法:包装类 对象名称=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); }
代表了一个特定的时间,以毫秒为精度
方法名 | 说明 |
---|---|
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);
用于以区域设置敏感的方式格式化和解析日期,重点学习日期格式化和解析
模式字母 | 对应关系 |
---|---|
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 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+"天");