基本数据类型变量间的自动类型提升规则

基本数据类型变量间的运算规则

  1. 这里提出可以做运算的基本数据类型有7种,不包含boolean类型.
  2. 运算规则包括:
    • 自动类型提升
    • 强制类型转换
  3. 此VariableTest3.java用来测试自动类型提升
    • 规则:当容量小的变量与容量大的变量做运算时,结果自动转换为容量大的数据类型
      • byte —> short —> int —> long —> float —> double
      • 特别的:byte、short、char(两个char类型做运算也一样)类型的变量之间做运算,结果为int类型,原因是防止溢出
    • 说明:此时的容量小或大,并非指占用的内存空间的大小,而是指表示数据的范围大小
      • long(8字节)、float(4字节)
public class VariableTest3{
     public static void main(String[] args){
     int i1 = 10;
     int i2 = i1;
     
     long l1 = i1;     
     float f1 = l1;

     byte b1 = 12;
     int i3 = b1 + i1;
    }
}

注意:

     int i1 = 10byte b2 = 20byte b2 = i1 + b2;   // 此时默认的类型为int

错误原因: 不兼容的类型: 从int转换到byte可能会有损失

// 特殊的情况1: byte、short之间做运算
	byte b3 = 12;
	short s1 = 10;
	// 编译不通过 
	// short s2 = b3 + s1;
	int i4 = b3 + s1;
    // 编译不通过,short也一样
    // byte b5 = b2 + b3; 
// 特殊的情况2: char
char c1 = 'a';
// 编译不通过
// char c2 = c1 + b3;
int i5 = c1 + b3; 

练习1:

long l2 = 123L; // 8个字节  
long l3 = 123; //相当于int类型,占4个字节  理解为:自动类型提升
long l4 = 123123123123; // 123123123123理解为int类型,因为超出了int范围,所以报错
long l5 = 123123123123L;// 此时的123123123123L就是使用8个字符存储的long类型的值

练习2:

float f2 = 12.3F;
// 编译不通过
// float f3 = 12.3; // 不满足自动类型提升的规则(double ---> float),所以报错

练习3:

// 规定1:整型常量,规定是int类型
byte b5 = 10;
// byte b6 = b5 + 1;
int ii1 = b5 + 1;

// 规定2:浮点型常量,规定是double类型
double dd1 = b5 + 12.3;

练习4:说明为什么不允许变量名是数字开头的,为了"自洽"

int 123L = 12;
long l6 = 123L;

题外话:自己开发一种语言涉及到两个规则

  1. 编写语法规则
  2. 编译器 javac.exe —> .class —> JVM(可以认为是世界上最强大的虚拟机)

以上两条是尚硅谷的宋老师讲的

以下是我从网络搜索来的:
自己开发一种编程语言需要涉及以下方面:

  1. 语法设计:需要设计编程语言的语法规则,包括关键字、运算符、变量类型等,这是编程语言的基本框架。

  2. 语义设计:需要确定编程语言的语义规则,即编程语言中各个元素的含义以及它们之间的关系。这是编程语言的核心。

  3. 编译器/解释器设计:需要设计编译器或解释器来实现编程语言,将源代码转换为可执行代码。

  4. 标准库设计:需要设计标准库来提供常用的函数和类,以便开发人员能够更方便地使用编程语言。

  5. 文档和教程编写:需要编写文档和教程,以帮助用户了解和使用编程语言。

  6. 测试和调试:需要对编程语言进行测试和调试,以确保它在各种情况下都能正常工作。

  7. 版本控制:需要使用版本控制工具来管理编程语言的代码和文档,以便进行版本控制和协作开发。

  8. 社区建设:需要建立社区来推广和发展编程语言,吸引更多的开发者加入到这个项目中来。

  9. 上述8条仅供参考

笔记来源:

尚硅谷Java零基础全套视频教程(宋红康2023版,java入门自学必备第二十八集

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值