通过代码实例跟我学Java语言程序设计及应用技术——util程序包中典型类的应用实例

合集下载

Java程序员的日常——IOUtils总结

Java程序员的日常——IOUtils总结

Java程序员的⽇常——IOUtils总结常⽤的静态变量在IOUtils中还是有很多常⽤的⼀些变量的,⽐如换⾏符等等public static final char DIR_SEPARATOR_UNIX = '/';public static final char DIR_SEPARATOR_WINDOWS = '\\';public static final char DIR_SEPARATOR;public static final String LINE_SEPARATOR_UNIX = "\n";public static final String LINE_SEPARATOR_WINDOWS = "\r\n";public static final String LINE_SEPARATOR;static {DIR_SEPARATOR = File.separatorChar;StringBuilderWriter buf = new StringBuilderWriter(4);PrintWriter out = new PrintWriter(buf);out.println();LINE_SEPARATOR = buf.toString();out.close();}常⽤⽅法copy这个⽅法可以拷贝流,算是这个⼯具类中使⽤最多的⽅法了。

⽀持多种数据间的拷贝:copy(inputstream,outputstream)copy(inputstream,writer)copy(inputstream,writer,encoding)copy(reader,outputstream)copy(reader,writer)copy(reader,writer,encoding)copy内部使⽤的其实还是copyLarge⽅法。

java.util.scanner的用法

java.util.scanner的用法

如题,文章主题为“java.util.Scanner的用法”。

在本文中,将对java.util.Scanner类进行全面评估,并探讨其深度和广度的用法,以帮助读者更深入地理解这一主题。

1. Java.util.Scanner类简介java.util.Scanner是Java编程语言中的一个类,它可以用来扫描用户输入,以及从各种数据源中获取输入。

Scanner类提供了一种简便的方式来解析基本类型和字符串,因此在Java编程中被广泛使用。

2. Scanner的基本用法在Java中,我们可以使用Scanner类来获取用户的输入。

我们可以通过以下代码创建一个Scanner对象,并开始扫描用户的输入:```Scanner scanner = new Scanner(System.in);```通过这个简单的示例,我们可以看到Scanner类的基本用法。

它可以从标准输入流中获取用户的输入,并将其解析成不同的数据类型。

3. Scanner的高级用法除了简单的用户输入外,Scanner类还可以用于扫描文件、字符串等不同的数据源。

我们可以使用Scanner类的不同构造函数来指定不同的数据源,比如从文件中读取输入:```File file = new File("input.txt");Scanner scanner = new Scanner(file);```通过这种方式,我们可以利用Scanner类来处理文件输入,而无需编写复杂的输入输出代码。

4. Scanner的原理和内部机制在深入使用Scanner类时,了解它的原理和内部机制是非常重要的。

Scanner类使用了正则表达式来解析输入,因此能够支持复杂的输入格式。

在实际应用中,我们可以通过给Scanner对象指定不同的分隔符和模式来定制化地解析输入。

这为我们处理各种不同格式的输入提供了便利。

5. 总结与回顾在本文中,我们全面评估了java.util.Scanner类的用法。

idea中utils的作用

idea中utils的作用

idea中utils的作用idea中的utils是指常用工具类,它是指在实际开发中常常用到的公共方法或功能的集合。

这些工具类的作用是提供一些常用的方法或函数,以便开发人员在编写代码时可以更加快速和高效地完成任务。

一、为什么需要utils类?在实际开发中,我们经常会遇到一些常用的操作或计算,例如日期处理、字符串处理、文件操作等。

这些操作往往是与业务逻辑无关的通用操作,每次都需要重新编写,不仅繁琐而且浪费时间。

而utils类的作用就是将这些通用的操作进行封装,以供开发人员复用。

二、utils类的功能和特点1. 提供常用的方法utils类中包含了一系列常用的方法,例如日期格式化、字符串截取、文件读写等。

这些方法可以帮助开发人员实现特定的功能,从而减少了重复的代码编写。

2. 代码复用utils类的目的就是为了方便代码的复用。

通过将常用的操作进行封装,开发人员只需要调用相应的方法即可完成特定的功能,无需重写相同的代码,提高了开发效率。

3. 提高代码的可读性和可维护性由于utils类将一些常用的操作进行封装,使得代码更加简洁明了。

开发人员在阅读代码时可以更快地理解其功能,从而提高了代码的可读性。

同时,当需要修改某个功能时,只需要修改utils类中的对应方法即可,避免了在多个地方进行修改的麻烦,提高了代码的可维护性。

