第十一章总结 常用类库

包装类

主要是将基本数据类型封装在包装类中,如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类的常用方法

public class IntegerDemo {

	public static void main(String[] args) {
		Boolean b1=Boolean.valueOf("true");//创建Boolean对象
		Boolean b2=Boolean.valueOf("ok");
		System.out.println("b1:"+b1.booleanValue());
		System.out.println("b2:"+b2.booleanValue());
	}}

运行结果:

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类

import java.text.DecimalFormat;
public class DecimalFormatSimpleDemo {
//使用实例化对象时设置格式化模式
static public void SimgleFormat(String pattern, double value) {
DecimalFormat myFormat = new DecimalFormat(pattern);//实例化DecimalFormat 对象
String output = myFormat.format(value);//将数字进行格式化
System.out.println(value +""+ pattern +""+ output);
}
//使用applyPattern()方法对数字进行格式化
static public void UseApplyPatternMethodFormat(String patter, double value) {
DecimalFormat myFormat = new DecimalFormat();//实例化DecimalFormat 对象
//调用applyPattern()方法设置格式化模板
myFormat.applyPattern(pattern);
System.out.printin(value +"" + pattern + "" + myFormat.format(value));}
public static void main(String[] args){
SimgleFormat("########",123456.789);//调用静态SimgleFormat()方法
SimgleFormat("00000000.###kg",123456.789);//在数字后加上单位
//按照格式模板格式化数字,不存在的位以0显
SimgleFormat("000000.000",123.78);
//调用静态UseApplyPatternMethodFormat()方法"
UseApplyPatternMethodFormat("#.###%",0.789);//将数字转换为百分数形式
UseApplyPatternMethodFormat("###.##",123456.789);//将小数点后格式化为两位
UseApplyPatternMethodFormat("0.00u2030",0.789);//将数字转换为千分数形式
}}

运行结果为:

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);//设置是否支持分组

import java.text.DecimalFormat;
public class DecimalMethod {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		DecimalFormat  myFormat = new DecimalFormat();
		myFormat.setGroupingSize(2);//设置将数字分组为2
		String output = myFormat.format(123456.789);
		System.out.println("将数字以每两个数字分组 "+ output);
		myFormat.setGroupingUsed(false);//设置不允许数字进行分组
		String output2 = myFormat.format(123456.789);
		System.out.println("不允许数字分组 "+ output2);
	}
 
}

运行结果:

 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中进行三角函数运算

 
public class TrigonometricFunction {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println("90度的正弦值:"+Math.sin(Math.PI/2));//取90°的正弦
		System.out.println("0度的余弦值:"+Math.cos(0));//取0°的余弦
		System.out.println("60度的正弦值:"+Math.tan(Math.PI/3));//取60°的正切
		//取2的平方根与2商的反正弦
		System.out.println("2的平方根与2商的反正弦值:"+Math.asin(Math.sqrt(2)/2));
		System.out.println("2的平方根与2商的反余弦值:"+Math.acos(Math.sqrt(2)/2));
		System.out.println("1的正切值:"+Math.atan(1));//取1的反正切
		System.out.println("120度的弧度值:"+Math.toRadians(120.0));//取120°的弧度值
		System.out.println("Π/2的角度值:"+Math.toDegrees(Math.PI/2));//取Π/2的角度
	}
 
}

指数函数方法
        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(): 返回一个概率密度为高斯分布的双精度浮点型值
例子:获取不同取值范围、不同类型的随机数

import java.util.Random;
public class RandomDemo {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Random r = new Random();//实例化一个Random类
		//随机产生一个整数
		System.out.println("随机产生一个整数:"+r.nextInt());
		//随机产生一个大于等于0小于10的整数
		System.out.println("随机产生一个大于等于0小于10的整数:"+r.nextInt(10));
		//随机产生一个布尔型的值
		System.out.println("随机产生一个布尔型的值:"+r.nextBoolean());
		//随机产生一个双精度浮点型的值
		System.out.println("随机产生一个双精度浮点型的值:"+r.nextDouble());
		//随机产生一个单精度浮点型的值
		System.out.println("随机产生一个单精度浮点型的值:"+r.nextFloat());
		//随机产生一个概率密度为高斯分布的双精度浮点型的值
		System.out.println("随机产生一个概率密度为高斯分布的双精度浮点型的值:"+r.nextGaussian());
	}
 
}

运行结果:

import java.math.BigInteger;
public class BigIntegerDemo {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//第一个大数字
		BigInteger b1 = new BigInteger("987654321987654321");
		//第二个大数字
		BigInteger b2 = new BigInteger("123456789123456789");
		//加法运算
		System.out.println("加法操作:"+b1.add(b2));
		//减法运算
		System.out.println("减法操作:"+b1.subtract(b2));
		//乘法运算
		System.out.println("乘法操作:"+b1.multiply(b2));
		//除法运算
		System.out.println("除法操作:"+b1.divide(b2));
		//取商运算
		System.out.println("取商:"+b1.divideAndRemainder(b2)[0]);
		//取余运算
		System.out.println("取余数:"+b1.divideAndRemainder(b2)[1]);
		//2次方运算
		System.out.println("做2次方操作:"+b1.pow(2));
		//相反数运算
		System.out.println("取相反数操作:"+b1.negate());
	}
 
}

运行结果:

 

