Java数据类型详细解析

Java数据类型详细解析

  1. 基本数据类型

    1. 整数类型

      Java语言中描述整数数据的类型有:byte、short、int、long,荐int类型

      1. 其中byte类型在内存空间中占1个字节,表示范围是:-2^7 ~ 2^7-1.
      2. 其中short类型在内存空间中占2个字节,表示范围是:-2^15 ~ 2^15-1.
      3. 其中int类型在内存空间中占4个字节,表示范围是:-2^31 ~ 2^31-1. •
      4. 其中long类型在内存空间中占8个字节,表示范围是:-2^63 ~ 2^63-1.
      5. 注意事项
        1. 在Java程序中直接写出的整数数据叫做直接量/字面值/常量,默认为int类 型。若希望表达更大的直接量,则在直接量的后面加上l或者L,推荐L。
        2. 声明一个long 类型的变量初始化比long类型还大 则使用java.math.BigInteger

      代码演示

      /*
      	编程实现整数类型的使用
      */
      
      public class IntTest{
      	public static void main(String[] args){
      		// 1. 声明一个byte 类型的便令并初始化
      		 byte b1 = 25;
      		// 2. 打印变量的数值
      		System.out.println(b1);
      		System.out.println("-------------------");
      		// byte b1 = 128; 错误: 不兼容的类型: 从int转换到short可能会有损失
      		short s1 = 128;
      		// short s1 = 250250; 错误: 不兼容的类型: 从int转换到short可能会有损失
      		System.out.println(s1);
      		System.out.println("-------------------");
      		int i1 = 250250;
      		// int i1 =  2502505006; 错误: 过大的整数: 2502505006
      		// int i1 =  2502505006L;  错误: 不兼容的类型: 从long转换到int可能会有损失
      		System.out.println(i1);
      		long l1 =  2502505006L;
      		System.out.println("-------------------");
      		System.out.println(l1);
      		// 声明一个long 类型的变量初始化比long类型还大 则使用java.math.BigInteger
      		// 笔试题 请问线面代码是否有错吴?若有请指出并说明原因
      		// int i2 = 25;
      		// byte b2 = i2;
      		// System.out.println("b2" = b2); //  错误: 不兼容的类型: 从int转换到byte可能会有损失
      		
      	}
      }
      
    2. 浮点类型(小数)

      Java语言中用于描述小数数据的类型:float 和 double,推荐double类型

      1. 其中float类型在内存空间占4个字节,叫做单精度浮点数,可以表示7位 有效数字,范围:-3.403E38~3.403E38。
      2. 其中double类型在内存空间占8个字节,叫做双精度浮点数,可以表示15 位有效数字,范围:-1.798E308~1.798E308。
      3. 注意事项
        1. Java程序中直接写出的小数数据叫做直接量,默认为double类型,若希望 表达float类型的直接量,则需要在直接量的后面加上f或者F.
        2. 有效位表示超过后的数字不在精确范围之内 数值会出现偏差
        3. 如果希望金钱运算则借助 java.math.BigDecimal 类型

      代码演示

      /*
      	编程实现浮点数类型的使用
      */
      
      public class DoubleTest{
      	public static void main(String[] args){
      		// 1.声明一个float 类型的变量并初始化
      		// float f1 = 3.1415926; 错误: 不兼容的类型: 从double转换到float可能会有损失
      		float f1 = 3.1415926F;
      		// 2. 打印变量的数值
      		System.out.println(f1);  // 3.1415925 默认七位有效数字
      		System.out.println("---------------------");
      		Double d1 = 3.1415926;  // 3.1415926 默认15位有效数字
      		System.out.println(d1);
      		// 4. 笔试考点
      		System.out.println(0.1 + 0.2); //0.30000000000000004 运算是可能产生误差 如果希望金钱运算则借助 java.math.BigDecimal 类型
      	}
      }
      
    3. 布尔类型

      1. Java语言中用于描述真假信息类型有:boolean,数值只有:true 和 false。

      2. 布尔类型在内存空间中所占大小没有明确的规定,可以认为是1个字节。

      3. 代码演示

        /*
        	编程实现布尔类型的使用
        */
        public class BooleanTest{
        	public static void main(String[] args){
        		// 1.声明一个布尔类型的变量
        		boolean b1 = true;
        		// boolean b1; //  错误: 可能尚未初始化变量b1
        		// 2.打印变量的数值
        		b1 = false;
        		System.out.println(b1);
        		// 注意 在java中boolean 只有true 和 false
        		// b1 = 1; 错误: 不兼容的类型: int无法转换为boolean
        	}
        }
        
    4. 字符类型

      1. Java语言中用于描述单个字符的数据类型:char类型。

      2. 其中char类型在内存空间中占2个字节并且没有符号位,表示的范围是: 0 ~ 65535,

      3. 注意事项

        由于现实生活中很少有数据能够被单个字符描述,因此以后 的开发中更多的使用由多个字符串起来组成的字符串,使用String类型加 以描述,

      4. 代码演示

        /*
        	编程实现字符类型的使用
        */
        public class CharTest{
        	public static void main(String[] args){
        		// 1.声明一个 char 类型的变量并初始化
        		char c1 = 'a';
        		// 2. 打印变量的数值
        		System.out.println(c1);
        		System.out.println("对应的编号是" + (int)c1); // 表示的是char类型的c1强制转化为int类型并打印
        		System.out.println("对应的编号是" + 'a');
        		
        		System.out.println("--------------");
        		char c2 = 98;
        		System.out.println(c2);
        		System.out.println("对应的编号是" + (int)c2);
        	}
        }
        
    5. ASCII

      计算机的底层只识别0和1组成的二进制序列,对于字符’a’这样的图案来 说不满足该规则,因此该数据无法直接在计算机中存储,但现实生活中 存在这样的图案数据需要计算机存储,为了使得该数据能够存储起来就 可以给该数据指定一个编号,然后将编号存储起来即可,该编号就叫做 ASCII。

      1. ASCII 表
        在这里插入图片描述

      2. 要求掌握的ASCII有:

        ‘0’ - 48 ‘A’ - 65 ‘a’ - 97 空格 - 32 换行符 - 10

  2. 引用数据类型

    数组、类、接口、枚举、标注

  3. 基本数据类型之间的转换

    1. 自动类型转换

      其中自动类型转换主要指从小类型到大类型之间的转换

      1. 转换规则

        在这里插入图片描述

      2. 代码演示

        /*
        	自动类型转化
        */
        public class AutoTransformTest{
        	public static void main(String[] args) {
        		// 1.定义两个不同类型的变量 并初始化
        		byte b1 = 10;
        		short s1 = 20;
        		// 2. 打印两个变量的值
        		System.out.println("b1 = " + b1); // b1 = 10
        		System.out.println("si = " + s1); // si = 20
        		System.out.println("----------------------");
        		// 3.自动数据类型转换
        		s1 = b1;
        		System.out.println("b1 = " + b1); // b1 = 10
        		System.out.println("si = " + s1); // si = 10
            }
        }
        
    2. 强制类型转换(慎用)

      其中强制类型转换主要指从大类型到小类型之间的转换

      1. 语法格式

        目标类型 变量名 = (目标类型)源类型变量名;

      2. 代码演示

        public class TransformTest{
        	public static void main(String[] args) {
        		// 1.定义两个不同类型的变量 并初始化
        		byte b1 = 10;
        		short s1 = 20;
        		// 2.表示将s1 的数值给变量 b1 ,并覆盖b1原有的数值 相当于从short 类型到byte 类型的转换 小到大, 强制转换
        		// b1 = s1; 错误: 不兼容的类型: 从short转换到byte可能会有损失
        		b1 = (byte) s1;
        		System.out.println("b1 = " + b1); // b1 = 10
        		System.out.println("si = " + s1); // si = 10
        		System.out.println("----------------------");
        		// 3.数据丢失问题
        		s1 = 128;
        		b1 = (byte) s1;
        		System.out.println("b1 = " + b1); // b1 = -128
        		System.out.println("si = " + s1); // si = 128
        	}
        }
        
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白迷上java

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值