switch和if else 学弟求助,Java基础编程好过么= =(4)

电脑杂谈  发布时间:2017-12-31 20:09:11  来源:网络整理

int a=4;byte b=(byte)a;

一个字节的变量b无法存储四个字节的变量a,在这种情况下就需要进行强制类型转换。

但强制类型转换极容易造成 数据精度的丢失。

int a=298;byte b=(byte)a;

System.out.println("a="+a);

System.out.println("b="+b);

输出结果为

a=298b=42

变量a的值本来为298,然而在赋值给变量b之后,其值为42,明显丢失了精读。

因为a是int类型,在内存中占用4个字节,byte类型的数据在内存中占用1个字节。当将变量b的类型强转为byte类型之后,前面3个高位字节的数据丢失,数值发生改变。

int 00000000 00000000 00000001 00101010byte 00101010

表达式类型自动提升

表达式是指由变量和运算符组成的一个算式。变量在表达式中进行运算时,也可能发生自动类型转换,这就是表达式数据类型的自动提升,如一个byte型的变量在运算期间类型会自动提升为int型。

byte b1=3;byte b2=4;byte b3=b1+b2;

System.out.println("b3="+b3);

运行时会报错,因为表达式b1+b2运算期间,变量b1和b2都会被自动提升为int型,表达式的运算结果也就变成了int型,这时如果将结果赋给byte型的变量就会报错,需要进行强制类型转换。

byte b3=(byte)b1+b2;

1

1

2

3

4

1

2

1

2

1

2

3

4

1

2

变量的作用域

变量需要在它的作用范围内才可以被使用,这个作用范围称为变量的作用域。

在程序中,变量一定会被定义在某一对大括号中,该大括号所包含的代码区域便是这个变量的作用域。

Java中的运算符

算数运算符

运算符

运算

范例

结果

+ 正号 +3 3

- 负号 b=4;-b; -4

+ 加 5+5 10

- 减 6-4 2

* 乘 3*4 12

/ 除 5/5 1

% 取模(即算数中的求余数) 7%5 2

++ 自增(前) a=2;b=++a; a=3;b=3

++ 自增(后) a=2;b=a++; a=3;b=2

– 自增(前) a=2;b=–a; a=1;b=1

– 自增(后) a=2;b=a–; a=1;b=2

在进行自增++和自增–的运算时,如果运算符++或–放在操作数的前面则是先进行自增或自减运算,再进行其他运算。反之,如果运算符放在操作数的后面则是先进行其他运算再进行自增或自减运算。

在进行除法运算时,当除数和被除数都为整数时,得到的结果也是一个整数。如果除法运算有小数参与,得到的结果会是一个小数。

在进行取模(%)运算时,运算结果的正负取决于被模数(%左边的数)的符号,与模数(%右边的数)的符号无关。

赋值运算符

赋值运算符的作用就是将常量、变量或表达式的值赋给某一个变量。

运算符

运算

范例

结果

= 赋值 a=3;b=2; a=3;b=2;

+= 加等于 a=3;b=2;a+=b; a=5;b=2;

-= 减等于 a=3;b=2;a-=b; a=1;b=2;

*= 乘等于 a=3;b=2;a*=b; a=6;b=2;

/= 除等于 a=3;b=2;a/=b; a=1;b=2;

%= 模等于 a=3;b=2;a%=b; a=1;b=2;

在赋值过程中,运算顺序从右往左,将右边表达式的结果赋值给左边的变量。


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-57209-4.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...