变量

1.Byte(一个字节),short(两个字节),char(两个字节)-àint(四个字节)-àlong(八个字节)-àfloat-àdouble

一字节对应8个bit(二进制位)0000-0000

8 bit = 1 B

1024 B =1 KB

1024 KB =1 MB

1024 MB =1 GB

1024 GB = 1 TB

字符

数字

0

48

9

57

A

65

Z

90

a

97

z

122

数据类型                  关键字                   内存占用                             取值范围

 字节型                       byte                     1个字节                               -128~127

 短整型                      short                     2个字节                           -32768~32767

  整型                      int(默认)             4个字节                       -231次方~2的31次方-1

 长整型                      long                      8个字节                    -2的63次方~2的63次方-1

单精度浮点数            float                      4个字节                    1.4013E-45~3.4028E+38

双精度浮点数      double(默认)          8个字节                 4.9E-324~1.7977E+308

 字符型                      char                      2个字节                                0-65535

布尔类型                  boolean                  1个字节                             true,false

2.下面的程序有问题吗?

分析:  s += 1 逻辑上看作是 s = s + 1 计算结果被提升为int类型,再向short类型赋值时发生错误,因为不能将取值范围

大的类型赋值到取值范围小的类型。但是, s=s+1 进行两次运算 , += 是一个运算符,只运算一次,并带有强制转换的特点

也就是说 s += 1 就是 s = (short)(s + 1) ,因此程序没有问题编译通过,运行结果是2。

3.

public static void main(String[] args){

  byte b1=1;

  byte b2=2;

  byte b3=1 + 2;

  byte b4=b1 + b2;

  System.out.println(b3);

  System.out.println(b4);

分析: b3 = 1 + 2 , 1 和  2 是常量,为固定不变的数据,在编译的时候(编译器javac),已经确定了 1+2 的结果并没有超过byte类型的取值范围,可以赋值给变量 b3 ,因此 b3=1 + 2 是正确的。

反之, b4 = b2 + b3 , b2 和  b3 是变量,变量的值是可能变化的,在编译的时候,编译器javac不确定b2+b3的结果是什么,因此会将结果以int类型进行处理,所以int类型不能赋值给byte类型,因此编译失败。

posted @ 2019-09-12 15:30  九九八十一mm  阅读(181)  评论(0编辑  收藏  举报