Java-变量数据转换及运算符

一、变量的相关概念
1、变量的定义
变量是计算机的一块内存空间,它是用于存储数据的基本单元。
2、初始化变量
变量可以在声明时就直接赋初始值,即变量的初始化;也可以先声明变量,往后在进行赋值。
3、变量的特点
变量具有一定的大小;变量有其特定的变量名;可以储存可变数据。

二、数据类型转换
基本数据类型的转换可以分为三种,分别为自动转换,强制转换和计算过程中的转换。下面分别讲讲这三种转换各自的特点。
1、自动转换
自动转换是一种无信息丢失的转换,它可以用于不同类型的数据的变量之间相互赋值。我们来看几个例子:

int a=1.2;

此代码无法编译,会损失精度;

double a=3;

此代码可以编译成功。
由此我们可以看出,在数据类型的自动转换中,数据类型可以自动地由低精度向高精度转换,但是却不能从高精度向低精度转换。
Tip:数据精度的排序为:
byte<short<int<long<float<double;
现在我们来看一个特例:

float a=3.4;

此代码也是不能通过的,这是因为,在java中小数默认情况下是为double类型的;若要编译通过,可以改为;

float a=3.4f;

此时变量a才是float类型,可以编译成功。

2、强制转换
强制转换主要是用于将数据从高精度转化为低精度,可能会丢失一些信息。
强制转换的格式为:
目标类型 变量名=(目标类型)高精度数据
例子:int a=(int) 1.2; int b=(int)1.9;
注意:上两句代码的运行结果均为1,不存在四舍五入的说法。

3、计算过程中的转换
我们来看两个很简单的例子:

short s1=1;s1=s1+1;

此代码编译无法通过,这是因为1是int类型,s1与1相加后结果自动转换为int类型,造成类型不匹配,所以报错。
结论:当不同基本数据类型进行基本运算时,运算结果会自动往高精度转换。

short s1=1;s1+=1;

此代码可以正确编译,这是因为(s1 += 1)表达式使用的是复合赋值操作符,复合赋值表达式自动地将所执行计算的结果转型为其左侧变量的类型。如果结果的类型与该变量的类型相同,那么这个转型不会造成任何影响。
(注意:布尔类型不会进行数据类型的转换!)

三、运算符
1.算数运算符:+(加) - (减)*(乘) / (除) %(取模) ++(自增) –(自减)
这里我们需要注意,对于++自增运算符,它所放的位置不同,得到的运算结果并不一样,如;
int b=a++是先把a的值赋给b,然后a再自增;
int b=++a则a是先自增,再把自增后的值赋给b;
注意:整数/0 产生异常;浮点数/0 无穷大或NaN。
2.赋值运算符
= += -= *= /= ……
注意:+=…是复合运算符,它不会进行数据类型自动提升,这个在我们前面的例子也已经提到过了。
3.关系运算符
== > >= < <= !=(不等于)
4.逻辑运算符
&&(逻辑与) 、&(按位与) 、||(或)、 ! (非)
5.选择运算符:
表达式0 ? 表达式1:表达式2;
即:如果表达式0==true?取表达式1的值, 否则就取表达式2的值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值