数据类型、数据类型拓展、类型转换

本文详细介绍了Java中的基本数据类型,包括整数、浮点、字符和布尔类型,以及它们的字节大小。同时,讲解了数值类型的二进制、八进制、十六进制表示和浮点数的精度问题。此外,还讨论了字符的Unicode编码以及转义字符的使用。文章进一步阐述了Java中的类型转换规则,包括自动类型转换和强制类型转换,以及转换可能遇到的溢出和精度问题。最后,通过示例展示了类型转换在实际编程中的应用。
摘要由CSDN通过智能技术生成

数据类型

基本类型(primitive type)

  • 数值类型

  1. 整数类型:byte(占1字节)、short(占2字节)、int(占4字节)、long(占8字节)

  2. 浮点类型:float(占4字节)、double(占8字节)

  3. 字符类型:char(占2字节)

  • 布尔类型:boolean(占2字节)

         //八大基本数据类型
 ​
         //整数
         int num=10;//最常用
         byte num1=20;
         short num2=30;
         long num3=30L;//long要在数字后面加 L
 ​
         //小数:浮点数
         float num4=50.1F;//float要在数字后面加 F
         double num5=3.1415926589;
 ​
         //字符
         char name='l';
         //字符串String不是关键字,是类
         //String namel="lyf";
 ​
         //布尔值:是非
         boolean flag=true;
         boolean flag1=false;

引用类型(reference type)

数据类型拓展

         //整数拓展:二进制0b、十进制、八进制0、十六进制0x
         int i = 10;
         int i2 = 010;
         int i3 = 0x10;
 ​
         System.out.println(i);
         System.out.println(i2);
         System.out.println(i3);
         System.out.println("============================================");
 ​
         //=====================================================
 ​
         //浮点数拓展
 ​
         //float 有限、离散、舍入误差、大约、接近但不等于
         //double
         //最好避免使用浮点数进行比较
         //最好避免使用浮点数进行比较
         //最好避免使用浮点数进行比较
         //银行业务用Bigdecimal(数学工具类)表示
 ​
         float f = 0.1f;
         double d = 1.0 / 10;
 ​
         System.out.println(f == d);//false
         System.out.println(f);
         System.out.println(d);
 ​
         float d1 = 232323232323f;
         float d2 = d1 + 1;
 ​
         System.out.println(d1 == d2);//true
         System.out.println("========================================");
 ​
         //====================================================
         char c1 = 'a';
         char c2 = '中';
 ​
         System.out.println(c1);
 ​
         System.out.println((int) c1);//强制转换类型
 ​
         System.out.println(c2);
 ​
         System.out.println((int) c2);//强制转换类型
 ​
         //所有的字符本质是数字
         //编码Unicode,2字节,0-65536
         //U000,UFFF
 ​
         char c3 = '\u0061';
 ​
         System.out.println(c3);//a
         System.out.println("===============================================");
 ​
         //=====================================================================================
         //转义字符
         //\t 制表符
         //\n 换行
 ​
         System.out.println("Hello\tWorld");
         System.out.println("Hello\nWorld");
         System.out.println("===============================================");
 ​
         //====================================================================
 ​
         //布尔值拓展
         boolean flag = true;
         if (flag = true) {}//与下面一样
         if (flag) {}//与上面一样
         //代码要精简

类型转换

  • 运算中,不同类型数据先转换为同一类型。

优先级:低---------------------------------------------------------->高

byte,short,char -> int -> long -> float -> double

  • 整数优先级小于浮点数

 int i = 128;
 byte b = (byte)i;//内存溢出
 double d = i;
 ​
 //强制类型转换:(类型)变量名 高-->低
 //自动类型转换:低-->高
 ​
 System.out.println(i);
 System.out.println(b);
 System.out.println(d);
 System.out.println("=============================================");
 ​
 /*
 1、不能对布尔值进行转换
 2、不能把对象类型转换为不相干的类型
 3、在把高容量转换到低容量的时候,强制转换
 4、在转换的时候可能存在内存溢出或精度问题
  */
 ​
 System.out.println((int)23.7);//23,精度问题
 System.out.println((int)-45.98f);//-45,精度问题
 System.out.println("================================================");
 ​
 char c = 'a';
 int f = c+1;
 System.out.println(f);
 System.out.println((char)f);
 ​
 //操作较大数时注意溢出问题
 //JDK新特性,数字之间可以用下划线分割
 int money = 1_000_000_000;
 int years = 20;
 int total = money * years;//计算时溢出了
 ​
 System.out.println(total);
 ​
 long total2 = money * years;//默认时int,转换前就存在问题
 ​
 System.out.println(total2);
 ​
 long total3 = money * ((long)years);//先把一个数值转换为long
 ​
 System.out.println(total3);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值