java基础语法运算符

时间:2022-02-17 09:55:29

1.1                算数运算符++、--的使用

在一般情况下,算数运算符不会改变参与计算的变量值。而是在原有变量值不变的情况下,计算出新的值。但是有些操作符会改变参与计算的变量的值,比如++,--。

我们来看一段代码:

int a = 3;
int b = 3;
a++;
b--;
System.out.println(a);
System.out.println(b);

上面代码的输出结果a值为4,b值为2;

这说明a的原有值发生了改变,在原有值的基础上自增1;b的原有值也发生了改变,在原有值的基础上自减1;

l  ++运算符,会在原有值的基础上自增1;

l  --运算符,会在原有值的基础上自减1。

我们再看一段代码:

++,--运算符参与运算操作时,发生了怎样的变化,我们来看一段代码:

int a = 3;
int b;
b = a++ + 10;
System.out.println(a);
System.out.println(b);

上面代码的输出结果a值为4,b值为13;

总结:

++,--运算符后置时,先使用变量a原有值参与运算操作,运算操作完成后,变量a的值自增1或者自减1;

再介绍下++,--运算符前置时,参与运算操作的变化,我们来看一段代码:

int a = 3;
int b;
b = ++a + 10;
System.out.println(a);
System.out.println(b);

上面代码的输出结果a值为4,b值为14;

这里我强调一下,当++,--运算符参与运算操作时,前置++,--的作用:

++,--运算符前置时,先将变量a的值自增1或者自减1,然后使用更新后的新值参与运算操作。

1.2                赋值运算符

运算符

运算规则

范例

结果

=

赋值

int a=2

2

+=

加后赋值

int a=2,a+=2

4

-=

减后赋值

int a=2,a-=2

0

*=

乘后赋值

int a=2,a*=2

4

/=

整除后赋值

int a=2,a/=2

1

%=

取模后赋值

int a=2,a%=2

0

首先:我们看下面的错误代码

public class OperatorDemo3
{
public static void main(String[] args){
byte x=10;
byte y=x+20;
System.out.printIn(y)
} }

因为上面是byte+20结果应该为Int类型,但是直接写成byte类型了,没有强制转换。

如果用赋值运算符后,就会将结果自动强制转换数据类型,下面便是:

注意:诸如+=这样形式的赋值运算符,会将结果自动强转成等号左边的数据类型。

写一个代码,我们看一下赋值运算符的使用

 /*
* 赋值运算符
* +=, -=, *=, /=, %= :
* 上面的运算符作用:将等号左右两边计算,会将结果自动强转成等号左边的数据类型,再赋值给等号左边的
* 注意:赋值运算符左边必须是变量
*/
public class OperatorDemo2 {
public static void main(String[] args) {
byte x = 10;
x += 20;// 相当于 x = (byte)(x+20);
System.out.println(x);
}
}

运行结果为30.

1.3                逻辑运算符

逻辑运算符,它是用于布尔值进行运算的,运算的最终结果为布尔值true或false。

运算符

运算规则

范例

结果

&

false&true

False

|

false|true

True

^

异或

true^flase

True

!

!true

Flase

&&

短路与

false&&true

False

||

短路或

false||true

True

看完图后,我们来看一下逻辑运算符的常规使用方式:

    ^:两边不相同为true,否则为false

  

l  短路与&&:参与运算的两边数据,有false,则运算结果为false;

l  短路或||:参与运算的两边数据,有true,则运算结果为true;

l  逻辑非! : 参与运算的数据,原先是true则变成false,原先是false则变成true。

短路的作用是一边又false,另一边不执行。提高效率

1.4               三元运算符

l  格式:

(条件表达式)?表达式1:表达式2;

通过代码演示,我们来学习下三元运算符的使用:

方式一:
System.out.println( 3>2 ? “正确” : “错误” );
// 三元运算符运算后的结果为true,运算结果为表达式1的值“正确”,然后将结果“正确”,在控制台输出打印 方式二:
int a = 3;
int b = 4;
String result = (a==b) ? “相等” : “不相等”;
//三元运算符运算后的结果为false,运算结果为表达式2的值“不相等”,然后将结果赋值给了变量result 方式三:
int n = (3>2 && 4>6) ? 100 : 200;
//三元运算符运算后的结果为false,运算结果为表达式2的值200,然后将结果200赋值给了变量n

我们看一下复杂的代码:

int a = 5;
int b = 3;
int c = 1;
int n2 = (a>b && b>c) ? (c++) : (++c);

这段代码运算执行顺序我们也写一下:

l  1.小括号优先级高,我们先运算第一组小括号中的代码

l  1.1. 比较运算符”>” 优先级大于 逻辑运算符”&&”

n  先执行 a>b,得到结果true;

n  再执行 b>c,得到结果true;

n  最后执行 a>b的结果 && b>c的结果,即 true && true, 结果为true

l  2.三元运算符中的条件判断结果为true,返回表达式1的结果 c++

n  先将变量c的原有值赋值给变量n2,即n2值为1;

n  再将变量c的值自增1,更新为2。

结果是n2=1;c=2;