4. 提高开发效率由于utils类提供了常用的方法,开发人员无需从零开始编写代码,可以直接调用utils类中的方法,从而减少了开发时间。

这样可以更加专注于业务逻辑的实现,提高了开发效率。

三、utils类的使用方法1. 导入utils类在使用utils类的方法之前,需要先导入utils类。

通常情况下,utils类会以包的形式存在,开发人员只需导入相应的包即可使用utils类提供的功能。

2. 调用utils类的方法一旦导入了utils类,开发人员就可以直接调用其中的方法了。

根据utils类的设计,通常每个方法会有一些参数,这些参数用于指定方法执行的具体行为。

runtimeutil.exec 例子

runtimeutil.exec 例子

1. 简介在软件开发过程中,经常会遇到需要调用外部命令或者启动外部程序的需求。

Java编程语言提供了很多实用的类来满足这种需求,其中一个非常常用的类就是runtimeutil.exec。

runtimeutil.exec允许Java 程序调用外部命令,并获得该外部命令的执行结果。

本文将以一个实际的例子来说明如何使用runtimeutil.exec类。

2. 什么是runtimeutil.execruntimeutil.exec是Java中的一个类,它允许Java程序调用外部命令。

通过runtimeutil.exec,可以在Java程序中执行命令行程序,比如调用系统命令、启动外部应用程序或者执行一段系统脚本等。

使用runtimeutil.exec可以方便地与操作系统进行交互,同时也可以获取命令执行的结果。

3. 使用runtimeutil.exec的例子假设我们需要在Java程序中调用系统命令"ipconfig"来获取当前系统的网络配置信息。

下面是一个示例代码:```javaimport java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;public class ExecExample {public static void m本人n(String[] args) {try {Process process = Runtime.getRuntime().exec("ipconfig"); BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));String line;while ((line = reader.readLine()) != null) {System.out.println(line);}reader.close();} catch (IOException e) {e.printStackTrace();}}}```以上代码中,我们首先通过调用Runtime.getRuntime().exec()方法来执行系统命令"ipconfig",然后通过读取process.getInputStream()获取命令执行的结果,最后将结果打印到控制台上。

java.util.Date用法小结

java.util.Date用法小结

java.util.Date⽤法⼩结java中的时间操作不外乎这四种情况:1、获取当前时间2、获取某个时间的某种格式3、设置时间4、时间的运算好,下⾯就针对这三种情况,⼀个⼀个搞定。

⼀、获取当前时间有两种⽅式可以获得,第⼀种,使⽤Date类。

j2SE的包⾥有两个Date类,⼀个是java.sql.Date,⼀个是java.util.Date这⾥,要使⽤java.util.Date。

获取当前时间的代码如下Date date = new Date();date.getTime();还有⼀种⽅式,使⽤System.currentTimeMillis();这两种⽅式获得的结果是⼀样的,都是得到⼀个当前的时间的long型的时间的毫秒值,这个值实际上是当前时间值与1970年⼀⽉⼀号零时零分零秒相差的毫秒数。

当前的时间得到了,但实际的应⽤中最后往往不是要⽤这个long型的东西,⽤户希望得到的往往是⼀个时间的字符串,⽐如“2006年6⽉18号”,或“2006-06-18”,⽼外可能希望得到的是“06-18-2006”,诸如此类等等。

这就是下⼀个要解决的问题⼆、获取某个时间的某种格式获取时间的格式,需要⽤到⼀个专门⽤于时间格式的类java.text.SimpleDateFormat。

⾸先,定义⼀个SimpleDateFormat变量SimpleDateFormat sdf = new SimpleDateFormat("",Locale.SIMPLIFIED_CHINESE);这个构造函数的定义如下:SimpleDateFormat(String pattern, Locale locale)第⼀个参数pattern,我们后⾯再解释,这⾥我们使⽤⼀个"",第⼆个参数,是⽤来设置时区的,这⾥⽤到了java.util.Locale 这个类,这个类了⾯定义了很多静态变量,直接拿过来⽤就OK,我们把时区设置为Locale.SIMPLIFIED_CHINESE,只看名字,这个静态变量的意义已经很清楚了。

java.util包内容

java.util包内容

Java.util包1.java.util包简介java.util包是Java内置的一个工具包,import java.util.*;2.java.util中是常用的工具类:Date类Date类对象用来表示时间和日期;该类提供一系列操纵日期和时间各组成部分的方法;Date类最多的用途是获取系统当前的日期和时间。

Date类的构造方法有6种重载方式,以下是比较常用的几种。

Date类的构造方法:Date类的常用方法:年份 y 由整数 year - 1900 表示。

