android数据类型

本文详细介绍了Java的基本数据类型,包括字节、短整型、整型、长整型、浮点型、布尔型和字符型,以及它们的封装类。重点讨论了Integer.parseInt()和Integer.valueOf()在数据转换中的应用,解释了在-128到127范围内Integer对象的缓存机制。此外,还概述了引用数据类型,包括数组、类和接口的概念。
摘要由CSDN通过智能技术生成

我特别尊敬的一个人说过一句话:“原生有的方法就用原生的,不要搞骚操作。”,en!骚操作搞不好程序就蹦了,而且还繁琐不美观等。那么想用原生的方法,也得知道Google封装的库有什么方法,不知道就没办法用了。今天就整理一下数据类型的知识吧!毕竟数据类型的转换还是很常用的。

java数据类型有哪些

基本数据类型

byte(字节型); short(短整型); int(整型); long(长整型); float(单精度浮点型); boolean(布尔值); char(字符型); double(双精度浮点型)。那么平常用的String类型属于什么呢?String是类哦!String是字符串,是char的有序集合,并且该值不可修改,因为java.lang.String类是final类型,不可继承和修改。
封装类类型(就是对基础数据类型进行封装后的类):Boolean,Character,Byte,Short,Integer,Long,Float,Double。

序号数据类型字节数起始(默认)值存储范围封装类型
1byte(字节型)1byte8-bit0存储从 -128 到 127 的整数Byte
2short(短整型)2bytes16-bit0存储从 -32768到 32767 的整数Short
3int(整型)4bytes32-bit0存储从 -2147483648到 2147483647的整数Integer
4long(长整型)8bytes64-bit0L存储从 -9223372036854775808到 9223372036854775807 的整数Long
5float(单精度浮点型)4bytes32-bit0.0F范围为-2^128 ~ +2^127,也即-3.40E+38 ~ +3.40E+38。存储小数,足够存储6到7位小数Float
6double(双精度浮点型)8bytes64-bit0.0D范围为-2^1024 ~ +2^1023,也即-1.79E+308 ~ +1.79E+308。存储小数,足够存储15位小数Double
7boolean(布尔类型)1bit1-bitfalsetrue/falseBoolean
8char(字符型)2bytes16-bit‘\u0000’(对应数字0,输出为空)存储单个字符/字母或ASCII值Character

基本数据类型转换

Integer.parseInt(String s)的作用就是把字符串s解析成有符号的int基本类型,将字符串参数作为有符号的十进制整数进行分析,使用“==”作比较,不能使用equals。
Integer.valueOf(int i) 返回一个表示指定的 int 值的 Integer 对象。Integer.valueOf(s)多次解析相同的一个字符串时,得到的是Integer类型的对象,注意:-128-127之间,同一个int转换为Integer对象后,是同一个对象,value值相等,不在该范围时同一个int转换为Integer对象后,不是同一个对象,但是value值相等。 测试:
在-128-127范围内:

    @Test
    public void testInt(){
        int it = 10;
        Integer itg = 11;
        try {
            Integer intToInteger1 = Integer.valueOf(it);
            Integer intToInteger2 = Integer.valueOf(it);
            boolean intBoolean = (intToInteger1 == intToInteger2);//对比两个对象
            boolean intBooleanValue = intToInteger1.equals(intToInteger2);//对比两个对象中的value值
            System.out.println( "intBoolean: "+ intBoolean  + ", intBooleanValue: " +intBooleanValue );
        }catch (Exception e){
            System.out.println("error: " + e.getMessage());
        }
    }


输出结果:
intBoolean: true, intBooleanValue: true

在-128-127范围外:

    @Test
    public void testInt(){
        int it = 1000;
        Integer itg = 11;
        try {
            Integer intToInteger1 = Integer.valueOf(it);
            Integer intToInteger2 = Integer.valueOf(it);
            boolean intBoolean = (intToInteger1 == intToInteger2);//对比两个对象
            boolean intBooleanValue = intToInteger1.equals(intToInteger2);//对比两个对象中的value值
            System.out.println( "intBoolean: "+ intBoolean  + ", intBooleanValue: " +intBooleanValue );
        }catch (Exception e){
            System.out.println("error: " + e.getMessage());
        }
    }

输出结果:
intBoolean: false, intBooleanValue: true

原因:这是由于JDK中源码已经定义好的。由于在-128-127之间整数值使用频繁,获取其Integer对象时,直接从缓存中拿到这个对象,所以value值相同的Integer对象都是对应缓存中同一个对象。-128-127之外的整数值用的不是太频繁,每次创建value值相同的Integer对象时,都是重新创建一个对象。

小贴士:测试代码可以写在ExampleUnitTest文件,能快速验证结果,提高编码效率。如下图:
测试
Integer.valueOf(String s) ,s为可转数字情况下,转换后的Integer对象是和上面的Integer.valueOf(int i)一致;s为非数字的情况下,转换为Integer类型时会报错,所以需要抛出异常避免崩溃。 如下:

    @Test
    public void test(){
        String st = "你好!";
        System.out.println("st: " + st );
        try {

            Integer stringToInteger = Integer.valueOf(st);
            System.out.println("stringToInteger: " +stringToInteger );
        }catch (Exception e){
            System.out.println("error: " + e.getMessage());
        }
    }

输出结果:
st: 你好!
error: For input string: "你好!"

其他数据类型差不多,转换的时候记得抛出异常就行,这里就不在叙述了。

引用数据类型

数组、类、接口。

数组

静态初始化:初始化时由程序员显式指定每个数组元素的初始值,有系统决定数组的长度。
如:arrayName = new type[]{element1,element2,element3…}或type[] arrayName = {{element1,element2,element3…}
动态初始化:初始化时由程序员指定数组的长度,由系统初始化每个数组元素的默认值。
如:arrayName = new type[length];

类与对象时整个面向对象中最基础的组成单元。
类:类是一个模板,是抽象概念的集合,它描述一类对象的行为和状态。不可直接使用。
对象:对象是一种个性的表示,表示一个独立的个体,每个对象拥有自己独立的属性,依靠属性来区分不同对象,是类实例,它有状态和行为。可直接使用。

接口

接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。
接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法。
除非实现接口的类是抽象类,否则该类要定义接口中的所有方法。
接口无法被实例化,但是可以被实现。一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须声明为抽象类。另外,在 Java 中,接口类型可用来声明一个变量,他们可以成为一个空指针,或是被绑定在一个以此接口实现的对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值