第十一章总结 常用类库

包装类

主要是将基本数据类型封装在包装类中,如int型的包装为Integer、boolean型的包装类Boolean等

Integer类

Integer类在对象中包装了一个基本数据类型int的值,该类的对象包含int字段

例子:Integer类的常用方法

Integer 类提供了以下4个常量

MAX_VALUE:表示int类型可取的最大值,即231-1。
MIN_VALUE:表示int类型可取的最小值,即-23。
SIZE:用来以二进制补码形式表示int值的位数。
TYPE:表示基本类型int的Class 实例。

例子:查看Integer类的常量

int直接取整 ,不会四舍五入

Double类

 例子:Double常用方法

Double类主要提供了以下常量:

MAX_EXPONENT:返回 int 值,表示有限 double变量可能具有的最大指数

MIN EXPONENT:返回int值,表示标准化 double变量可能具有的最小指数

QNEGATIVE_INFINITY:返回 double值,表示保存 double 类型的负无穷大值的常量

 POSITIVE_INFINITY:返回 double值,表示保存 double类型的正无穷大值的常量

Boolean类 

例子:Boolean类的常用方法

 
  1. public class IntegerDemo {

  2. public static void main(String[] args) {

  3. Boolean b1=Boolean.valueOf("true");//创建Boolean对象

  4. Boolean b2=Boolean.valueOf("ok");

  5. System.out.println("b1:"+b1.booleanValue());

  6. System.out.println("b2:"+b2.booleanValue());

  7. }}

运行结果:

b1:ture

b2:false

Boolean提供以下3个常量:

TRUE:对应基值ture的 Boolean 对象

FALSEr对应基值false 的 Boolcan 对象
TYPE:基本类型boolean的Class对象

Character类

例子:Character类常用方法

 Character类提供大量表示特定字符的常量:

CONNECTOR_PUNCTUATION:返回byte型值,表示Unicode规范中常规类别“Pc”

UNASSIGNED:返回byte型值,表示Unicode规范中常规类别“Cn”

TITLECASE_LETTER:返回byte型值,表示Unicode规范中常规类别“Lt”

Number类

数字处理 

数字格式化

在java中没有格式化的数据以下原则:

如果数据绝对值大于0.001 并且小于 10000000,使以常规小数形式表示。
如果数据绝对值小于0.001或者大于10000000,使用科学记数法表示。

DecimalFormat类是NumberFormat的一个子类用于格式化十进制数字。它可以将一些数字格式化为整数、浮点数、百分数等。通过使用该类可以为要输出的数字加上单位或控制数字的精度。一”情况下,可以在实例化 DecimalFormat 对象时传递数字格式,也可以通过 DecimalFormat 类中applyPattern0方法来实现数字格式化。
当格式化数字时,可在DecimalFormat类中使用一些特殊字符构成一个格式化模板,使数字按照定的特殊字符规则进行匹配。

 

 例子:

在DecimalFormat类

 
  1. import java.text.DecimalFormat;

  2. public class DecimalFormatSimpleDemo {

  3. //使用实例化对象时设置格式化模式

  4. static public void SimgleFormat(String pattern, double value) {

  5. DecimalFormat myFormat = new DecimalFormat(pattern);//实例化DecimalFormat 对象

  6. String output = myFormat.format(value);//将数字进行格式化

  7. System.out.println(value +""+ pattern +""+ output);

  8. }

  9. //使用applyPattern()方法对数字进行格式化

  10. static public void UseApplyPatternMethodFormat(String patter, double value) {

  11. DecimalFormat myFormat = new DecimalFormat();//实例化DecimalFormat 对象

  12. //调用applyPattern()方法设置格式化模板

  13. myFormat.applyPattern(pattern);

  14. System.out.printin(value +"" + pattern + "" + myFormat.format(value));}

  15. public static void main(String[] args){

  16. SimgleFormat("########",123456.789);//调用静态SimgleFormat()方法

  17. SimgleFormat("00000000.###kg",123456.789);//在数字后加上单位

  18. //按照格式模板格式化数字,不存在的位以0显

  19. SimgleFormat("000000.000",123.78);

  20. //调用静态UseApplyPatternMethodFormat()方法"

  21. UseApplyPatternMethodFormat("#.###%",0.789);//将数字转换为百分数形式

  22. UseApplyPatternMethodFormat("###.##",123456.789);//将小数点后格式化为两位

  23. UseApplyPatternMethodFormat("0.00u2030",0.789);//将数字转换为千分数形式

  24. }}

