zoukankan      html  css  js  c++  java
  • java基本数据类型与引用数据类型详解

      在java中类型可以分为两大类:值类型和引用类型。

      值类型就是基本数据类型,包含8种,如下所示:

    byte:Java中最小的数据类型,在内存中占8位(bit),即1个字节,取值范围-128~127,默认值0

    short:短整型,在内存中占16位,即2个字节,取值范围-32768~32717,默认值0

    int:整型,用于存储整数,在内在中占32位,即4个字节,取值范围-2147483648~2147483647,默认值0

    long:长整型,在内存中占64位,即8个字节-2^63~2^63-1,默认值0L

    float:浮点型,在内存中占32位,即4个字节,用于存储带小数点的数字(与double的区别在于float类型有效小数点只有6~7位),默认值0

    double:双精度浮点型,用于存储带有小数点的数字,在内存中占64位,即8个字节,默认值0

    char:字符型,用于存储单个字符,占16位,即2个字节,取值范围0~65535,默认值为空

    boolean:布尔类型,占1个字节,用于判断真或假(仅有两个值,即true、false),默认值false

      引用类型:类型分3种:类,接口,数组;

    Java语言本身不支持C++中的结构(struct)或联合(union)数据类型,它的复合数据类型一般都是通过类或接口进行构造,类提供了捆绑数据和方法的方式,同时可以针对程序外部进行信息隐藏。

    上述所有的类型在内存中都会分配一定的存储空间(形参在使用的时候也会分配存储空间,方法调用完成之后,这块存储空间自动消失), 基本的变量类型只有一块存储空间(分配在stack中), 而引用类型有两块存储空间(一块在stack中,一块在heap中),

    引用也是一种数据类型,需要一定的内存空间(stack,栈空间)来保存。但是它们的值是相同的,都指示同一个对象在内存(heap,堆空间)的中位置

    比如 int[] a = new int[]{1,2,3};

    int[] a为引用,需要一定的内存空间,即栈来存储但是它们的值是相同的,都指示同一个对象在内存(heap,堆空间)的中位置,即new int[]{1,2,3}放在堆中不同的引用可能指向同一对象

    JAVA变量的默认初始化在Java基本类型在使用字面量赋值的时候,有几个简单的特性如下:

    1】当整数类型的数据使用字面量赋值的时候,默认值为int类型,就是直接使用0或者其他数字的时候,值的类型为int类型,所以当使用  long a = 0这种赋值方式的时候,JVM内部存在数据转换。

    2】浮点类型的数据使用字面量赋值的时候,默认值为double类型,就是当字面两出现的时候,JVM会使用double类型的数据类型。

    3】从JDK 5.0开始,Java里面出现了自动拆箱解箱的操作,基于这点需要做一定的说明:

    对应原始的数据类型,每种数据类型都存在一个引用类型的封装类,分别为Boolean、Short、Float、Double、Byte、Int、  Long、Character,这些类型都是内置的封装类,这些封装类(Wrapper)提供了很直观的方法,针对封装类需要说明的是,每种封装类都有一个xxxValue()的方法,通过这种方法可以把它引用的对象里面的值转化成为基本变量的值,不仅仅如此,每个封装类都还存在一个valueOf(String)的方法直接把字符串对象转换为相应的简单类型。

     在JDK 5.0之前,没有存在自动拆解箱的操作,即Auto Box操作,所以在这之前是不能使用以下方式的赋值代码的:Integer a = 0;//这种赋值方式不能够在JDK 1.4以及以下的JDK编译器中通过,但是JDK 5.0出现了自动拆解箱的操作,所以在JDK 5.0以上的编译器中,以上的代码是可以通过的

    引用数据类型:

    数组

    String:字符串型,用于存储一串字符

    Java变量声明及使用:

    数据类型变量名 =值、表达式;

    例:String name = "柯南";

        int a= 50;

    注:“=”并不是数学中的“等号”,而是一个赋值运算符

    Java变量命名规则:

    1:必须以字母、下划线“_”、或“$”符号开头

    2:可以包括数字、区分大小写

    3:不能使用Java语言的关键字,例如int、class、public等

    Java中的六种运算符:

    ·   算术运算符

    ·   赋值运算符

    ·   关系运算符

    ·   逻辑运算符

    ·   位运算符

    ·    三元运算符

     

    算术运算符:

    +:加法运算,求操作数的和

    -:减法运算,求操作数的差

    *:乘法运算,求操作数的乘积

    /:除法运算,求操作数的商

    %:求余运算,求操作数相除的余数

    ++:自增,操作数自加1

    --:自减,操作数自减1

     

    赋值运算符:

    =:将右边的值赋给左边,例:int a = 1;

    +=:左右两边的和相加赋给左边,例:int a = 1; a+=2;结果a的值为3

    -=:左边减去右边的差赋给左边,例:int a =5;a-=2;结果a的值为3

    *=:两边数值相乘的值赋给左边,例:int a = 2;a*=2;结果a的值为4

    /=:左边除以右边的值赋给左边,例:int a = 6;a/=2;结果a的值为3

    %=:左边除以右边的余数赋给左边,例:int a =7;a%=2;结果a的值为1

     

    关系运算符

    >:大于,例:int a = 1;int b = 2;System.out.print(a > b);其结果为false

    <:小于,例:int a = 1;int b = 2;System.out.print(a < b);其结果为true

    >=:大于等于,例:int a = 1;int b = 2;System.out.print(a >= b);其结果为false

    <=:小于等于,例:int a = 1;int b = 2;System.out.print(a <= b);其结果为true

    ==:等于,例:int a = 1;int b = 2;System.out.print(a == b);其结果为false

    !=:不等于,例:int a = 1;int b = 2;System.out.print(a != b);其结果为true

      其结果都是boolean类型,即要么是true要么是false

     

    逻辑运算符

    &&:与、并且(短路),    两个条件同时为真时,结果为真

    ||:或、或者(短路),    两个条件有一个为真时,结果即为真

    !:非,(!+条件)  条件为真时,结果为假

     

    Java中的数据类型转换

    1:自动数据类型转换(放大转换)

    满足自动数据类型转换条件:

    1)两种类型要兼容:如数值类型(整型和浮点型)

    2)目标类型大于源类型:例如int型数据可以自动转换为double类型

     

     

    2:强制数据类型转换(缩小转换)

    在变量前加上括号,在括号中指定要强制转换的类型

    例:double a = 40.9;

        int b= (int)a;

    注:强制转换会损失数值精度,例如double类型变量a,经强制转换为int类型后值变为40

  • 相关阅读:
    (六)定时测量
    (五)内核同步
    (四)中断和异常
    smba
    (四)支持 Nand Flash
    (三) 支持Nor Flash
    Convolutional Neural Networks(5):Pooling Layer
    Convolutional Neural Networks(4):Feature map size,Padding and Stride
    Convolutional Neural Networks(3):Convolution and Channels
    Convolutional Neural Networks(2):Sparse Interactions, Receptive Field and Parameter Sharing
  • 原文地址:https://www.cnblogs.com/zjf-293916/p/9209893.html
Copyright © 2011-2022 走看看