| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> 第五章 Java基础类库 -> 正文阅读 |
|
[Java知识库]第五章 Java基础类库 |
目录 ? ? ? ?(1)Scanner sc = new Scanner(System.in); ? ? ? ? (1)System类(当前Java程序的运行平台) ? ? ? (2)Runtime类(Java程序的运行时环境) ? ? ? ? (1)Object类(所有类、数组、枚举类的父类) ? ? ? ? (2)Objects类(Object类的工具类) ? ? ? ? (4)StringBuffer和StringBuilder类 ? ? ? ? (1)Date时间类,SimpleDateFormat时间格式类 ? ? ? ? (3)LocalDateTime时间类,DateTimeFormatter格式化日期类 ? ? ? ?(6)ChronoUnit类(用于计算时间间隔) 一、获取键盘输入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.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....) |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 12:00:46- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |