Java基本数据类型

定义

计算机中数值的存储方式,设定数值存储单元的存储位置,存储长度和存储形式

分类

根据存储方式分类

这里写图片描述

类型占用字节数表示范围
byte1-128~127
short2 − 2 15 -2^{15} 215~$2^{15}-1 $
int4 − 2 31 -2^{31} 231~$2^{31}-1 $
long8 − 2 63 -2^{63} 263~$2^{63}-1 $
float4-3.403e38~3.403e38
double8-1.798e308~1.798e308

根据存储位置分类

常量

值不能改变的量,编译时就能确定大小
定义方式:

  1. 直接量:
    1(int)、1.0(double)、true(boolean)、‘1’(char)、“1”(字符串)、null(引用型)
    null
    引用类型的默认值,不可以赋给基本类型变量
    表示引用的地址没有生成,≠"",""表示引用有地址,但是地址指向的对象为空
  2. 符号常量:
    符号常量:final int CON_QUA = 1; //常量名必须大写;
    赋值:因为常量值不能改变,所以定义时就必须赋初值,即使作为成员常量也是一样(不能靠计算机去分配)
变量

值不确定,编译时不验证值的大小,只验证语法规范
定义方式

  • int varValue = 1; //变量名习惯开头用小写

使用:

  • 变量必须先被赋值过(包括系统默认赋值),才能使用,否则出错(不赋值就使用时无意义的)

分类:

  • 成员变量:类中定义,存在堆中,垃圾回收机制进行回收
    1)类变量:static修饰,存在类名指向的静态方法区内存
    2)实例变量:无static修饰,存在于对象名指向的堆内存
  • 局部变量:函数中定义,存在栈中,无需垃圾回收机制,随方法或代码块结束而结束
    1)形参
    2)方法局部变量
    3)代码块局部变量

类型转换

自动类型转换:

低等级的数据类型转换为高类型的数据类型(可能存在精度损失)

  • 规则:
    1、引用类型向上转型,子类引用赋值给父类引用(父类引用指向子类对象)
    2、基本类型和字符串进行连接运算时,基本类型的值将自动转换为字符串类型
    3、基本类型之间运算时,若类型不一,则低等数据类型先自动转换,再运算
    这里写图片描述
      特例:
      short、char、byte型变量在运算时总会自动提升为int型变量
      byte x=1;  //正确,编译器可以判断未越界,无需强转
      byte y=x;  //正确,编译器能确定不会越界
      byte y=x+1; //错误,byte型参与运算自动提升为int型,发生越界
      byte z=x+y; //错误,byte型参与运算自动提升为int型,发生越界
      final byte a=1;
      final byte b=2;
      byte c=a+b; //正确,虽然由于参与运算自动提升为int型,但因为a和b都是常量,编译器可以判断未越界

强制类型转换:

高等级的数据类型转换为低等级的数据类型

  • 类型显式强转:
  • 常量:
    只有9L和9F两种形式,并且L只能放在整数常量前
  • 变量:
  1. 基本类型
    除boolean类型外,通过()进行强制转换(boolean类型不能强转)
  2. 引用类型的强转:
    1、只发生在具有继承关系的子父类型之间,即父类引用强制转换为子类引用(向下转型)
    2、父类引用强转之前,指向的对象必须是强转子类引用的对象或其子类对象,否则运行报错
    3、对于转型:自始至终都是子类对象在做着类型的变化
  • 特例:
    整形常量(int型)在不超越对应低级类型的可取值范围时,可以直接赋值,无需强制类型转换
    —编译器可以检查常量是否满足范围要求,但是不能检查变量
    bytex=1;//正确
  • 赋值运算符+=-=*=/=+±-等,会将左右两边的运算结果进行强制类型转换为左边变量类型
    如:bytex=0;
    x=x+3;//报错,byte型x在进行运算时,由于和整形3进行相加,类型提升为整形,且右边含有变量,运算结果为整形变量,可能发生越界错误
    x+=3;//等效于x=(byte)(x+3);正确

参考文献

https://blog.csdn.net/qwe969153746/article/details/53353534 Java基本数据类型

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值