java中的变量的数据类型

Java数据类型图:
在这里插入图片描述

基本数据类型

基本数据类型,也成内置类型,是可以在栈直接分配内存的。

java是基于JVM的,所以其所占字节固定,与机器平台无关,所有地方统一占用内存的大小(除了boolean,以及byte/short/boolean数据的时候,每个单元所占的内存是有各个JVM自己实现的)。

总共有四类八种数据类型。

在这里插入图片描述

整型:全部是有符号类型

byte

1字节(8bit),高位为符号位,其余7位为数据位,范围:-2的7次方 ~ 2的7次方-1(1111,1111~ 0111,1111),即-128~127。

short

2字节(16bit),高位为符号位,其余15位为数据位,范围:-2的15次方~ 2的15次方-1,即-32768~32767。

int

4字节(32bit),范围-2的31次方~2的31次方-1;

java默认的整型类型。

long

8字节(64bit),范围:-2的63次方~2的63次方-1

浮点型

float

4字节(32bit),单精度,数据范围:(-2^128) ~ (-2^(-23-126)) - (0) - (2^-149) ~ 2^128。

浮点数,通俗来说就是小数,但是,这是有精度要求的,即在这区间 float 可不是能表达任意小数的,而是在一定精度下。

double

8字节(64bit),双精度,范围:-2^1024 ~ (-2^(-1022-52)) - 0 -(2^-1074) ~ 2^1024。

Java默认的浮点类型,即若后面不加f/F,默认是double类型。

字符型

char

2字节(16bit),表示一个字符(可以是汉字),字符编码采用Unicode,实际上就是一个16位的无符号整型。

char c = 3+5;//正确,char是无符号整型,但不能这样
int a1 = 3;int a2 = 5;char c0 = a1+a2;//这里需要强制转换才行
char c1 = -3;//编译错误,char不能表示负数,即使
char c2 = (char)-3;//编译正确,但无意义(乱码)
char c3 = '3';//正确,输出字符3
char c4 = "3";//编译错误,双引号,表示的是字符串
char c5 = '65';//编译错误,这里65是两个字符

布尔型

boolean

逻辑上:1bit,但是实际上,boolean并没有具体规定,完全是看各个JVM实现,不过《Java虚拟机规范》给出了4个字节(同byte解释)和boolean数组一个字节的定义。

引用数据类型

也称对象变量类型,复合数据类型,包含类、接口、数组(除了基本类型外,就是引用类型)。

引用类型与基本类型最大的区别在于:

int a = 5; //这里的a是对象(严格来说不算是对象,只是个符号标识),5是数值
Integer a = 5; //这里的a是一个引用,5才是一个对象,更形象常见的是:
Object o = new Object(); //o是引用(栈中),new Object()是对象(堆中)
//第二行代码中,5被自动包装成Integer对象

引用类型又称为对象变量类型,是相对于基本数据类型来说的(基本数据类型不是对象),而又被称为复合数据类型。

可以这样理解,引用类型的数据最终都是由基本数据类型构成的。而像接口,接口是不能实例化的,最终的实现还是由类实现的;数组在JVM中的实现也是通过类实现的,每个类型的一维数组,二维数组……都是一个类,只是这是一个特殊的类,它的对象头有别于一般对象的对象头(最主要的就是,数组对象头有对象长度)。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值