月份由从 0 至 11 的整数表示;0 是一月、1 是二月等等;因此 11 是十二月。

一月中的某天按通常方式由整数 1 至 31 表示。

小时由从 0 至 23 的整数表示。

分钟按通常方式由 0 至 59 的整数表示。

秒由 0 至 60 的整数表示;在所有情形中,针对这些目的赋予方法的参数不需要在指定的范围内;例如,可以把日期指定为 1 月 32 日,并把它解释为 2 月 1 日的相同含义。

Date类示例SimpleDateFormat类示例作用:用来格式化日期并输入使用其format()来格式化日期Calendar类Calendar类也是用来操作日期和时间的类,但它可以以整数形式检索类似于年、月、日之类的信息;Calendar类是抽象类,无法实例化,要得到该类对象只能通过调用getInstance方法来获得;Calendar对象提供为特定语言或日历样式实现日期格式化所需的所有时间字段。

Calendar类的常用方法:Calendar类示例Random类使用Random类的对象来生成随机数该类的构造方法有2种重载方式:Random类的常用方法:Random类示例 ( 可以在方法刮号里面放随机的范围 )集合集合是将多个元素组成一个单元的对象;类似于数组,但数组最大的缺点是:长度受到限制(一经创建,就不可再改变),并且只能存放相同数据类型的元素;集合的长度没有限制,可以存放任意多的元素,而且元素的数据类型也可以不同;集合还提供一系列操纵数据的方法,如存储、检索等等。

通过代码实例跟我学Java语言程序设计及应用技术——util程序包中典型类的应用实例

通过代码实例跟我学Java语言程序设计及应用技术——util程序包中典型类的应用实例

1.1util程序包中典型类的应用实例1、BigDecimal是Java提供的一个不变的、任意精度的有符号十进制数对象(1)应用BigDecimal可以提高计算的精度在商业应用开发中,涉及金额等浮点数计算的数据,全部定义为String,数据库中可定义为字符型字段,在需要使用这些数据进行运算的时候,使用BigDecimal(String)构造BigDecimal对象进行运算,保证数据的精确计算。

