目录
(4)StringBuffer和StringBuilder类
(1)Date时间类,SimpleDateFormat时间格式类
(3)LocalDateTime时间类,DateTimeFormatter格式化日期类
一、获取键盘输入:Scanner
(1)Scanner sc = new Scanner(System.in);
方法:① sc.hasNext() 是否还有下一个输入项
sc.nextXXX() 获取下一个输入项
② sc.hasNextLine() 是否还有下一行输入项
sc.nextLine() 获取下一行输入项
二、系统相关类:System和Runtime
(1)System类(当前Java程序的运行平台)
方法:①System.getenv(); 获取系统所有环境变量
②System.getenv(”JAVA_HOME“); 获取指定的系统环境变量,例:JAVA_HOME
③System.getProperties(); 获取所有的系统属性
④System.getPropertiy(”os.name“); 获取指定的系统属性,例:os.name
⑤System.currentTimeMillis(); 以毫秒为单位获取系统当前时间
⑥System类的in(输入)、out(输出)、err(错误输出)
⑦System.indentityHashCode(); 指定对象的精确hashCode值
⑧System.gc(); 通知系统进行垃圾回收
⑨System.runFinalization(); 通知系统进行资源清理
⑩System.exit(int status); 终止当前正在运行的Java虚拟机
(2)Runtime类(Java程序的运行时环境)
Runtime rt = new Runtime();
方法:① rt.availableProcessors(); 运行时的处理器数量
② rt.freeMemory(); 空闲内存数
③ rt.totalMemory(); 总内存数
④ rt.maxMemory(); 可用的最大内存
⑤ rt.exec("notepad.exe") 运行程序,例:记事本
三、常用类
(1)Object类(所有类、数组、枚举类的父类)
因为所有Java类都是Object类的子类,所以任何Java对象都可以直接调用Object方法;(注:⚪表示当前方法的引用对象)
方法: ① ⚪.equlas(Object obj); 判定指定对象和当前对象是否相等
② ⚪.finalize(); 当对象没用变量引用时,该方法可以清理引用对象的资源
③ ⚪.getClass(); 返回当前对象的运行时class类
④ ⚪.hashCode(); 返回当前对象的hashCode值
⑤ ⚪.toString(); 返回当前对象的字符串表示
⑥ ⚪.clone(); 克隆生成当前对象的副本(实现Cloneable接口的类才可以克隆)
(2)Objects类(Object类的工具类)
当引用变量为null时,调用变量的toString()方法就会引发NullPonterExcetpion异常.所以有些方法建议使用Objects类的方法;
方法: ①Objects.hashCode(Object obj); 输出对象的hashCode值
②Objects.toString(Object obj); 输出对象的字符串表示
(3)String类
String类在创建后对象中字符序列不可改变,直至销毁.
String str = new String();
方法:①str.compareTo(String s); 比较当前两个字符串的大小
②str.equals(Object obj); 与对象比较是否相等
③str.equalsIgnoreCase(Object obj); 不区分大小写的,对象比较是否相等
④str.getBytes(); 字符串转换为byte数组
⑤str.indexOf(String s,int index); 字符或字符串在该字符串的index位置开始,第一次出现位置(index可不写,表示字符串s在当前字符串第一次出现位置)
⑥str.lastIndexOf(String s,int index); 字符或字符串在该字符串的index位置开始,最后一次出现位置(index可不写,表示字符串s在当前字符串中最后一次出现位置)
⑦str.length(); 字符串的长度
⑧str.startsWith(String s,int index); 当前字符串从index开始,是否是字符串s开头(index可不写,表示当前字符串是否以s开头)
⑨str.endsWith(String s,int index); 当前字符串从index开始,是否是字符串s结尾(index可不写,表示当前字符串是否以s结尾)
⑩str.subString(int from,int end); 字符串截取从from位置到end位置的子字符串
⑪str.toCharArray(); 字符串转换成字符数组
⑫str.toLowerCase(); 字符串转换成小写
⑬str.toUpperCase(); 字符串转换成大写
⑭str.splt(String s); 以字符串s为断点,截取当前字符串
⑮str.valueOf(X x); 将基本类型转换为String字符串
(4)StringBuffer和StringBuilder类
StringBuffer和StringBuilder类是一个字符序列可以改变的字符串. StringBuffer是线程安全,而StringBuilder是线程不安全,StringBuilder的性能要比StringBuffer高.
StringBuilder sb = new StringBuilder();
方法:①sb.append(String s); sb字符串后面追加字符串s
②sb.insert(int index,String s) ; sb字符串在index位置追加字符串s
③sb.replace(int from,int end,String s); 将sb字符串从from到end位置替换为字符串s
④sb.delete(int from,int end); 删除sb字符串的from到end位置
⑤sb.reverse(); 反转字符串
⑥sb.length(); 字符串长度
(5)Math类(数学工具类)
主要用于完成复杂的数学运算.Math类的构造器定义为private,无法创建Math对象,可以直接通过类名调用,并且Math类还提供了两个变量:PI和E,它们的值相当于π和e.
方法:①Math.floor(double a); 取整,返回小于a的最大整数
②Math.ceill(double a); 取整,返回大于a的最小整数
③Math.sqrt(double a); 计算a的平方根
④Math.cbrt(double a); 计算a的立方根
⑥Math.pow(double a,double b); 计算乘方,结果为a的b次方,a ^ b
⑦Math.max(double a,double b); 计算两个数a,b中的最大值
⑧Math.min(double a,double b); 计算两个数a,b中的最大值
⑨Math.random(); 返回大于等于0.0且小于1.0的随机数
⑩Math.round(double a); 计算a的四舍五入
⑪Math.abs(double a); 计算a的绝对值,| a |
(6)BigDecimal类(浮点数计算)
在计算小数时,用float或double类型时会发生精度缺失.所以Java提供了BigDecimal类用于精确的计算浮点数.
BigDecimal bd = new BigDecimal(String s); 参数为String类型
BigDecimal bd = BigDecimal.valueOf(double d); 参数为double类型
方法:①bd.add(BigDecimal bdo); 加法,bd + bdo
②bd.subtract(BigDecimal bdo); 减法,bd - bdo
③bd.multiply(BigDecimal bdo); 乘法,bd * bdo
④bd.divide(BigDecimal bdo); 除法,bd / bdo
四.日期时间类
(1)Date时间类,SimpleDateFormat时间格式类
Date类从JDK1.0开始使用,是用来处理时间和日期.但此类的大部分构造器和方法都已过时,所以此类了解即可.
SimpleDateFormat类为格式化Date时间类.
Date date = new Date();
方法:①date.getTime(); 获取时间毫秒,返回当前时间距离1970年1月1日的时间差
②date.setTime(long l); 设置时间;
③date.after(Date d); 当前时间是否在时间d之后
④date.before(Date d); 当前时间是否在时间d之前
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
方法:①sdf.format(Date d); 将d的Date类型格式化为String类型
②sdf.parse(String s); 将s的String类型格式化为Date类型
(2)Calender日期类
因为Date类在设计上存在缺陷,所以Java提供Calender日期类替代Date类来处理时间和日期.
Calender c = Calender.getInstance();
方法:①c.getTime(); 将Calender日期类转化为Date类,返回Date对象
②c.setTime(Date d); 将Date类转化为Calender日期类,返回Calender对象
③c.add(int field,int num); 添加或减去时间量
④c.get(int field); 获取时间,如年YEAR
⑤c.set(int field,int num); 设置时间
(3)LocalDateTime时间类,DateTimeFormatter格式化日期类
JDK8提供的新的时间日期类,使用率比较大的.
LocalDateTime ldt = LocalDateTime.now(); 获取当前时间的LocalDateTime对象
方法:①ldt.getYear(); 获取年
②ldt.getMonthValue(); 获取月份(1-12)
③ldt.getDayOfMonth(); 获取月份中的第几天(1-31)
④ldt.getDayOfYear(); 获取一年中的第几天(1-366)
⑤ldt.getDayOfWeek(); 获取星期
⑥ldt.getMinute(); 获取分钟
⑦ldt.getHour(); 获取小时
⑧ldt.plusYears(long years); 添加或减去年
⑨ldt.plusMonths(long months); 添加或减去月
⑩ldt.plusDays(long days); 添加或减去日
⑪ldt.plusHours(long hours); 添加或减去时
⑫ldt.withYear(int year); 修改年
⑬ldt.withMonth(int month); 修改月
⑭ldt.withDayOfYear(int day); 修改日期,一年中第几天
⑮ldt.withDayOfMonth(int day); 修改日期,一年中第几月
⑯ldt.toLocalDate(); 转换为LocalDate日期类对象
⑰ldt.toLocalTime(); 转换为LocalTime时间类对象
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")
⑱ldt.format(DateTimeFormatter dtf); 将LocalDateTime对象格式化成字符串
⑲LocalDateTime.parset(String s,DateTimeFormatter dtf) 将日期字符串解析成LocalDateTime对象,此处为直接类方法调用.
(4)Period日期间隔类
此类可用于计算两个日期的差,参数类型必须是以日为单位的日期类,如LocalDate类型.
Period pe = Period.between(LocalDate ldt1,LocalDate ldt2);
方法:①pe.getYears(); 计算这段时间的年数
②pe.getMonths(); 计算这段时间的月份
③pe.getDays(); 计算这段时间的天数
④pe.getTotalMonths(); 计算这段时间的总月数
(5)Duration时间间隔类
此类可用于计算两个时间的差,参数类型必须以秒为单位的时间类.如LocalTime和LocalDateTime类型
Duration du = Duration.between(LocalDateTime ldt1, LocalDateTime ldt1);
方法:①du.toSeconds(); 获取此时间间隔的秒
②du.toMillis(); 获取此时间间隔的毫秒
③du.toNanos(); 获取此时间间隔的纳秒
(6)ChronoUnit类(用于计算时间间隔)
JDK8提供的枚举类,提供基于单元的访问来操纵日期,可用于计算时间间隔.(常用)
方法:①ChronoUnit.DAYS.between(Temporal tem1, Temporal tm2); 用来计算两个日期的时间差.(DAYS是计算天数的,可换成YEARS,MONTHS或HOURS....)