运行结果为:

123456.789###,###.### 123,456.789

123456.789 00000000.###kg 00123456.789kg

123.78 000000.000 000123.780

0.789#.###%78.9%

123456.789 ###.##123456.79

0.789 0.00% 789.00%

在DecimalFormat类中,除了可通过格式化模板来格式化数字,还可以使用一些特殊方法对数字行格式化设置。例如:
//实例化DecimalFormat 类对象
DecimalFormat myFormat = new DecimalFormat();

myFormat.setGroupingSize(2);//设置将数字分组的大小
myFormat.setGroupingUsed(false);//设置是否支持分组

 
  1. import java.text.DecimalFormat;

  2. public class DecimalMethod {

  3. public static void main(String[] args) {

  4. // TODO Auto-generated method stub

  5. DecimalFormat myFormat = new DecimalFormat();

  6. myFormat.setGroupingSize(2);//设置将数字分组为2

  7. String output = myFormat.format(123456.789);

  8. System.out.println("将数字以每两个数字分组 "+ output);

  9. myFormat.setGroupingUsed(false);//设置不允许数字进行分组

  10. String output2 = myFormat.format(123456.789);

  11. System.out.println("不允许数字分组 "+ output2);

  12. }

  13. }

运行结果:

 Math类

三角函数方法
        Math类中包含的三角函数方法如下:
         public static double sin(doublea):返回角的三角正弦
        public static double cos(doublea):返回角的三角余弦
        public static double tan(doublea):返回角的三角正切
        public static doubleasin(doublea):返回一个值的反正弦

        public static double acos(doublea):返回一个值的反余弦
        public static double atan(doublea):返回一个值的反正切。
        public static double toRadians(double angdeg):将角度转换为弧度
        public static double toDegrees(double angrad):将弧度转换为角度。

例子:在java中进行三角函数运算

 
  1. public class TrigonometricFunction {

  2. public static void main(String[] args) {

  3. // TODO Auto-generated method stub

  4. System.out.println("90度的正弦值:"+Math.sin(Math.PI/2));//取90°的正弦

  5. System.out.println("0度的余弦值:"+Math.cos(0));//取0°的余弦

  6. System.out.println("60度的正弦值:"+Math.tan(Math.PI/3));//取60°的正切

  7. //取2的平方根与2商的反正弦

  8. System.out.println("2的平方根与2商的反正弦值:"+Math.asin(Math.sqrt(2)/2));

  9. System.out.println("2的平方根与2商的反余弦值:"+Math.acos(Math.sqrt(2)/2));

  10. System.out.println("1的正切值:"+Math.atan(1));//取1的反正切

  11. System.out.println("120度的弧度值:"+Math.toRadians(120.0));//取120°的弧度值

  12. System.out.println("Π/2的角度值:"+Math.toDegrees(Math.PI/2));//取Π/2的角度

  13. }

  14. }

指数函数方法
        1.Math类中与指数相关的函数方法如下。
         public static double exp(doublea):用于获取e的a次方,即取e
        public static double log(doublea):用于取自然对数,即取Ina的值

        public static double log10(doublea):用于取底数为10的a的对数。

        public static doublesqrt(doublea):用于取a的平方根,其中a的值不能为负值。
        public static double cbrt(doublea):用于取a的立方根。

         public static double pow(double adouble b):用于取a的b次方
例子:在java中进行指数函数运算

取整函数方法
        1.在具体的问题中,取整操作使用也很普遍,所以Java在Mah类中添加了数字取整方法。Math中主要包括以下几种取整方法:
        public static double ceil(double a): 返回大于等于参数的最小整数
        public static double floor(double a): 返回小于等于参数的最大整数
        public static double rint(double a): 返与参数最接近的整数,如果存在两个同样接近的整数.
        则结果取偶数。
        public static int round(float a): 将参数加上0.5 后返与参数最近的整数区

         public static long round(double a): 将参数加上0.5 后返与参数最近的整数,然后强制转换为长整型。
例子:各场景下取整函数的运算结果

取最大值、最小值、绝对值的函数方法