下面为一个工具类,定义浮点数的加、减、乘、除和四舍五入等运算方法:import java.math.BigDecimal;public class MathExtend{ //默认除法运算精度private static final int DEFAULT_DIV_SCALE = 10;public static double add(double v1, double v2){BigDecimal b1 = new BigDecimal(Double.toString(v1));BigDecimal b2 = new BigDecimal(Double.toString(v2));return b1.add(b2).doublue();}public static String add(String v1, String v2){BigDecimal b1 = new BigDecimal(v1);BigDecimal b2 = new BigDecimal(v2);return b1.add(b2).toString();}public static double subtract(double v1, double v2){BigDecimal b1 = new BigDecimal(Double.toString(v1));BigDecimal b2 = new BigDecimal(Double.toString(v2));return b1.subtract(b2).doublue();}public static String subtract(String v1, String v2){BigDecimal b1 = new BigDecimal(v1);BigDecimal b2 = new BigDecimal(v2);return b1.subtract(b2).toString();}public static double multiply(double v1, double v2){BigDecimal b1 = new BigDecimal(Double.toString(v1));BigDecimal b2 = new BigDecimal(Double.toString(v2));return b1.multiply(b2).doublue();}public static String multiply(String v1, String v2){BigDecimal b1 = new BigDecimal(v1);BigDecimal b2 = new BigDecimal(v2);return b1.multiply(b2).toString();}public static double divide(double v1, double v2){return divide(v1, v2, DEFAULT_DIV_SCALE);}public static double divide(double v1,double v2, int scale){return divide(v1, v2, scale, BigDecimal.ROUND_HALF_EVEN);}public static double divide(double v1,double v2,int scale, int round_mode){if(scale < 0) {throw new IllegalArgumentException("The scale must be a positive integer or zero");}BigDecimal b1 = new BigDecimal(Double.toString(v1));BigDecimal b2 = new BigDecimal(Double.toString(v2));return b1.divide(b2, scale, round_mode).doublue();}public static String divide(String v1, String v2){return divide(v1, v2, DEFAULT_DIV_SCALE);}public static String divide(String v1, String v2, int scale){return divide(v1, v2, DEFAULT_DIV_SCALE, BigDecimal.ROUND_HALF_EVEN); }public static String divide(String v1, String v2, int scale, int round_mode){if(scale < 0){throw new IllegalArgumentException("The scale must be a positive integer or zero");}BigDecimal b1 = new BigDecimal(v1);BigDecimal b2 = new BigDecimal(v2);return b1.divide(b2, scale, round_mode).toString();}public static double round(double v,int scale){return round(v, scale, BigDecimal.ROUND_HALF_EVEN);}public static double round(double v, int scale, int round_mode){if(scale<0){throw new IllegalArgumentException("The scale must be a positive integer or zero");}BigDecimal b = new BigDecimal(Double.toString(v));return b.setScale(scale, round_mode).doublue();}public static String round(String v, int scale){return round(v, scale, BigDecimal.ROUND_HALF_EVEN);}public static String round(String v, int scale, int round_mode){if(scale<0){throw new IllegalArgumentException("The scale must be a positive integer or zero");}BigDecimal b = new BigDecimal(v);return b.setScale(scale, round_mode).toString();}}(2)控制四舍五入1)ROUND_HALF_UP:遇到.5的情况时往上近似,例:1.5 ->;22)ROUND_HALF_DOWN:遇到.5的情况时往下近似,例: 1.5 ->;13)ROUND_CEILING:如果BigDecimal是正的,则做ROUND_UP操作;而如果为负,则做ROUND_DOWN操作。

java.util包下的类及常用方法

java.util包下的类及常用方法

java.util包下的类及常⽤⽅法1、⽇期类 Date类
常⽤⽅法
创建⽇期对象:Date date = new Date ( ) ;
获取当前时间以标准格式:date
获取当前时间的毫秒数:date.getTIme ( )
获取纪元时间:date。

toGMTString ( )
时间转成字符串:date.toString ( )
这个类的⼀些⽅法已经过时了、被⽇历类取代!
2、⽇历类 Calender类
常⽤⽅法
getlnstance():获取⽇历对象
get():获取指定的单位的⽇历数值(年,⽉,⽇等等)
set():设置指定单位的⽇历数值
add():添加指定单位的⽇历数值
getTimelnMills():获取⽇历的毫秒数
3、SCanner类
常⽤⽅法
扫描控制台:Scanner sc = new Scanner(System.in)
扫描字符串,遇到空格就返回给程序:sc.next()
扫描⼀个整数:sc.nextInt()
扫描⼀个⼩数:sc.nextDouble()
扫描⼀⾏:sc.nextLine()
4、定时器类 Timer类
常⽤⽅法
创建TImer对象:
Timer timer = new Timer();
Timer timer = new Timer(name);
timer.schedule(TimerTask,2000); 2秒后执⾏⼀次任务
t imer.schedule(TimerTask,2000,1000); 2秒后开始执⾏任务,每1s执⾏⼀次。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.1util程序包中典型类的应用实例1、BigDecimal是Java提供的一个不变的、任意精度的有符号十进制数对象(1)应用BigDecimal可以提高计算的精度在商业应用开发中,涉及金额等浮点数计算的数据,全部定义为String,数据库中可定义为字符型字段,在需要使用这些数据进行运算的时候,使用BigDecimal(String)构造BigDecimal对象进行运算,保证数据的精确计算。

下面为一个工具类,定义浮点数的加、减、乘、除和四舍五入等运算方法:import java.math.BigDecimal;public class MathExtend{ //默认除法运算精度private static final int DEFAULT_DIV_SCALE = 10;public static double add(double v1, double v2){BigDecimal b1 = new BigDecimal(Double.toString(v1));BigDecimal b2 = new BigDecimal(Double.toString(v2));return b1.add(b2).doublue();}public static String add(String v1, String v2){BigDecimal b1 = new BigDecimal(v1);BigDecimal b2 = new BigDecimal(v2);return b1.add(b2).toString();}public static double subtract(double v1, double v2){BigDecimal b1 = new BigDecimal(Double.toString(v1));BigDecimal b2 = new BigDecimal(Double.toString(v2));return b1.subtract(b2).doublue();}public static String subtract(String v1, String v2){BigDecimal b1 = new BigDecimal(v1);BigDecimal b2 = new BigDecimal(v2);return b1.subtract(b2).toString();}public static double multiply(double v1, double v2){BigDecimal b1 = new BigDecimal(Double.toString(v1));BigDecimal b2 = new BigDecimal(Double.toString(v2));return b1.multiply(b2).doublue();}public static String multiply(String v1, String v2){BigDecimal b1 = new BigDecimal(v1);BigDecimal b2 = new BigDecimal(v2);return b1.multiply(b2).toString();}public static double divide(double v1, double v2){return divide(v1, v2, DEFAULT_DIV_SCALE);}public static double divide(double v1,double v2, int scale){return divide(v1, v2, scale, BigDecimal.ROUND_HALF_EVEN);}public static double divide(double v1,double v2,int scale, int round_mode){if(scale < 0) {throw new IllegalArgumentException("The scale must be a positive integer or zero");}BigDecimal b1 = new BigDecimal(Double.toString(v1));BigDecimal b2 = new BigDecimal(Double.toString(v2));return b1.divide(b2, scale, round_mode).doublue();}public static String divide(String v1, String v2){return divide(v1, v2, DEFAULT_DIV_SCALE);}public static String divide(String v1, String v2, int scale){return divide(v1, v2, DEFAULT_DIV_SCALE, BigDecimal.ROUND_HALF_EVEN); }public static String divide(String v1, String v2, int scale, int round_mode){if(scale < 0){throw new IllegalArgumentException("The scale must be a positive integer or zero");}BigDecimal b1 = new BigDecimal(v1);BigDecimal b2 = new BigDecimal(v2);return b1.divide(b2, scale, round_mode).toString();}public static double round(double v,int scale){return round(v, scale, BigDecimal.ROUND_HALF_EVEN);}public static double round(double v, int scale, int round_mode){if(scale<0){throw new IllegalArgumentException("The scale must be a positive integer or zero");}BigDecimal b = new BigDecimal(Double.toString(v));return b.setScale(scale, round_mode).doublue();}public static String round(String v, int scale){return round(v, scale, BigDecimal.ROUND_HALF_EVEN);}public static String round(String v, int scale, int round_mode){if(scale<0){throw new IllegalArgumentException("The scale must be a positive integer or zero");}BigDecimal b = new BigDecimal(v);return b.setScale(scale, round_mode).toString();}}(2)控制四舍五入1)ROUND_HALF_UP:遇到.5的情况时往上近似,例:1.5 ->;22)ROUND_HALF_DOWN:遇到.5的情况时往下近似,例: 1.5 ->;13)ROUND_CEILING:如果BigDecimal是正的,则做ROUND_UP操作;而如果为负,则做ROUND_DOWN操作。

4)ROUND_DOWN:从不在舍弃(即截断)的小数之前增加数字。

5)ROUND_FLOOR:如果BigDecimal为正,则作ROUND_UP;如果为负,则作ROUND_DOWN。

