Java基本数据类型

数据类型可以分为两种:引用数据类型和基本数据类型

这里我要讲的是基本数据类型

基本数据类型分为八种:byte short int long float double Boolean char

内存里占用的空间单位有[bit B(字节) KB MB GB TB PB EB ZB ]

其中bit转化为B的换算率为8:1,其余都是1024:1

每种基本数据类型占用的空间是不一样的,下面就是每种类型的占用空间:

类型B(字节)bit(位)
byte18
short216
int432
long864
float432
double864
boolean1(非0即1)
char216

又可以分为浮点型,整型,字符型,布尔型

浮点型:(float,double)

float:在定义变量的时候要在值后面F

 double:定义变量不用加F,因为小数点默认位double类型

float x = 10.3F;//在值后面F也可以加f
double y = 10.3;//不用加F

字符型:(char)

char:在java中任何一个元素都只占16位,因为在Java编码中一个汉字占两个字节,一个英文占一个字节为了统一Java中char类型占2个字节,而在windows操作系统不一样一个一个英文占8位,一个汉字占16位

char a = 'A';
char b = '我';
char c = 'ab';//这个是错误的!!char只能放一个字符元素

布尔类型:(boolean)

boolean:就只有1bit也就是一位即0或1,但是不能想成对与错,这是不对的,布尔类型表达的应该是非0即1,(不是这个就是那个)

boolean x = true;
boolean y = false;

 整数型:(byte,short,int,long)

在前面表格中已经描述了这些整数型的占用空间,这里就不在重复。这里要讲的是计算机中对于整数型的取值范围

我们知道整数有正有负,整数类型的变量也不例外。那么计算机中如何判断一个数是正数还是负数呢?

这时符号位就诞生了即把第一位当成符号位(正数为0 负数为1 )所以有效空间要减1位

比如byte类型占8个字节

 

所以byte的有效存储大小为-2^7~2^7-1也就是-256~255

下面是一个重点:

我们要根据变量可能的取值区间,选择最小的变量类型范围

打个比方:一个人的年龄最多不超过200岁,但是你用int类型或者更高的类型来存放年龄这显然是不合理的,而且空间的利用率也会变低

前面讲了各种数据类型,我们就有疑问一个int类型的变量能否被一个byte类型的变量接收呢?下面就是关于类型转换问题

类型转换问题:

我们如果试图用空间容量较小的类型接收空间容量较大的类型就会出现类型转换问题

a.如果同为整数类型:

​         小空间接收大空间会出现类型转换问题 

​         大空间接收小空间或平级接收不会出现问题直接接收

解决方案是:强制类型转换(多余的位直接砍掉,有可能会出现数据丢失)

int x = 20;
byte y = 10;
y=(byte)x;//小接收大,需要类型转换
x=y;//大接收小,,不需要类型转换

 b.如果为浮点类型:同整型类型

c.跨类型:

​         float里只有24位整数部分,8位小数部分

        double里只有48位整数部分,16位小数部分

​         整型接收浮点型或浮点型接收整型考虑的是精度:小数的精度高于整数的精度,有些值太长会采用科学计数法

        高精度接收低精度或同级不需要类型转换

        低精度接收高精度需要强制类型换

​         int转化为float (3->3.0)

int x = 10;
float y = 11.2f;
double z = 12.3;
x=(int)y;//低精度接收高精度,强制类型转换
System.out.println(x);//11
y=(float)z;//低精度接收高精度,强制类型转换
System.out.println(y);//12.3

d.char类型:Java编码是unicode码 16位 范围是0~65535

​         char转化为int会变成unicode码

​         int转化为char需要强制类型转换(int 32位 char 16位 小接受大)

char x = 'A';
int y = x;//int类型接收char类型,转化为unicode码
system.out.println(y);//65
x=(char) y;//char接收int类型,强制类型转换
System.out.println(x);//A

希望上面这些知识点能对你们有所帮助,本人第一次写博客有错误望谅解,我会改善!!!谢谢!!!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值