zoukankan      html  css  js  c++  java
  • Java中字符串的学习(四)基本数据类型包装类的学习与使用

    基本数据类型对象包装类

    按照java面向对象的原则,万事万物都是对象,这也就包括了基本数据类型。

    Byte   byte

    Short  short

    Integer    int

    Long   long

    Boolean   Boolean

    Float  float

    Double   double

    Character  char

    接下来就以int为例进行讲解:

    在java.lang包中Integer类

    Integer类在对象中包装了一个基本类型int值。Integer类型的对象包含一个int类型的字段。

    具有固定的最大最小值。

    基本数据类型包装类的最常见作用

    就是用于基本数据类型和字符串类型之间做转换。

    基本数据类型转成字符串。

    基本数据类型+””;

    基本数据类型.toString(基本数据类型值)

    如:Integer.toString(34);//将34

    字符串转成基本数据类型。

    日常当中的应用:我们上网的时候都会在文本框里输入数字。比如年龄24。文本框中的数据类型全是字符串。那么我们需要判断输入的年龄是否大于20岁。这是数学运算。所以我们需要把字符串24转成整数24.再做判断。

    在Integer类中有方法

    Static int parseInt(String s)把字符串转换成int类型。

    其他基本数据类型也是这样转。

    两个特殊的:

    Static Boolean parseBoolean(String s):将字符串转换成boolean值。

    Character没有parsexxxxx()的方法

    如果传入的字符串中有其他非数字的字符,例如abccff等,会报数字格式异常。

    Java.lang.NumberFormatException.

    也就是说必须传入数字格式的字符串。

    基本数据包装类封装了很多方法,这些方法很多是静态的,很多是操作数据的方法,方便我们使用。

    十进制转成其他进制

    ToBinaryString();

    toHexString();

    toOctalString();

    其他进制转成十进制:

    ParseInt(String str,radix);

    如果超出给定进制范围,也会报数字格式异常 。

    基本数据类型包装类的字符串转成基本数据类型,如果不采用那种静态的parsexxxx()的方法,还可以采用先把字符串或者整数封装成相应的对象,再通过对象调用xxxvalue()方法也可以达到目的。

    基本数据类型对象包装类新特性。

    下面做个小练习:

    Integer x = new Integer(“123”);

    Integer y = new Integer(123);

    System.out.println(x==y);

    Sytem.out.println(x.equals(y));

    结果

    False

    True

    因为x,y是两个不同的对象。

    Integer类复写了父类中的equals()方法,它比较的是数值是否相同。

    JDK1.5版本以后出现的新特性。

    1.5以前:Integer x = new Integer(4);

    1.5以后; Integer x = 4;x是引用数据类型。右边的4是对象,因为类类型变量肯定指向对象。这就是自动装箱。其实这个4 = new Integer(4);,只不过这个动作不用咱们显式做了,JDK隐式帮咱们做了。这就是简化书写。

    同时,这个x可以直接进行运算。

    X = x+2,//x+2x应该先变成整数再进行运算。进行了自动拆箱。变成了int类型。和2进行加法运算。再将结果自动装箱赋给x。

    那它是如何拆箱的呢?

    X是个对象,这里做的其实是x.intValue().

    需要注意的是如果你要使用1.5版本以后的新特性。,你需要注意x的取值范围,Integer类的对象x会多一个空值:null.会出现空指针异常。做判空操作。

    小案例:

    Integer m = 128;

    Integer n = 128;

    Integer a = 127;

    Integer b = 127;

    M==n false

    A==b true

    第一个false还是因为m和n是不同的对象。

    第二个true是因为a和b指向了同一Integer对象。因为当数值在byte范围内,对于新特性,如果该数值已经存在,则不会再开辟新的空间。

    这个新特性,面试可能会问到,开发不常见。一般都equlas().

  • 相关阅读:
    windows定时任务schtasks命令详细解
    TCP/IP 详解7 Ping指令
    Vue JSX、自定义 v-model
    DOM 元素的循环遍历
    关于 Blob
    Vue.nextTick 的应用解析
    弹窗组件及其回调函数
    krry-transfer ⏤ 基于 element 的升级版穿梭框组件发布到 npm 啦
    防抖与节流 & 若每个请求必须发送,如何平滑地获取最后一个接口返回的数据
    Java 单文件、多文件上传 / 实现上传进度条
  • 原文地址:https://www.cnblogs.com/devtrees/p/4373475.html
Copyright © 2011-2022 走看看