Java中的类型与变量

一、Java中的类型

1.1 整数类型

  (1)字节类型变量byte:一个byte变量占1个字节,表示范围:-128->+127;

  (2)短整型变量short:占用两个字节,表示范围:-32768->+32767;

  (3)整形变量int:占用4个字节,与操作系统无直接关系,表示范围:-2^31->2^31-1,即-21亿到+21亿;

(4)长整形变量long:占用8个字节,10的类型是int,10L的类型是long,表示的数据范围是:-2^63->2^63-1,足够绝大部分的工程场景使用。

1.2 浮点数类型

  (1)双精度浮点型变量double:占用8个字节,遵守IEEE754标准(尝试使用有限的内存空间表示可能无限的小数面试笔会存在一定的精度误差),如下图所示;在工程上的浮点数优先使用双精度double;

  (2)单精度浮点型变量float:占用4个字节,同样遵守IEEE754标准,但精度范围较小。

1.3 字符类型变量

  char:占用两个字节,Java中使用单引号+单个字母表示字符字面值,计算机中的字符本质是一个整数,在C语言中使用ASCII表示字符,而在Java中使用Ynicode表示字符,因此占用两个字符,可表示的字符更多,包括中文,如:

  同时,Java中不允许将char与整数之间混用,例如:

char a ='a';
a - 2

在Java中此指令非法,Java是一种强类型的编程语言(类型检查更加严格,不太支持隐式类型转换)

1.4 布尔类型变量

  boolean:占据空间与JVM版本有关,有些是一个字节,有些是一个比特位,无明确规定,仅有两种取值:true或false。

二、变量

2.1 变量作用域

  局部变量的作用域仅在当前的代码块中生效({}),如果是成员变量或者静态成员变量,作用域要更大一些,若是在当前类的内部,则可以直接访问,但若是在类的外部,则不能访问,还有其他的规则限制(受限于“访问权限控制”)。

2.2 理解类型转换

 

int a = 10;
long b =20;
a=b;// 编译出错,提示可能会损时精度
b=a;// 编译通过


int a = 10;
double b =2.0;
a=b;// 编译出错,提示可能会损时精度
b=a;// 编译通过

由此代码块得出结论:不同数据类型之间进行赋值,范围更小的类型可隐式转换成更大范围的数据类型,而反之可能会丢失精度,编译错误。

强制类型转换:

int a = 10;
long b =20;
a=(int)b;
b=a;

 编译成功,但此种方法可能会导致精度丢失。

int a = 1;
boolean b = true;
b = (boolean)a;// 编译出错,为不兼容的类型


int a = 1;
boolean b = true;
a = (int)b;// 编译出错,为不兼容的类型

 由此可见,强制类型转换不一定能成功,互不相干的类型之间无法强制转换。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值