6)ROUND_HALF_DOWN:若舍弃部分> .5,则作ROUND_UP;否则将作ROUND_DOWN。

7)ROUND_HALF_EVEN:如果舍弃部分左边的数字为奇数,则作ROUND_HALF_UP;如果它为偶数,则作为ROUND_HALF_DOWN8)ROUND_HALF_UP:若舍弃部分>=.5,则作ROUND_UP;否则将作ROUND_DOWN9)ROUND_UNNECESSARY:该“伪舍入模式”实际是指明所要求的操作必须是精确的,因此不需要舍入操作。

10)ROUND_UP:总是在非0舍弃小数(即截断)之前增加数字。

2、JDK 5中的java.util.concurrent.locks.Lock锁(1)synchronized是独占锁尽管synchronized在语法上已经足够简单了,在JDK 5之前只能借助此实现,但是由于是独占锁,性能却不高,因此JDK 5以后就开始借助于JNI来完成更高级的锁实现。

独占锁是一种悲观锁,synchronized就是一种独占锁,会导致其它所有需要锁的线程挂起,等待持有锁的线程释放锁。

而另一个更加有效的锁就是乐观锁。

所谓乐观锁就是,每次不加锁而是假设没有冲突而去完成某项操作,如果因为冲突失败就重试,直到成功为止。

(2)JDK 5中的锁是接口java.util.concurrent.locks.Lock另外java.util.concurrent.locks.ReadWriteLock提供了一对可供读写并发的锁。

(3)synchronized和java.util.concurrent.locks.Lock的异同1)主要相同点:Lock能完成synchronized所实现的所有功能2)主要不同点:Lock有比synchronized更精确的线程语义和更好的性能。

synchronized会自动释放锁,而Lock一定要求程序员手工释放,并且必须在finally从句中释放。

尽管synchronized实现Lock的相同语义,并且在语法上比Lock要简单多,但是前者却比后者的开销要大得多。

(4)lock()和unlock()方法1)void lock(); 获取锁,如果锁不可用,出于线程调度目的,将禁用当前线程,并且在获得锁之前,该线程将一直处于休眠状态。

2)void unlock(); 释放锁,对应于lock()、tryLock()、tryLock(xx)、lockInterruptibly()等操作,如果成功的话应该对应着一个unlock(),这样可以避免死锁或者资源浪费。

相关文档
最新文档