栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java基础语法2——变量类型转换、变量作用域、变量默认值、数字运算符、逻辑运算符、溢出

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java基础语法2——变量类型转换、变量作用域、变量默认值、数字运算符、逻辑运算符、溢出

变量类型转换 字符转整型

char oi="万";

int i = oi;        char自动累心转换为int类型

 运行结果为

 19975 代表的是在Unicode 的字符编码中的19975个数字,是将字符编码的序号给到了int

整型转整型

int类型强制转为byte类型,int是4个字节,8位,byte是1个字节4位,则超出byte字节的内容会全部丢失,

输出为: 100

当a=128时;将,将a强制转换成byte

 输出位:

若a=129;转换位byte类型以后时-127

a=130;转换后位-126

原因时变量溢出,byte表示的最大整数范围是(-128,127),将整数128赋值给byte类型时,数据会再次进1

结论: 强制类型转换,可能导致值超出变量的取值范围,产生变量溢出(上溢或下溢)的现象,从而导致逻辑错误,产生BUG!

浮点型转换

浮点型强制转换成整型

 

 强制类型转换,可能导致精度损失,浮点型强制转换成整型时,舍掉所有小数位,而不是四舍五入!

转换时会先将小数点舍掉,再转换成整数类型;

若想要进行四舍五入的转换,则

变量的作用域 

变量的定义和使用,必须同时遵守以下规则:
         1、上边定义的,下边可以使用;
         2、外边定义的,里边可以使用。

 若变量超出作用域的范围则会显示:

{},一对儿花括号表示作用域的边界 ,即表示变量的范围,超出作用域之后,变量即不可使用

实际应用过程中,应考虑实际情况,定义变量的作用域,变量会占用内存,只有在超出作用域后才会释放内存,为了让程序运行时不占用过多内存,应该遵守变量作用域最小化原则;

变量的默认值

重点:当基础数据类型的变量作为类成员使用时,即成员变量,Java会赋予一个默认值:

         类型                  默认值
         boolean             false
         char                '/uoooo'
         byte                (byte)0
         short               (short)0
         int                 0
         long                0L
         float               0.0f
         double              0.0d

 

 除了作为成员变量,局部变量没有默认值,使用前必须初始化;

 何为初始化?初始化即为赋值,即是用变量result前,必须为其赋值。、

 何为使用?使用即参与计算或参数传递。

 

q作为局部变量,没有对其进行赋值,导致编译报错

变量的运算 数字运算符: 整数的算数运算——“=”是赋值的意思

运算符包含:+,-,*,/,表示加,减,乘,除

加、减、乘与数学运算逻辑相似

重点标注下除法:num=15

输出为 

 整数间的除法计算,商只会保留整数部分,完全舍掉余数,而不是四舍五入。

输出为 

%,表示求余运算(又叫模除运算),求除法计算结果的余数 即,15除6=2.。。。3,最后取3作为运算值;

做除法运算时,除数为0 ,则会报错

 自增运算:

i++和++i的区别是什么 

第一个输出为5

第二个输出为7

原因是i++,会先输出i,再执行自增运算,而++i,会先进行自增,再输出值,所以结果为7

不建议上面的写法,尽量不要用自增预算作为参数传递,而是运算后,再将变量传递

当程序变成

 

 输出结果为

 相对应的,有i++,就有I--,原理相同

 单目运算

单目运算:+=,-=,*=,/=

i+=3   变量i的值加3再将值赋给i ;等同于i=i+3;,同样,不建议这样写

 浮点数的算数运算

浮点数的除法:

浮点数虽然表示的范围大,但是浮点数常常无法精确表示。十进制的0.1换算成二进制是一个无限循环小数, 所以,无论使用float还是double,都只能存储一个0.1的近似值,如下:

 

 

采用以上语句验证X与Y是否相等,如果相等,则返回true,如果不等,则返回false ,实际返回值就是false

除法或求余运算时,当除数为零,运行时不会报错,但会返回几个特殊值:
        NaN 表示 Not a Number
        Infinity 表示 无穷大
        -Infinity 表示 负无穷大

当浮点数除以0或整数除以浮点数时,得到的时无穷大的浮点数,当对浮点数对0取余时,得到的是非有效数字;

 浮点数不支持自增、自减,

关系运算符

>,<,<=,>=,!=,==

关系运算符的比较运算的结果均是布尔值

 

与,或,非,只能用于布尔量之间的运算

且:&&

或:|| 

非:!

&& 运算的优先级高于|| 

为了不混淆逻辑,与和或运算串联时,一定要加括号;

 

 三目运算:

三目运算的格式:b ? x  : y   b表示布尔值

第一部分b表达式的值为true时,计算结果为表达式x,反之为表达式y

 运算结果为200

运算结果为-10

 

 结果为200

变量的升级

当编译时出现 

 num1和num2均为byte类型,但是编译时制醋变量类型的转换,是因为所有的运算在,当有byte和short类型时,在做完运算之后,会自动提升为int类型,所以当需要继续运算时,需要将运算强制转换成byte类型即:

或者用int类型的变量来接收结果也可以,即:

 

   Java运算时会自动提升变量类型,遵循以下规则:
        1、整数运算:如果两个操作数有一个为long,则结果也为long,反之为int
        2、浮点运算:如果两个操作数有一个为double,则结果为double,反之为float

 

溢出

整数由于存在范围限制,如果计算结果超出了范围,就会产生溢出,而溢出不会出错,却会得到一个奇怪的结果。当计算结果超出int类型所能表示的最大值时,发生上溢

 

最大值+1,就会得到最小值,超出取值范围,就需要用更大的类型去接收,否则,就会出错

超出int的取值范围,可以用long来接收

 

在integer的最大范围i+1之后,输出的值是2147483648,而不是-2147483648,说明被更长的类型接收,不会溢出了。

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/345115.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号