Java常用类---包装器、BigInteger和System

包装器类

①概述
在Java中基本数据类型不是类,不能创建对象,这不符合面对对象编程的思想,所有从JDK1开始,Java提供了包装器类,它将基本数据类型包装成类,这些类是Byte,Short,Integer,Long,Float,Double(这些数值类都继承了一个抽象类Number),Character,Boolean。

②构造方法
注:其他包装器类和Integer类似
public Integer(int value)
public Integer(String s)throws NumberFormatException

第二个方法中如果参数是非数字的字符串会报NumberFormatException异常。

整数转其他进制

注:其他包装器类和Integer类似
public static String toBinaryString(int i)(2进制)
public static String toOctalString(int i)(8进制)
public static String toHexString(int i)(16进制)
public static final int MAX_VALUE(int的最大值,常量)
public static final int MIN_VALUE(int的最小值,常量)

将一个十进制int值转换为2进制,8进制,16进制。例,

System.out.println(Integer.toBinaryString(120));   //1111000
System.out.println(Integer.toHexString(120));   //78
System.out.println(Integer.toOctalString(120));   //170
System.out.println(Integer.MAX_VALUE);   //2147483647
System.out.println(Integer.MIN_VALUE);   //-2147483648

public static String toString(int i,int radix)
将一个int值转为radix进制数,radix的范围是2-36,原因是0-9,a-z总共是36个,1进制无意义。

其他进制转整数

public static int parseInt(String s,int radix)throws NumberFormatException
将一个radix进制的s转为10进制。
public static int parseInt(String s)throws NumberFormatException
将一个String变量转为int。例,

int a = Integer.parseInt("438");
System.out.println(a);   //438

public static Integer valueOf(int i)
public static Integer valueOf(String s)throws NumberFormatException

④特点
自动装箱与自动拆箱
包装器类的这个新特性是JDK5以后出现的,在使用包装器类时可以直接赋对应的值,虚拟机会将值自动装箱为对应的包装器类,同样可以将包装器类当做基本数据类型使用,虚拟机会自动拆箱为对应的基本数据类型。例,

Integer i = 28;
if (i != null) // 使用前应该判断是否为null,否则会出现空指针异常
	System.out.println(++i);   //29

重写equals方法
包装器类重写了equals方法,所以比较的是内容。

⑤Character类构造方法
public Character(char value)

⑥Character类常用方法
public static boolean isUpperCase(char ch) //判断ch是否是大写字符
public static boolean isLowerCase(char ch) //判断ch是否是小写字符
public static boolean isDigit(char ch) //判断ch是否是数字字符
public static char toUpperCase(char ch) //将ch转为大写字符
public static char toLowerCase(char ch) //将ch转为小写字符

System.out.println(Character.isUpperCase('a'));   //false
System.out.println(Character.isUpperCase('A'));   //true
System.out.println(Character.isLowerCase('a'));   //true
System.out.println(Character.isLowerCase('A'));   //false
System.out.println(Character.isDigit('5'));   //true
System.out.println(Character.toUpperCase('a'));   //A
System.out.println(Character.toLowerCase('D'));   //d

⑦包装器与基本数据类型的比较

  • int和Integer(无论new否)比,都为true,因为会把Integer自动拆箱为int再去比。
		Integer i1=59;
		int i2=59;
		System.out.println(i1==i2);

经过编译后会转变为

        Integer i1 = Integer.valueOf(59);
		int i2 = 59;
		System.out.println(i1.intValue() == i2);
  • 两个都是new出来的,==比较都为false。若要比较值是否相等,需使用equals方法进行比较。
  • 两个都是非new出来的Integer,使用 == 比较,如果数在-128到127之间,则是true,否则为false。因为常量池。

2.BigInteger类
①概述
由于Integer类的最大值为2147483647,超出它的最大值就无法得出正确的结果了。为了解决这一问题,Java提供了BigInteger类,它是java.math包下的类。

②构造方法
public BigInteger(String val)
参数为数值型字符串。
注:该类已重写toString方法。

③常用方法
public BigInteger add(BigInteger val)
public BigInteger subtract(BigInteger val)
public BigInteger multiply(BigInteger val)
public BigInteger divide(BigInteger val)
public BigInteger[] divideAndRemainder(BigInteger val) //返回包含商和余数的数组

前四个方法为加、减、乘、除。

3.System类
①概述
java.lang包下的一个类,因为没有构造方法所以不能实例化。

②常量
public static final InputStream in
public static final PrintStream out

in为输入流变量,在Scanner类和IO流中使用;out为输出流变量,在IO流中使用。

③常用方法
public static void gc()
运行垃圾回收器,底层优先调用了类的finalize方法

public static void exit(int status)
status为0表示正常退出,非0表示异常退出,都是将Java虚拟机终止。

public static long currentTimeMillis()
返回当前时间与1970.1.1的0点差的毫秒值,通常成对使用,计算程序的运行时间。例,

System.out.println(System.currentTimeMillis());   //1598962100295
long start = System.currentTimeMillis();
for(int i=0;i<100;i++) {
	i=i;
}
long end = System.currentTimeMillis();
System.out.println("程序运行时间:"+(end-start)+"毫秒");   //程序运行时间:0毫秒

public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length)
src 原数组 srcPos 原数组的位置 dest 目标数组 destPos 目标数组的位置 length 要复制的长度

int[] arr=new int[] {1,2,5,6,8};
int[] arr2=new int[] {2,6,4,3,7};
System.arraycopy(arr, 2, arr2, 1, 2);
System.out.println(Arrays.toString(arr));   //[1, 2, 5, 6, 8]
System.out.println(Arrays.toString(arr2));   //[2, 5, 6, 3, 7]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值