全网最全JAVA基础知识汇总——(数据类型)

思维导图

需要全部思维导图的点赞并且评论区回复“思维导图”

数据类型

字符类型

String

  • 能保存多个字符,可以保存空字符
  • 字符串拼接:两个字符串要使用+ 进行拼接
  • 用双引号""保存

 char

  • 仅保存单个字符,且不可以保存空字符
  • 底层保存的是数字
  •  用单引号''保存

String与char都可以保存转义字符

//常见标识符
'\''    //单引
'\\'    //反斜杠
'\t'    //制表符
'\n'    //换行

 整数类型

byte

长度:1个字节

取值范围:-2^7~(2^7-1)—>-128~127

short

长度:2个字节

取值范围:-2^15~(2^5-1)

int

长度:4个字节

取值范围:-2^31~(2^31-1)

long

长度:8个字节

取值范围:-2^63~(2^63-1)

 浮点型

float(单精度浮点数)

double(双精度浮点数)

 布尔型

 boolean

数据范围

byte—>short—>int—>long—>float—>double

数据类型互相转换

自动类型转换

小——>大

范围大的数据类型变量 = 范围小的数据类型值

long->float时,当数据值过大

(如:超过1千万时),会造成中部分数据丢失(建议直接long—>double)

强制类型转换

大——>小

范围小的数据类型变量 = (范围小的数据类型)范围大的数据类型值

注意强类型转换可能造成数据溢出(丢失)

丢失可能

1、小数位丢失

2、高位数据丢失

3、数据位被转化为符号位

数据保存在哪里

1、寄存器

寄存器是速度最快的数据存储方式,数据直接保存在中央处理器,然而寄存器的数量是有限的,所以只能按需分配。

JVM中有4种常见的寄存器:

  • pc程序寄存器
  • optop操作数栈顶指针
  • frame当前执行环境指针
  • vars指向当前执行环境中第一个局部变量的指针

所有寄存器都为32位。

pc用于记录程序的执行,optop,frame和vars用于记录指向Java栈区的指针。

2、栈

数据存储在随机存取存储器里,处理器可以通过栈指针直接操作该数据。具体来说,栈指针向下移动将申请一块新的内存,向上移动则会释放这块内存。这是一种及其迅速和高效的内存分配方式,其效率仅次于寄存器。只不过Java系统在创建应用程序时就必须明确栈上所有对象的生命周期。这种限制约束了程序的灵活性,因此虽然有一些数据会保存在栈上,对象本身却并非如此。

3、堆

堆是一个通用的内存池,用于存放所有Java对象,new出来的对象都存放在堆中。堆内存的分配和清理要比栈存储话费更多的时间。

4、常量存储

常量通常会直接写在程序代码中,不可变。

5、非RAM存储

不保存在应用程序里的数据,最典型的例子就是序列化对象,它指的是转换为字节流并可以发送到其它机器的对象。另一个例子则是持久化对象,它指的是保存在磁盘上的对象。也支持使用数据库存储对象信息。

大多数微处理芯片有额外的缓存内存,只不过缓存内容使用的是传统的内存管理方式,而非寄存器。

一个例子是字符串常量池,所有字符串和字符串常量都会被自动放置到这个特殊的存储空间中。

特殊情况 -> 原始类型

原始类型是直接创建一个“自动变量”,不是引用,该变量直接在栈上保存它的值,运行效率更高。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值