五、运算符使用
说到运算符,你肯定第一反应就是数学中的加、减、乘、除。没错想法很正确,但是呢这只是一少部分。今天呢,我们先讲的不是运算符,先讲一下类型转化的知识。
基本数据类型转化
在上节课呢,我们已经讲解了Java中的八大数据类型,在这八大数据类型中,就拿一个最简单的例子来说,byte类型和int类型,他们之间是有区别的,那么却别在哪里呢,我们上节课已经说过了。区别就在于他们的取值范围不同,但是,其实他们本质上类型都是一样的,都是整型。
那么问题来了,既然都是整型,他们之间是不是可以互相转化了呢?举个例子:
byte a = 100;
int b = a;
我们可以这样做吗?答案肯定是可以的,而且不需要任何操作,这种形式就叫做基本数据类型转化。
做一个很简单的比喻,我们的基本数据类型都是有范围的,byte类型的范围是一个100ml的饮料瓶的话,那么int类型的范围可能就是500ml的饮料瓶。我们当然可以把100ml的饮料瓶中的水全部倒进500ml的饮料瓶中啦,这是一个常识性问题。100ml的瓶子最多只能装下100ml的水,所以显而易见,全部倒入500ml的瓶子中,也不会使500ml的瓶子溢出来水。
而我们刚才做的就是这样的一个效果,所以程序允许这样的事情发生。那么问题来了,如果反过来呢?
int a = 100 ;
byte b = a ;
同学们可以自己试一下,这样会出现问题的,原因呢,举个例子,我们想把500ml的瓶子中的水,全部倒入100ml的瓶子中,那么很容易出现问题,就是容量的问题,100ml的瓶子可能就会溢出水来。那么我们真的遇到这种情况该怎么办呢?下面就来讲解一下。
强制数据类型转化
首先呢,先来考虑一下,如果我们真的把500ml的瓶子中的水,全部倒入100ml的瓶子中,会发生什么情况?
1.100ml的瓶子不会溢出水,因为500ml的瓶子中不足100ml的水。
2.100ml的瓶子中会溢出水,因为500ml的瓶子中的水超过100ml了。
这两种情况是显而易见的,那么我们应该怎么解决呢?这里我们说到了强制这种概念,对,碰到这种必须的情况,我们就不需要管100ml的瓶子会不会溢出水了,直接倒吧,溢出就溢出了,那么在代码中,我们怎么表示呢?下面我们就来看看。
int a = 100 ;
byte b = (byte) a ;
看到这里,我们应该就能明白,如果进行强制数据类型转化了。将要转化的类型利用括号写在某一个变量的左边就可以了。
好了,那么讲到这里,我们应该理解了数据类型转化了两种形式了,这个在我们以后的讲解中,还会提到~所以希望大家能记住。
下面来讲解一下我们的运算符。
运算符
运算符按照功能分为很多类,不过呢,我们只来讲下面的三大类:算数运算符,条件运算符,逻辑运算符。
- 算术运算符
+:加
-:减
*:乘
/:除
前四个,就没有什么必要介绍了,下面我们来介绍一下剩下的几个运算符
%:求余--求得余数
int a = 10;
int b = a%3;
// 打印a求余3的结果,为1
System.out.println(b);
++:自加--在本身之上加1
int a = 10;
// a++ 就相当于 a = a + 1 ;
a++;
// 打印a自加的结果,为11
System.out.println(a);
--:自减--在本身之上加1
int a = 10;
// a++ 就相当于 a = a - 1 ;
a--;
// 打印a自加的结果,为9
System.out.println(a);
=:等于--就是得到最后的结果,这个也不用说的太多了。
最基本的用法,就是这样。不过呢,这里面有两个比较特殊的,++和--。
我们先来看一个例子。
int a = 10 ;
int b = a++;
System.out.println(b);
大家可以试一下,得到的打印结果是10。那么这是为什么呢?
这里我们要专门解释一下,由于其实++或者--其实是一个等式,也就是可以得到最终结果的式子,所以类似这样的式子:int b = a++;这样的式子,其实是有两个等式组成的,也就是,int b = a ; a = a + 1;这两个式子,所以呢,显而易见的,程序是先计算的int b = a ; 而不是a = a + 1;。
那么有些学生就会有问题了,我如果就想这么干,那么我有什么方式呢?对,我们就来看一下,如何让他先计算a的自加或者自减运算。
int a = 10 ;
// 把++符号,放在a的前面,系统会强制先运算a的自加
int b = ++a;
System.out.println(b);
好的,大家应该看到了,其实++是可以放在变量的前面或者后面的,而放在前面或者后面,效果也是不一样的。
放在前面,先运算++;
放在后面,先运算a,之后再让a自加。
好了,这一节课就算是讲完了,至于条件运算符和逻辑运算符,之后的课会讲到,不要着急哦~
哈哈祝大家以后学习更加进步~