java 基础八类关键字_JAVA四类八种基本数据类型(示例代码)

boolean类型

Boolean在内存中占用一个字节。

当java编译器把java源代码编译为字节码时,会用int或byte来表示boolean。在java虚拟机中,用整数零来表示false,用任意一个非零整数表示true。

java虚拟机这种底层处理方式对java虚拟机是透明的,在java源程序中boolean类型的变量取值只能是true或false

byte、short、int、和long 整数类型

byte、short、int、long都是整数类型,并且是有符号整数 分别占用1、2、4、8个字节。

取值范围分别是-127—127、-2的15次方到2的15次方减一、-2的31次方到2的31次方减一、-2的63次方到2的63次方减一

byte在内存中占用一个字节 取值范围是 -128—127。在定义一个变量时。比如月份的取值是1到12。因此把代表月份的month变量定义为byte类型会节省内存空间。

在实际应用中 通常把month定义为int类型,因为这样可以简化数据运算时强制类型转换操作。

byte month = 1;

month = month+2;//编译错误 需要强转

month = (byte) (month+2); //编译正确

Java中整型常量数值的默认类型是int类型

char 字符类型

char是字符类型 占用两个字节,java语言对字符采用Unicode字符编码。

char是按照字符存储的,不管英文还是中文,固定占用占用2个字节,用来储存Unicode字符。范围在0-65536。

utf-8与utf-16都是处理Unicode编码,它们的编码规则不太相同

utf-16的编码效率高,从字节到字符的相互转换更简单,进行字符串操作也更好。它适合在本地磁盘和内存之间使用,可以进行字符和字节直接的快速切换,

如java的内存编码就采用utf-16编码。但是它不适合在网络直接的传输 utf-16采用顺序编码,不能对单个字符的编码值进行校验。如果中间一个字符码值损坏,后面所有码值都受到影响。

因为网络传输容易损坏字节流,一旦字节流损坏就很难恢复。

utf-8更适合网络传输 对字符采用单字节的存储,对汉字采用三个字节表示,另外单字节的损坏也不会影响后面的其他字符,在编码效率上介于GBK和utf-16之前,在编码效率和安全上做了平衡

所以utf-8是理想的中文编码方式

上面蓝色字体部分看起来自相矛盾(用char声明汉字)下面解释一下Unicode编码和UTF编码

Unicode编码由国际Unicode协会编制,收录了全世界所有语言文字中的字符,是一种跨平台的字符编码USC(Universal Character Set)是指采用Unicode编码的通用字符集。Unicode有两种编码方案。

用两个字节(16位)编码,采用这个编码方案的字符集称为UCS-2。java语言采用的就是两个字节的编码方案

用四个字节(32位)编码(实际上只用了31位,最高位必须为0),采用这个编码的字符集被称为UCS-4。

UTF编码: 有些操作系统不完全支持16位或32位的Unicode编码,UTF(UCS Transformation Format) 编码能够把Unicode编码转换为操作系统支持的编码,常见的UTF编码有 utf-8,utf-7,utf-16

float和double 浮点类型(带小数)

float:占四个字节,共32位,称为单精度浮点数

double:占八个字节,共64位,称为双精度浮点数

Java中的浮点型常量数值默认是double类型

注意: java提供的浮点类型不适合进行精确的运算

public static void main(String[] args) throwsException {double money = 1;double price = 0.1;

System.out.println(money-price*9);//打印出来0.09999999999999998(本应该是0.1)

}

解决办法: java.math.BigDecimal类可以满足用户的精度 注意 构造BigDecimal类时 构造方法中的参数 不建议是浮点类型 需要转成String类型

基本数据类型转换

上面四类八种基本数据类型。除了boolean类型。整型 浮点型和字符型数据可以进行混合转换。

从低位到高位会自动进行类型转换,(向上转型)

从高位到低位需要进行强制类型转换。(向下转型)

从低位到高位 byte、char、short、int、long、float、double

float f = 3.14; //编译错误,不能把double类型直接赋值给float类型变量 需要强制类型转换

应用中,强制类型转换有可能会导致数据溢出或者精度下降,应该避免使用强制类型转换。

下面代码中 把int强制转换为byte类型,会导致数据溢出。

int a = 256;

byte aa = (byte) a;

int b = 222;

byte bb = (byte) b;

System.out.println(aa); // 打印结果0

System.out.println(bb); //打印结果-34

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值