Java数据类型

来源:互联网 发布:js strict 编辑:程序博客网 时间:2024/06/04 18:11

数据类型

  • 基本数据类型

    • 基本数据类型

      • 整型
        - byte:1字节8位;取值范围:-128~127
        - short:1字符2字节16位;取值范围:-32768~32767
        - int:2字符4字节32位;取值范围:-2e31~2e31-1
        - long:4字符8字节64位;取值范围:-2e63~2e63-1
      • 浮点型
        - float:2字符4字节32位;
        - double:4字符8字节64位;
      • 布尔:boolean:1位;取值范围:true/false
      • 字符:char:1字符2字节16位;取值范围:0-65535 ‘\u0000’~‘\uFFFF’

      注: 内置数据类型的包装类:
      Byte,Short,Integer,Long,Float,Double,Character,Boolean
      查看个数据类型取值范围:

          System.out.println(包装类名.MAX_VALUE);System.out.println(包装类名.MIN_VALUE);//boolean例外System.out.println(Boolean.FALSE);System.out.println(Boolean.TRUE);
    • 引用数据类型:非基本数据类型(String、对象、数组)
      - 用class关键字创建类,用new生成实例对象

      //创建Brid.java文件public class Brid{     public static void main(String[] args) {         //生成实例对象        Brid brid = new Brid();}     }//创建Crow.java文件public class Crow {    private Brid brid;     public static void main(String[] args) {         //生成实例对象        Crow crow = new Crow();}     }
  • 类型转换

    • 隐式类型转换

      • 规则

        • 类型兼容

          public class ExplicitConversions {public static void main(String[] args) {    byte b = 12;    short s= 12;    float f= 12.0f;    byte bb=(byte)s;    //byte bb=(byte)f;存在兼容问题}}
          • 目标类型大于源类型:
            byte <  short < int < long <float < double  [ char < int < long < float <double]
        • 数值型表达式的转换
          - 有double时double
          - 有float时float
          - 有long时long
          - 其余为int

        public class ExplicitConversions {            public static void main(String[] args) {                byte b = 12;                short s= 12;                int i= 12;                long l= 12l;                float f= 12.0f;                double d= 12;                char ch= 'b';                //char cc=b+s;                int ii=b+s+c;                long ll=b+s+ch+i+l;                float fl=b+s+i+l+ch+f;                double dl=b+s+ch+i+l+f+d;            }        }
  • 强制转换数值型
    - 大类型的数据转换成小的类型,需要使用(类型名)进行强制转换
    - 强制转换可能导致精度丢失
    - char可以与整数型进行互转
        public class ExplicitConversions {        public static void main(String[] args) {        byte b = 12;        short s= 12;        int i= 12;        long l= 12l;        float f= 12.0f;        double d= 1200;        char ch= 'b';        byte bb=(byte)s;        int ii=ch;        char c=(char)ii;        float fl=(float)d;        short sh=(short)d;        byte by=(byte)d;        //输出1200        System.out.println(sh);        //造成精度损失,输出-80        System.out.println(by);        }        }
  • a=a+b与a+=b区别

      +=操作符会进行隐式自动类型转换,此处a+=b隐式的将加操作的结果类型强制转换为持有结果的类型,而a=a+b则不会自动进行类型转换.如: 

    byte a = 127; byte b = 127; b = a + b; // error : cannot convert from int to byte b += a; // ok /*(译者注:这个地方应该表述的有误,其实无论 a+b 的值为多少,编译器都会报错,因为 a+b 操作会将 a、b 提升为 int 类型,所以将 int 类型赋值给 byte 就会编译出错)*/
  • 引用数据类型

    • 非基本数据类型
    • 使用方式和基本数据类型完全一样
      • 属性
      • 参数
      • 返回值
    • 赋值

      • 使用new关键字来赋值,例外(String和包装器名)

        • class类的引用
        • 可以是我们自己创建的类,也可以引用java库中的类
        • java库中的类
          - Object:Object是类层次结构的根类,每个类都是用Object作为超类,所有对象(包括数 组)都实现这个类的方法。用Object可以定义所有的类。如:

          //来定义一个Interger类Object object= new Integer(1);  // 在来把这个Object强制转换成Interger类 Integer i=(Integer) object;    
        • String :String类代表字符串,Java 程序中的所有字符串字面值(如”abc”)都作为此类的实例来实现。

        • Date :Date表示特定的瞬间,精确到毫秒。Date类现在都被Calendar 和GregorianCalendar所有代替
        • Void :Void 类是一个不可实例化的占位符类,它保持一个对代表 Java 关键字 void 的 Class 对象的引用。
        • 同时也有对应的数字包装类如:Integer 、Long、 Boolean 、Byte 、Character 、Double 、Float 、Short

        • 基本数据类型和引用类型的区别

          基本数据类型引用数据类概念变量(单纯的值)对象(引用) 存储位置在栈中存值在栈中存引用,在堆中存具体对象的属性值赋值方式直接赋值new,String类和包装器类可以直接赋值
原创粉丝点击