java类型转换总结_Java 数据类型总结

Java 是强类型语言, 所以在源代码编译时,声明的变量时必须明确它所属类型.

基本数据类型                  引用数据类型

byte对应的包装类→        Byte

short对应的包装类→        Short

int对应的包装类→        Integer

long对应的包装类→        Long

char对应的包装类→        Character

float对应的包装类→        Float

double         对应的包装类→        Double

boolean对应的包装类→        Boolean

interface   接口

Array    数组

基本数据类型中,除了char ,boolean以外, 其他的都可以font用来表示数字.

区别如下:

byte        范围  -128 ~ 128

short          范围 -2的15次方 ~ 2的15次方-1

int         范围 -2的31次方 ~ 2的31次方-1

long         范围 -2的63次方 ~ 2的63次方-1

float        范围 -2的-149次方 ~ 2的128次方-1

double         范围 -2的-1074次方 ~ 2的1024次方-1

特殊的是char类型, 例如 char a = 1; a 表示的是 UCS-2 编码为 1 的字符,直接打印 a 是乱码

在Java中不支持使用char类型,UCS-2 远远少于Unicode字符的数量,在跟一些数据库的char类型数据结合进行的特殊查询的情况下,会出现问题.

字节和字符

字节: 硬盘或内存中存储形式.1个字节代表 8位的二进制数(bit).比如:1 byte = 0110 1010

字符: 占用字节数根据不同的字符集确定

字符集

Unicode 字符集

Java默认采用的就是这个字符集,

常用编码方法 UTF-8(Unicode Tranformation Format),万国码

一个字节代表一个英语字符,三个字节表示一个汉语字符,特殊汉语字符4个字节

GBK 字符集

英语字符占一个字节,汉语字符占两个字符

包括中日韩字符的大字符集合,支持中文简体和繁体

GB2312 字符集

英语字符占一个字节,汉语字符占两个字符

GBK子集,中国国家标准的简体中文字符集, 不支持繁体字符的编码.

一般用于中国大陆和新加坡

ASCII 字符集

基于罗马字母表的一套电脑编码系统,一个英语字符由占一个字节,

汉语字符占两个字节

数据类型的转换

自动转换

小范围的数据类型到大范围的数据类型会自动转换类型

小----------------------------------------------大

byte - short - int - long - float - doublebyte a = 1;

byte b = 2;

byte c = a + b;//编译失败,需要强制类型转换成int类型

int c = a + b;//编译通过

强制转换

基本数据类型之间public byte cout(byte b1, byte b2) {

return (byte) (b1 / b2);  //需要强制类型转换

}

大范围类型到小范围类型强制转换会损失精度double d = 3.14;

int i = (int) d;

System.out.println(i);//打印结果 i = 3

引用数据类型之间

通常是在存在继承关系的父子类中的强制转换public class Father {

public void print() {

System.out.println("Father Print");

}

}

public class Son extends Father {

public void print() {

System.out.println("Son Print");

}

public void other() {

System.out.println("son");

}

}

Son的内容要比Father丰富,也可以说Son的范围比Father大,所以:Father father = new Son();//将大范围的内容交给小范围的实例

所以father实例虽然指向的是Son内容,但是能力被削弱了,它不能访问Son中独有的部分

父类对象强制转换成子类类型Son son = (Son) father;//把father对象强化回Son对象,功能恢复

但是:Father father = new Father();

Son son = (Son) father;//抛出异常:java.lang.ClassCastException转换异常

总得来说:子类可以自动转型为父类,但是父类强制转换为子类时只有当引用类型真正的身份为子类时才会强制转换成功,否则失败.

在强制转换之前必须保证前提是:功能较弱的类型引用的一个功能较强的对象时,使用强制转换来恢复功能,反之失败.所以,良好的编码习惯是转换之前使用方法 instanceof 方法判断一下:if (father instanceof Son) {

Son son = (Son) father;//判断为true 则执行转换

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值