1.在程序中最常用的方法就是取最大值、最小值、绝对值等,Ma 类中包括的操作方法

        public static double max(double a double b):取a与b之间的最大值。

        public static int min(inta.int b):取a与b之间的最小值,参数为整型
        public static long min(long a,long b):取a与b之间的最小值,参数为长整型

        public static float min(float a,float b):取a与b之间的最小值,参数为单精度浮点型

        public static double min( double a,double b): 取a与b之间的最小值,参数为双精度浮点
        public static int abs(int a):返回整型参数的绝对值。
        public static long abs(long a):返回长整型参数的绝对值。
        public static float abs(float a):返回单精度浮点型参数的绝对值。
 

例子:取最大值、最小值、绝对值的方法

Random类 

1.Random类是JDK中的随机数生成器类,可以通过实例化一个 Random对象创建一个随机数生器,语法如下:

Random r = new Random();
        2.用户也可以在实例化 Random 类对象时,设置随机数生成器的种子。语法如下:

Random r = new Random(seedValue);
        r:Random类对象
        seedValue:随机数生成器的种子。
在Random 类中,提供了蔬聚各种据类型随机数的方法,下面列举几个常用的方法

        public int nextInt():返回一个随机整数。
        public int nextlnt(int n): 返回大于等于0 且小于n的随机整数.

        public long nextLong(): 返回一个随机长整型值
         public boolean nextBoolean(): 返回一个随机布尔型值,
        public foat nextFloat(): 返回一个随机单精度浮点型值.
        public double nextDouble(): 返回一个随机双精度浮点型值.

        public double nextGaussian(): 返回一个概率密度为高斯分布的双精度浮点型值
例子:获取不同取值范围、不同类型的随机数

 
  1. import java.util.Random;

  2. public class RandomDemo {

  3. public static void main(String[] args) {

  4. // TODO Auto-generated method stub

  5. Random r = new Random();//实例化一个Random类

  6. //随机产生一个整数

  7. System.out.println("随机产生一个整数:"+r.nextInt());

  8. //随机产生一个大于等于0小于10的整数

  9. System.out.println("随机产生一个大于等于0小于10的整数:"+r.nextInt(10));

  10. //随机产生一个布尔型的值

  11. System.out.println("随机产生一个布尔型的值:"+r.nextBoolean());

  12. //随机产生一个双精度浮点型的值

  13. System.out.println("随机产生一个双精度浮点型的值:"+r.nextDouble());

  14. //随机产生一个单精度浮点型的值

  15. System.out.println("随机产生一个单精度浮点型的值:"+r.nextFloat());

  16. //随机产生一个概率密度为高斯分布的双精度浮点型的值

  17. System.out.println("随机产生一个概率密度为高斯分布的双精度浮点型的值:"+r.nextGaussian());

  18. }

  19. }

运行结果:

 
  1. import java.math.BigInteger;

  2. public class BigIntegerDemo {

  3. public static void main(String[] args) {

  4. // TODO Auto-generated method stub

  5. //第一个大数字

  6. BigInteger b1 = new BigInteger("987654321987654321");

  7. //第二个大数字

  8. BigInteger b2 = new BigInteger("123456789123456789");

  9. //加法运算

  10. System.out.println("加法操作:"+b1.add(b2));

  11. //减法运算

  12. System.out.println("减法操作:"+b1.subtract(b2));

  13. //乘法运算

  14. System.out.println("乘法操作:"+b1.multiply(b2));

  15. //除法运算

  16. System.out.println("除法操作:"+b1.divide(b2));

  17. //取商运算

  18. System.out.println("取商:"+b1.divideAndRemainder(b2)[0]);

  19. //取余运算

  20. System.out.println("取余数:"+b1.divideAndRemainder(b2)[1]);

  21. //2次方运算

  22. System.out.println("做2次方操作:"+b1.pow(2));

  23. //相反数运算

  24. System.out.println("取相反数操作:"+b1.negate());

  25. }

  26. }

运行结果:

 

 
  1. import java.math.BigDecimal;

  2. import java.math.RoundingMode;

  3. public class BigDecimalDemo {

  4. public static void main(String[] args) {

  5. // TODO Auto-generated method stub

  6. //第一个大小数

  7. BigDecimal b1 = new BigDecimal("0.00987654321987654321");

  8. //第二个大小数

  9. BigDecimal b2 = new BigDecimal("0.00123456789123456789");

  10. //加法运算

  11. System.out.println("两个数字相加结果:"+b1.add(b2));

  12. //减法运算

  13. System.out.println("两个数字相减结果:"+b1.subtract(b2));

  14. //乘法运算

  15. System.out.println("两个数字相乘结果:"+b1.multiply(b2));

  16. //除法运算,商小数点后保留9位,并将结果进行四舍五入操作

  17. System.out.println("两个数字相除,保留小数点后9位结果:"+b1.divide(b2,9,RoundingMode.HALF_UP));

  18. }

  19. }

