zoukankan      html  css  js  c++  java
  • 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个为下方表中内容:

  • 相关阅读:
    平台
    重构之践
    Linux.NET
    系统分析员级下午试题II(论文)解答方法
    通用泛型存储接口的设计
    .NET平台4.0 发布网站流程及出错总结
    在IIS上发布基于Windows Azure Service Bus的WCF服务
    epoll + 多线程实现并发网络连接处理
    Linux进程地址空间之初探:一
    排序、搜索
  • 原文地址:https://www.cnblogs.com/postgredingdangniu/p/9396702.html
Copyright © 2011-2022 走看看