数据类型重点知识点总结!

  • 数据类型

    • 强类型语言

      • 要求变量的使用严格符合规定,所有变量必须先定义才能使用
      • java、.NET、C/C++
    • 弱类型语言

      • 相较于强类型语言的规定和要求较为宽松。
      • vb,php,JavaScript
    • Java的数据类型分为两大类

      • 基本数据类型(primitive type)
      • 引用数据类型(reference type)

    jdg

    public class demo2 {
        public static void main(String[] args) {
            //八大基本数据类型
            //整数
    
            int num1 = 10;//最常用
            byte num2 = 20;
            short num3 = 30;
            long num4 = 30L;//long类型要在数字后面加个l
    
            //浮点数:小数
            float num5 = 50.1f;//float类型要在数字后面加个f
            double num6 = 3.1415926d;
    
            //字符类型
            char name = 'a';
            //字符串,String不是关键字,是类
            String namea = "希文";
    
            //布尔值
            boolean flag = false;
    
    补充知识
    • 字节

      • 位(bit):是计算机内部数据储存的最小单位,11001100是一个八位二进制数。

      • 字节(byte):是计算机中数据处理的基本单位,习惯上用大写B来表示。

      • 1B(byte,字节)=8bit(位)

      • 字符:是指计算机中使用的字母、数字、字和符号

    • 转换

    • 1bit表示一位

    • 1Byte表示一个字节 1B=8b

    • 1024B=1KB

    • 1024KB=1M

    • 1024M=1G

      TIPS:一个英文字母为8位,即1个字节;一个汉字为16位,即2个字节。
      

    简单区分一下32位和64位操作系统的区别

    1. 32位的cpu处理器,只能安装32位的电脑操作系统;
    2. 64位的cpu处理器,则可以安装32位和64位操作系统,所以64位处理器是向下兼容的;
    3. 但是,如果真的在64位处理器的电脑上面安装32位操作系统,那么会导致处理器的性能无法充分发挥。
  • 类型转换

    • 由于Java是强类型语言,所以要进行有些运算的时候,需要用的类型转换

      低----------------------------------------------------高

      byte,short,char→int→long→float→double

      #### 这里的低-----高其实是精度的由低到高!

      小数的优先级一定大于整数!
    • 运算中,不同类型的数据先转化为同一类型,然后再进行运算。

    • 强制类型转换(类型)变量名→高-----低

    • 自动类型转换不需要任何操作→低-----高

      public class demo5 {
          public static void main(String[] args) {
              int i = 128;
              double b = i;
              System.out.println(i);
              System.out.println(b);
              //强制转换类型:(类型)变量名→高--低
              /*byte b = i;//转换前
                byte b = (byte)i;//转换后
               */
              //自动转换  不需要加任何东西  低--高
              /*
              注意点:
              1.不能对布尔值进行转换
              2.不能把对象类型转换为不相干的类型
              3.在把高容量转换到低容量的的时候,强制转换
              4.转换的时候可能存在内存溢出,或者精度问题。
               */
              System.out.println("==========================");
              System.out.println((int)23.7);  //23
              System.out.println((int)-45.89); //45
      
              System.out.println("==========================");
              char c = 'a';
              int d = c+1;
              System.out.println(d);
              System.out.println((char)d);
              
          }
      }
      	
      
      溢出问题(重点)
public class demo06 {
    public static void main(String[] args) {
        //操作比较大的数的时候,注意溢出问题。
        //JDK新特性,数字之间可以用下划线分割,符合四位分级,并不会输出下划线。
      1.int money = 10_0000_0000;
        System.out.println(money);

      2.int years = 20;
        int total = money*years;//-1474836480,计算的时候溢出了
        System.out.println(total);

      3.long total2 = money*years;//默认是int,转换为long之前已经出现问题了(溢出了)
        System.out.println(total2);

      4.long total3 = ((long)money)*years;
        //先把一个数转换为long(money和years都行,任选其一),整个表达式都提升为long了.这样就          可以避免溢出了。
        System.out.println(total3);

    }
}
重点分析一下
  1. 新知识点
  • JDK新特性:数字之间可以用下划线分割,符合四位分级,并不会输出下划线。适合我们中国人的一个习惯。非常nice!
  1. 溢出问题
  • 溢出问题:money已经超出了int类型的范围溢出了
  1. 问题滞留
  • 这里为什么输出结果还是错的呢,这里涉及到的问题就是在转换为long类型之前已经出现溢出问题了,到达long这里的时候就是一个有问题的数据
  1. 解决方案
  • 先把一个数转换为long(money和years都行,任选其一),整个表达式都提升为long了.这样就 可以避免溢出了。

  • 底层原理

    • 概念:在Java中,如果两个操作数的类型不同,编译器会将它们提升到更高的数据类型,并执行操作。这个过程称为**“数据类型提升”**。
    • 规则:Java会将较低的数据类型自动转换为较高的数据类型,以便进行操作。
    • 实操:在乘法操作中,如果一个操作数是 int 类型,而另一个是 long 类型,Java会自动将 int 类型提升long 类型,然后执行乘法操作。

    为什么呢?

    因为 long 类型的范围比 int 类型更大,可以容纳更大的值,所以将 int 类型提升为 long 类型可以避免溢出问题。

int 类型,而另一个是 long 类型,Java会自动将 int 类型提升long 类型,然后执行乘法操作。

为什么呢?

因为 long 类型的范围比 int 类型更大,可以容纳更大的值,所以将 int 类型提升为 long 类型可以避免溢出问题。

综上:因此,即使 moneyint 类型,yearslong 类型,Java会自动将 money 提升为 long 类型,然后执行乘法操作,以确保乘法操作在 long 类型范围内进行,避免溢出问题。

  • 15
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值