运行结果:

   综上所述,Java 输出换行的方法有以下两种:

System.out.print("n");//利用换行符\n 实现换行
System.out.println();//空参数即可实现换行
2、计时
        1.System.currentTimeMillis0方法可以获取自1970年1月1日零点至今的毫秒数。虽然Dae也有类似的方法,但代码会比 System 类多,所以System.currentTimeMillis0方法是为获取当前毫最常用的方法。因为该方法的返回值精确到毫秒,所以可以利用该方法来记录程序的运行时间。

例子:查看执行一万次字符串拼接所消耗的时间

 
  1. public class SystemTimeDemo {

  2. public static void main(String[] args) {

  3. // TODO Auto-generated method stub

  4. long start = System.currentTimeMillis();

  5. //程序开始记录时间

  6. String str = null;//创建null字符串

  7. for(int i=0;i<10000;i++) {//循环10000次

  8. str += i;//将字符串与循环变量拼接

  9. }

  10. long end = System.currentTimeMillis();

  11. System.out.println("循环用时:"+(end-start)+"毫秒");

  12. }

  13. }

运行结果:

循环用时:133秒

4.使用Scanner类扫描控制台的代码如下:

Scanner sc = new Scanner(System.in);
 
  1. import java.util.Random;

  2. import java.util.Scanner;

  3. public class ScannerDemo {

  4. public static void main(String[] args) {

  5. // TODO Auto-generated method stub

  6. Random r= new Random();//随机数对象

  7. int num = r.nextInt(100);//从1~99取值

  8. int input = -1;//记录用户输入的值

  9. Scanner sc= new Scanner(System.in);//扫描器扫描控制台输入

  10. while(true) {

  11. System.out.println("猜一猜随机数是多少?");

  12. input = sc.nextInt();//获取用户输入的一个整数

  13. if(input>num) {//如果大于随机数

  14. System.out.println("你输入的数字大了!");

  15. }else if(input<num) {//如果小于随机数

  16. System.out.println("你输入的数字小了!");

  17. }

  18. else if(input==num) {//如果等于随机数

  19. break;//结束循环

  20. }else {

  21. System.out.println("您的输入有误!");

  22. }

  23. }

  24. System.out.println("恭喜你答对了!");

  25. sc.close();//关闭扫描器

  26. }

  27. }

 猜一猜随机数是多少

日期时间类

1.Date类

        1.Date 类用于表示日期时间,使用该类表示时间需要使用其构造方法创建对象

使用 Date类的第2种构造方法创建一个 Date类的对象,代码如下:

long timeMillis=System.currentTimeMillis(); 
//当前系统时间所经历的毫秒数
Date date = new Date(timeMillis);
        上述代码中的System类的currentTimeMillis0方法主要用来获取当前系统时间距标准基准时间的毫秒数。另外,这里需要注意的是,创建 Date 对象时使用的是 long 型整数,而不是 double 型,这主要是因为 double类型可能会损失精度。

 
  1. import java.util.Date;

  2. public class DateDemo {

  3. public static void main(String[] args) {

  4. // TODO Auto-generated method stub

  5. Date date = new Date();//创建现在时间

  6. long value = date.getTime();//获取毫秒数

  7. System.out.println("日期:"+date);

  8. System.out.println("到现在所经历的毫秒数为:"+value);

  9. }

  10. }

 

4.由于DateFormat类是一个抽象类,不能用 new创建实例对象。因此,除了使用getXXXInstance0方能创健其对象,还可以使用其子类,如 SimpleDateFormat 类,该类是一个以与语言环境相关的方式*花式化和分析日期的具体类,它允许进行格式化 (日期一文本)、分析(文本一日期)和规范化。

        5.SimpleDateFormat 类提供了19个格式化字符,可以让开发者随意编写日期格式,这19个格式化字符如表11.17所示。

例子:

 
  1. import java.text.DateFormat;

  2. import java.text.SimpleDateFormat;

  3. import java.util.Date;

  4. public class DateFormatDemo {

  5. public static void main(String[] args) {

  6. // TODO Auto-generated method stub

  7. DateFormat df = new SimpleDateFormat("yyyy年 MM月 dd日 EEEE HH时 mm分 ss秒");

  8. System.out.println("各位观众大家好,现在是");

  9. System.out.println(df.format(new Date()));

  10. System.out.println(", 欢迎收看新闻。");

  11. }

  12. }

 

