2018-07-31包装类与基本数据类型String的转换+System类详细知识+Arrays类+大数据(BigInteger+BigDecimal)运算

 

 

 

 

 

 

 

 

 

 

 

String testStr="123";

//强制将字符串转换成int类型用(int):

int testInt=(int)testStr;

//强制将String类型转换成int类型,会报错:Cannot cast from String to int!

包装类:

Java中提供了相应的对象来解决该问题,基本数据类型对象包装类:Java将基本数据类型值封装成了对象!封装成对象就可以提供更多的操作基本数值的功能!

 

//除了标红的int:Integer/char:Character其余首字母大写即可!

//在实体类内部,建议使用包装类,以减少抛出NULL值异常的概率(包装类比基本数据类型多了一个NULL值)!

功能①:将字符串转换成基本数据类型!

//以上这些方法是分布在每个包装类里面的(即Byte包装类里面有一个parseByte(String Str)方法,parseShort包装类里面有一个parseShort(String Str)方法),由于这些方法使用Static修饰的,所以可以类名.方法名()进行调用!

//如果字符串无法转成基本类型,将会发生数字转换的问题NumberFormatException(数字格式/转换异常)!

功能②:将基本数据类型转换成字符串!

1;基本数据类型直接与“”相连接:58+“”!

2;用于String的valueOf()方法:String.valueOf(58)!

//注意:上图这些方法存在于String类中,用的是方法的重载!

3;调用包装类中的toString()方法,Integer.toString(58)!

//这个与Object类里面的toString不同,这个是静态修饰(Static)的方法, 类名.方法名()调用!

功能③:基本数据类型和包装类之间的转换:

1;基本数据类型-->包装对象

Integer i1 = new Integer(4);//使用构造函数函数传值!

Integer i2 = new Integer("4");//构造函数中可以传递一个数字字符串!

//注意:第一条语句传入的4是一个int类型!

Integer i3 = Integer.valueOf(4);//使用包装类中的valueOf方法!

Integer i4 = Integer.valueOf("4");//使用包装类中的valueOf方法!

//将int或者String类型的值转换并赋值给Integer类型i3/i4

2;包装对象-->基本数据类型

int num = i1.intValue();

自动装箱+自动拆箱:

①   基本类型可以使用运算符直接进行计算,但是引用类型不可以!而基本类型包装类作为引用类型的一种却可以计算,原因在于,Java偷偷地自动地进行了对象向基本数据类型的转换!

②   相对应的,引用数据类型变量的值必须是new出来的内存空间地址值,而我们可以将一个基本类型的值赋值给一个基本类型包装类的引用!原因同样在于Java又偷偷地自动地进行了基本数据类型向对象的转换!

//总结:

自动拆箱:包装对象-->基本数据类型!

自动装箱:基本数据类型-->包装对象!

//演示Byte常量池(与String常量池类似):

当数值在byte范围之内时,进行自动装箱,不会新创建对象空间而是使用已有的空间!

Integer i1=200;

Integer i2=200;

System.out.println(i1==i2);//对比地址

System.out.println(i1.equals(i2));//对比内容

//输出结果false/true

//Byte常量池,在-128--127范围内,不会创建新的,直接把已有的地址拿过来(类似String常量池)!

Integer i3=100;

Integer i4=100;

System.out.println(i3==i4);

System.out.println(i3.equals(i4));

//输出结果true/true

System类:

System类不能手动创建对象,因为构造方法被private修饰,阻止外界创建对象!

System类中的都是static方法,类名访问即可(JDK中N 这样的类,查API)!

//如果该类不能创建对象,想要调用其中方法,请参考以下方法:

①   看该类中有没有方法返回该类的对象!

②   看看有没有静态修饰(Static),以供类名.方法名()调用!

常用方法:

①   currentTimeMillis()获取当前系统时间与1970年01月01日00:00之间的毫秒差值!

②   exit(int status)用来结束正在运行的Java程序!参数传入一个数字即可,通常传入0为正常状态,其他数字为异常状态!

③   gc()用来运行JVM中的垃圾回收器,完成内存中垃圾的清除(只需了解)!

④   getProperty(String key)用于获取指定键(字符串名称)中所记录的系统属性信息!

//代码示例:

int[] src={1,2,3,4,5};

int[] dest={6,7,8,9,10};

//定义以上两个数组!

System.arraycopy(src,0,dest,0,3);

//类名.方法名()调用arraycopy方法(源数组,源数组要Copy的元素起始位置,目标数组,需要拷贝的长度)

for(int i=0;i<dest.length;++i){

     System.out.print(dest[i]+" ");

}

//遍历输出dest数组!

###上午内容###

Arrays类:

此类包含用来操作数组(比如排序和搜索)的各种方法!需要注意,如果指定数组引用为NULL,则访问此类中的方法都会抛出空指针异常NullPointerException

①   sort方法用来对指定数组中的元素进行排序(由小到大)!

②   toString方法用来返回指定数组元素内容的字符串形式!

③   binarySearch方法,在指定数组中,查找给定元素值出现的位置,若没有查找到,返回-位置-1,要求该数组必须是个有序数组(必须先sort再binarySearch)!

大数据运算:

BigInteger:

Java中long型为最大整数类型, 超过long型的整数已经不能被称为整数了,它们被封装成BigInteger对象!在BigInteger类中,实现四则运算都是调用方法来实现,并不是采用运算符!

BigInteger的构造方法:

四则运算代码:

①   加add

②   减subtract

③   乘multiply

④   除divide

BigDecimal:

System.out.println(0.09 + 0.01);

System.out.println(1.0 - 0.32);

System.out.println(1.015 * 100);

System.out.println(1.301 / 100);

double和float类型在运算中很容易丢失精度,造成数据的不准确性,Java提供我们BigDecimal类可以实现浮点数据的高精度运算!

 

对于浮点数据的除法运算,和整数不同,可能出现无限不循环小数,因此需要对所需要的位数进行保留和选择舍入模式!

第1个参数传入BigDecimal对象,第2个设置精度,第3个为下方表中内容:

原文地址:https://www.cnblogs.com/postgredingdangniu/p/9396702.html