• Java数据类型、数据类型的转换、ASCLL码表


    一、Java的数据类型

    ​ Java是一门强类型的编程语言,它不同于一些弱类型的语言(JavaScript、Python、PHP...)变量的类型一旦确定,则无法修改,在Java中数据类型主要包括以下两大类:

    • 基本数据类型:包括整数、浮点、字符、布尔类型。
    • 引用数据类型:包括类、数组、集合、接口等。

    1、基本数据类型

    • 整数型 默认值为0
    数据类型 关键字 字节长度 数值范围
    字节型 byte 1个字节 -128~127
    短整型 shrot 2个字节 -32768·32767
    整型 int(默认0 4个字节 -2的31次方~-2的31次方-1
    长整型 long 8个字节 -2的63次方~2的63次方-1
    • long(8字节=64bits)long类型数据在赋值时必须在数据值末尾追加一个“L”(大写)

    • 浮点型 默认值0.0

    数据类型 关键字 字节长度 范围
    单精度 float 4个字节 1.4013E-45~3.4028E+38
    双精度 double(默认) 8个字节 4.9E-324~1.7977E+308
    • float(4字节=32bits)float类型数据在赋值时,必须在末尾追加“f”或“F”

    • 布尔型 默认值false

    数据类型 关键字 字节长度 范围
    布尔类型 boolean 1个字节 true false

    关于char类型
    “”在java中是一个转译符号,可以将斜杠之后的内容转译为特殊符号,如:
    换行
    制表符
     退格

    注意事项

    ​ 在对浮点数操作时。可能会由于计算机进行运算时精度丢失问题,导致实际结果跟预期结果不一致,例如:

       //对于两个double类型/float类型的数计算,由于计算机在计算时会缺失精度
       //不是预期的0.3,建议对于浮点数计算使用java.math.BigDecimal(引用数据类型)
      double d1=0.1;
      double d2 = 0.2;
      double d3 = d1 + d2;
      System.out.println(d3);//实际结果为:0.30000000000000004 而非预期的 0.3
              float f1=0.2f;
              float f2=0.3f;
              float f3=f1-f2;
              //结果 -0.10000000001
             System.out.println(f3);
    

    ​ 因此,在涉及到一些比较敏感的(金额)浮点数据时,不能够使用double或者float;在实际项目中对于这些敏感的浮点数会使用Java.math.BigDecimal(引用数据类型)

    2、引用数据类型

    ​ java中的数据类型除了8基本类型数据外,其余的数据类型都是引用类型,常用的引用类型:类,数组,接口等

    ​ 以 类 举例

    创建学生类 在一个类中会包含一些变量(全局变量)和一些方法

    public class Student{
    //定义的一个字符串变量
        String  stuname=“张三”;
        char sex='男';
        int age=20;     
     //定义一个方法
       public void showInfo(){
     	 System.out.println(syuname);
     	 System.out.println(sex); 	
         System.out.println(age);        
        }
    }
    

    如何使用这个学生类型(引用数据类型)

    public static void main(String[] args){
        //定义学生类型  引用数据类型需要创建  引用对象
        //引用数据类型   变量名= null
        //基本数据类型    变量名=初始值
        //对于类的创建
        //类名  对象名 =  new   类名();
        student  stu= new Student;
        //对象名。方法名();
        stu.showInfo():
    }
    

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

    1. 创建方式不同,基本数据类直接通过定义变量的方式创建,而引用数据类型需要new一个对象
    2. 在JVM的内存分配不同,基本数据类型的内存在栈内存中直接创建,而引用数据类型是在栈内存中定义引用的地址,实际的内存分布在堆内存中
    3. 引用数据类型,可以调用它的方法,而基本数据类型没有

    引用数据类型的内存分布图

    基本数据类型的内存分布图

    二、java的数据类型的转换

    为什么需要数据类型转换?

    ​ 在Java中数据进行计算时,必须要求计算的元素的数据类型一致,如果数据类型不一致需要进行转换

    数据转换分类

    1、自动类型转换

    ​ 转换规则:范围小的类型向范围大的类型(从小到大)

    ​ byte—>short—>int—>long—>float—>double

    布尔类型不参与转换

    2、强制转换类型

    • 整数与整数之间的强转
    public static void main(String[] args) {
    //int类型
    int i=1;
    //byte  类型
    byte j=100;
    //由于i和j不同类型, 不能直接计算,程序会自动将j的类型向上提升为int类型
    //所以i+j之后依然时 int类型
    //此时  int的内存的阿玉byte的内存  会出现数据溢出的情况,JVM不允许
    //byte s=i+j;   等号两边类型不匹配
    int y=i+j;
        System.out.println(y);
        //如果一定要使用byte赋值  还有一种办法  就是将两边的类型一致
        byte s=(byte)(i+j);   //两个数再相加时  会先自动提升到int类型  然后再相加
    }
    
    • 整数与小数之间的强转
    //整数和小数之间 也会丢失精度
    int n2=100;
    double n3=3.5;
    int n4= (int)(n2+n3);
    //相加时先提升为double类型,然后相加后得到double类型
    //double时8个字节  不能放在4个字节的长度中
    //(这里好比double为一桶水   int为一杯水  相当于将一桶水倒入一杯水中)
    //只能留住一杯水的内容  所有 这里如果强转int  小数会丢失精度0
    System.out.println(n4);
    
    • 小数与小数之间的强转
    //  float  与  double  类型
        float f1=3.14f;
        double d2=3.5;
        double dd=f1+d2;
        float ff=(float)(f1+d2);
    
    • 丢失精度的情况
      // 强转时会丢失精度
        byte n = 100;
        int  m = 30;
        byte mm = (byte)( n + m); // 因为最大值为127  再往后就是从最小值开始-128
        System.out.println(mm);
        // 整数和小数之间 也会丢失精度
        int n2 = 100;
        double n3 = 3.5;
        int n4 = (int)(n2 + n3);
    

    三、Java的字符和ASCLL码表

    字符 int值
    a 97
    A 65
    0 48
    依次小写字母往后都是数字,例如b为98,C为99...
    A:65 B:66 C:67 0:48 1:49 2:50 .....



    • 字符与数据的转换
    public static void main(String[] args) {
        //int   与   char类型的转换
        //每一个char类型都有一个ASCll码表
        char c='a';
        //自动提升:因为char类型占2个字节  int占4个字节
        int n=c;
        System.out.println(n);
        //先相加 在转换
        char c2=(char)(n+2); //需要强转
        //字符+字符
        char c3='a'+'b';
        System.out.println((int)c3);
    }
    
  • 相关阅读:
    BETA版使用说明
    项目冲刺第二阶段Fifth Day
    第二阶段 项目冲刺Forth Day
    项目冲刺第二阶段Third Day
    项目冲刺第二阶段Second Day
    “渴了么”使用说明(供用户发表评论)
    项目冲刺第二阶段 每日站立会议First Day
    Alpha版总结会议
    alpha版使用说明书
    绩效考核
  • 原文地址:https://www.cnblogs.com/qzwx63/p/13755206.html
Copyright © 2020-2023  润新知