欢迎收看

3.Calendar 类
        1.Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF MONTH、HOU等日历字段之间的转换提供了一些方法,并为操作日历字段(如获得下星期的日期)提供了一些方法。另外,该类还为实现包范围外的具体日历系统提供了其他字段和方法,这些字段和方法被定义为 protected

        2.Calendar 提供了一个类方法 getInstance0,以获得此类型的一个通用的对象。Calendar 类的getInstance0方法返回一个Calendar对象,其日历字段已由当前日期和时间初始化,其使用方法如下:

Calendar rightNow = Calendar.getlnstance();
        3.Calendar类提供的常用字段及其说明如表11.19所示。

 

 例子:

 
  1. import java.text.SimpleDateFormat;

  2. import java.util.Calendar;

  3. import java.util.Date;

  4. public class CountDown {

  5. public static void main(String[] args) {

  6. // TODO Auto-generated method stub

  7. System.out.println("————————————中华人民共和国成立100周年倒计时————————————");

  8. Date date = new Date();//当前时间

  9. //创建SimpleDateFormat对象,指定目标格式

  10. SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年 MM月 dd日");

  11. //调用format方法,格式化时间,转换为指定格式

  12. String today = simpleDateFormat.format(date);//输出当前时间

  13. System.out.println("今天是"+ today);

  14. //获取自1970年1月1日至当前时间所经过的毫秒数

  15. long time1 = date.getTime();

  16. //使用默认时区和语言环境获得一个日历calendar

  17. Calendar calendar = Calendar.getInstance();

  18. //设置日历Calendar中的年、月、日的值。因为月份是从0开始计算的,所以减一

  19. calendar.set(2049, 10-1, 1);

  20. //计算1970年1月1日至2049年10月1日所经过的毫秒数

  21. long time2 = calendar.getTimeInMillis();

  22. //计算2049年10月1日距离当前时间相差的天数

  23. long day =(time2 - time1)/(1000* 60* 60* 24);

  24. System.out.println("距离2049年10月1日还有"+day+"天!");

  25. }

  26. }

例子:

 
  1. import java.io.BufferedReader;

  2. import java.io.IOException;

  3. import java.io.InputStream;

  4. import java.io.InputStreamReader;

  5. public class RuntimeExecDemo {

  6. public static void main(String[] args) {

  7. // TODO Auto-generated method stub

  8. Runtime r = Runtime.getRuntime();//获取本地Runtime对象

  9. try {

  10. Process p =r.exec("help");//执行help命令,获取进程对象

  11. InputStream is = p.getInputStream();//获取进程的字节输入流

  12. //将字节输入流转换为字符输入流

  13. BufferedReader br = new BufferedReader(new InputStreamReader(is));

  14. String str = null;//创建null 字符串

  15. while((str = br.readLine()) != null) {//如果字符流中可以获取非空内容

  16. System.out.println(str);//打印获取的内容

  17. }

  18. }catch(IOException e) {

  19. e.printStackTrace();

  20. }

  21. }

  22. }

2.查看内存
        1.Runtime类可以通过freeMemory0方法查看当前Java虚拟机可用内存的剩余量。如果程序能够实时监控内存剩余量,就可以尽量控制程序对内存的占用,从而避免出现“内存溢出”的情况。同样,也可以用来对测试程序性能,检验程序算法是否导致内存紧张

例子:

 
  1. public class MemoryDemo {

  2. public static void main(String[] args) {

  3. // TODO Auto-generated method stub

  4. Runtime r= Runtime.getRuntime();//获取本地Runtime对象

  5. Integer ints[] = new Integer[10000];//创建长度为10000的整型数组

  6. long before = r.freeMemory();//获取当前空闲内存数

  7. System.out.println("赋值前空闲内存字节数:"+before);

  8. for(int i=0,length = ints.length;i<length;i++) {//循环为整型数组赋值

  9. ints[i] = i;//赋值

  10. }

  11. long after = r.freeMemory();//获取当前空闲内存数

  12. System.out.println("赋值后空闲内存字节数:"+after);

  13. System.out.println("数组用掉的内存字节数:"+(before- after));//输出数组用掉的内存量

  14. }

  15. }

  • 22
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

呆比

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值