zoukankan      html  css  js  c++  java
  • Java 包装类及其与String转换、进制转换

    一、包装类

    1.基本类型和引用类型

     Java中的基本类型我们都知道有8种,但是作为基本类型限制功能的发挥,例如整形转String类型等可能需要类方法实现会更加简便。那么八个基本类型对应八个包装类,即引用类型。具体对应如下:

    char--Character int--Integer boolean--Boolean double--Double float--Float byte--Byte short--Short long--Long

    2.值传递和引用传递

    这应该是规范的叫法,我姑且这么叫着,所谓按值传递,就是形参改变不影响原有数值,而引用传递形参实参共用同一个内存空间,一个改变,另一个也会跟着相应的改变。那么哪些是按值传递,哪些又是引用传递呢?

    已知的情况基本类型均是按值传递,而类实例对象均是按照引用传递。

    特殊的情况有:

    数组是按照引用传递的,但是s[0]=9这种可以改变,s=b新数组无法改变原数组的值;

    String类型反正形参改变不会改变实参。

    3.包装类的构造函数

    包装类的构造函数一般都有两个,一个参数是自己对应的基本类型,例如:

    Integer i=new Integer(3);
    or
    int j=3;
    Integer i=new Integer(j); 

    另一个就是以对应的String类型作为参数(Character不行):

    Float f=new Float("1.23");

    如果不是对应的类型,则会抛出NumberFormatException异常。

    4.包装类和String类之间的相互转换

    (1) String类型转换为相应的包装类

     接下来以Integer和int为例,其余七个包装类均相同:

            /*String to Integer - 1*/
            String s="23";
            Integer i=new Integer(s);
            System.out.println(i);
    
            /*String to Integer - 2*/
            Integer k=Integer.valueOf(s);
            System.out.println(k);
    
            /*String to int - 1*/
            int j=Integer.parseInt(s);
            System.out.println(j);
            /*String to int - 2*/
          int l=Integer.valueOf(s).intValue(); //甚至可以不需要intValue()方法都可以
          System.out.println(l);

    (2) 包装类转换为String

     以Double和double为例:

            double a=10.36;
            Double b=12.48;
            /* to String - 1*/
            String s1=a+"";
            String s2=b+"";
            System.out.println(s1+s2);
    
            /*to String - 2*/
            String s3=b.toString();
            String s4=Double.toString(a);
            String s5=Double.toString(b);
            System.out.println(s3+s4+s5);
    
            /* to String - 3*/
            String s6=String.valueOf(a);
            String s7=String.valueOf(a);
            System.out.println(s6+s7);

    (3)十进制转为二、八、十六进制

    除了自己用除法计算外,Java提供了很多方便的方法,例如以下两类:

            int d=59;   //or Integer
            String b=Integer.toBinaryString(d);
            String o=Integer.toOctalString(d);
            String h=Integer.toHexString(d);
            System.out.println(b+" "+o+" "+h);
    
            /* Decimal to Binary Hex or Oct - 2*/
            String b1=Integer.toString(d,2);
            String o1=Integer.toString(d,8);
            String h1=Integer.toString(d,16);
            System.out.println(b1+" "+o1+" "+h1);

    结果如下:

    111011 73 3b
    111011 73 3b

    均是将数值转换为String的其他进制。我们可以使用前面提过的方法在转换为int或者包装类。注:这里只讨论API方法。

    (4)其他进制转十进制

            /* Binary Hex or Oct to Decimal - 1*/
            int a1=0b1001010;
            int a2=01576;
            int a3= 0xFA902;
            System.out.println(a1+" "+a2+" "+a3);
    
            /* Binary Hex or Oct to Decimal - 2 - From String*/
            String st1="1001010";
            String st2="1576";
            String st3="FA902";
    
            int b2=Integer.parseInt(st1,2);
            int o2=Integer.parseInt(st2,8);
            int h2=Integer.parseInt(st3,16);
            System.out.println(b2+" "+o2+" "+h2);
            
            /* Binary Hex or Oct to Decimal - 3 - From String*/
            int b3=Integer.valueOf(st1,2);
            int o3=Integer.valueOf(st2,8);
            int h3=Integer.valueOf(st3,16);
            System.out.println(b3+" "+o3+" "+h3);

    后面两种必须从String开始转换,实际操作中具有较大局限性,因为获得一个字符串型的二进制或其他进制可能是受限的,或者说有条件的,无法直接从int型进行转换,直接转换就会自动变成十进制,如第一种方法所示。

    最后贴一下结果:

    74 894 1026306
    74 894 1026306
    74 894 1026306

  • 相关阅读:
    日志组件logback的介绍及配置使用方法(二)
    日志组件logback的介绍及配置使用方法(一)
    MyBatis+MySQL 返回插入的主键ID
    基于shiro-cas的单点登录、单点登出、统一认证授权系统
    使用Redis存储Nginx+Tomcat负载均衡集群的Session
    数字转大写钱币
    世界四大汽车生产公司
    强制登陆远程桌面
    sql 获取连续年份
    SQL 递归
  • 原文地址:https://www.cnblogs.com/lbrs/p/11037327.html
Copyright © 2011-2022 走看看