java的数据类型与转换

三、Java的数据类型

​ Java是一门强类型的编程语言,它不同于一些弱类型的语言(JavaScript ,php,python),Java在声明变量时必须显示的定义变量的数据类型,变量的类型一旦定义,则不能改变 。Java中数据类型分为两大类

1、基本数据类型 : 包括 整数,浮点,字符,布尔类型等

2、引用数据类型 :包括 类,数组,集合,接口等

1、基本数据类型

  • 整数型 ,默认值为0
数据类型关键字字节长度数值范围
字节型byte1个字节=8位-128~127
短整型short2个字节=16位-32768~32767
整型int(默认)4个字节=32位-2的31次方 ~2的31次方-1
长整型long8个字节=63位-2的63次方~2的63次方-1
  • 浮点型,默认值为0.0

    数据类型关键字字节长度范围
    单精度float4个字节1.4013E-45~3.4028E+38
    双精度double8个字节4.9E-324~1.7977E+308
  • 字符型 默认值 ‘ ’

    数据类型关键字字节长度范围
    字符型char2个字节0~65535

    一个字符能存放一个中文汉字

  • 布尔型 默认值 false

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

    注意:

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

    对于字符类型中 "\ " 表示转移字符,不会占用内存

    \n :换行

    \t : 一个制表符tab

    \b: 表示退格

    \r: 表示enter

2、引用数据类型

 在Java中除了8个基本数据类型以外的数据类型,都是引用数据类型 ,常用的引用数据类型 包括  类、数组、 接口,String 等

 以类 举例

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

定义一个学生类,这个类就是引用数据类型 
  public class Student{
          // 定义的一个字符串变量  
         String stuname="张三";
         char  sex= '男';
         int age = 20// 定义一个方法 
         public void showInfo(){
             System.out.println(stuname);
             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 其中boolean类型不参与转换

​ char ->int

​ 转换原理: 类型向上提升

2、强制类型转换

  • ​ 整数之间的强转
         // 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 则小数会丢失,
        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);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值