import java.math.BigDecimal;
import java.math.RoundingMode;
public class BigDecimalDemo {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//第一个大小数
		BigDecimal b1 = new BigDecimal("0.00987654321987654321");
		//第二个大小数
		BigDecimal b2 = new BigDecimal("0.00123456789123456789");
		//加法运算
		System.out.println("两个数字相加结果:"+b1.add(b2));
		//减法运算
		System.out.println("两个数字相减结果:"+b1.subtract(b2));
		//乘法运算
		System.out.println("两个数字相乘结果:"+b1.multiply(b2));
		//除法运算,商小数点后保留9位,并将结果进行四舍五入操作
		System.out.println("两个数字相除,保留小数点后9位结果:"+b1.divide(b2,9,RoundingMode.HALF_UP));
		
		
		
	}
 
}

运行结果:

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

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

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

 
public class SystemTimeDemo {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		long start = System.currentTimeMillis();
		//程序开始记录时间
		String str = null;//创建null字符串
		for(int i=0;i<10000;i++) {//循环10000次
			str += i;//将字符串与循环变量拼接
		}
		
		long end = System.currentTimeMillis();
		System.out.println("循环用时:"+(end-start)+"毫秒");
	}
 
}

运行结果:

循环用时:133秒

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

Scanner sc = new Scanner(System.in);
import java.util.Random;
import java.util.Scanner;
public class ScannerDemo {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Random r= new Random();//随机数对象
		int num = r.nextInt(100);//从1~99取值
		int input = -1;//记录用户输入的值
		Scanner sc= new Scanner(System.in);//扫描器扫描控制台输入
		while(true) {
			System.out.println("猜一猜随机数是多少?");
			input = sc.nextInt();//获取用户输入的一个整数
			if(input>num) {//如果大于随机数
				System.out.println("你输入的数字大了!");
			}else if(input<num) {//如果小于随机数
				System.out.println("你输入的数字小了!");
			}
			else if(input==num) {//如果等于随机数
				break;//结束循环
			}else {
				System.out.println("您的输入有误!");
			}
		}
		System.out.println("恭喜你答对了!");
		sc.close();//关闭扫描器
	}
 
}

 猜一猜随机数是多少

日期时间类

1.Date类

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

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

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

import java.util.Date;
public class DateDemo {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Date date = new Date();//创建现在时间
		long value = date.getTime();//获取毫秒数
		System.out.println("日期:"+date);
		System.out.println("到现在所经历的毫秒数为:"+value);
	}
 
}

 

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

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

 

 

例子:

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateFormatDemo {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		DateFormat df = new SimpleDateFormat("yyyy年 MM月 dd日 EEEE HH时 mm分 ss秒");
		System.out.println("各位观众大家好,现在是");
		System.out.println(df.format(new Date()));
		System.out.println(", 欢迎收看新闻。");
		
	}
 
}

 

欢迎收看

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所示。

 

 

 

 例子:

 
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class CountDown {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println("————————————中华人民共和国成立100周年倒计时————————————");
		Date date = new Date();//当前时间
		//创建SimpleDateFormat对象,指定目标格式
		SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年 MM月 dd日");
		//调用format方法,格式化时间,转换为指定格式
		String today = simpleDateFormat.format(date);//输出当前时间
		System.out.println("今天是"+ today);
		//获取自1970年1月1日至当前时间所经过的毫秒数
		long time1 = date.getTime();
		//使用默认时区和语言环境获得一个日历calendar
		Calendar calendar = Calendar.getInstance();
		//设置日历Calendar中的年、月、日的值。因为月份是从0开始计算的,所以减一
		calendar.set(2049, 10-1, 1);
		//计算1970年1月1日至2049年10月1日所经过的毫秒数
		long time2 =  calendar.getTimeInMillis();
		//计算2049年10月1日距离当前时间相差的天数
		long day =(time2 - time1)/(1000* 60* 60* 24);
		System.out.println("距离2049年10月1日还有"+day+"天!");
		
		
		
	}
 
}

 

 

例子:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader; 
public class RuntimeExecDemo {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Runtime r = Runtime.getRuntime();//获取本地Runtime对象
		try {
			Process p =r.exec("help");//执行help命令,获取进程对象
			InputStream is = p.getInputStream();//获取进程的字节输入流
			//将字节输入流转换为字符输入流
			BufferedReader br = new BufferedReader(new InputStreamReader(is));
			String str = null;//创建null 字符串
			while((str = br.readLine()) != null) {//如果字符流中可以获取非空内容
				System.out.println(str);//打印获取的内容
			}
		}catch(IOException e) {
			e.printStackTrace();
		}
		
	}
 
}

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

例子:

 
public class MemoryDemo {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Runtime r= Runtime.getRuntime();//获取本地Runtime对象
		Integer ints[] = new Integer[10000];//创建长度为10000的整型数组
		long before = r.freeMemory();//获取当前空闲内存数
		System.out.println("赋值前空闲内存字节数:"+before);
		for(int i=0,length = ints.length;i<length;i++) {//循环为整型数组赋值
			ints[i] = i;//赋值
		}
		long after = r.freeMemory();//获取当前空闲内存数
		System.out.println("赋值后空闲内存字节数:"+after);
		System.out.println("数组用掉的内存字节数:"+(before- after));//输出数组用掉的内存量
	}
 
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值