运算符是指运算功能的符号。参与运算的数据称为操作数,运算符和操作数按照一定规则组成的式子称为表达式。
根据操作数个数不同,可以将运算符分为三种:①单目运算符 (一元运算符)②双目运算符(二元运算符) ③三目运算符(三元运算符)
根据运算符的性质或者用途,可以将Java基本运算符分为以下几类:
(1)算术运算符:
算术表达式是由算术运算符和操作数组成,用于完成基本的算术运算。算数表达式的操作数包括常量、变量等;
注意:
①在进行取余运算(%)或除运算(/)时,如果操作数数据类型是整数类型,只保留值的整数部分。
②单目运算符中自增或自减运算符位于操作数左侧与位于操作数右侧是不同的。其二者的区别为:当自增(++)或自减(--)运算符位于操作数左侧时,则在操作数增1或减1后使用操作数;当自增(++)或自减(--)运算符位于操作数右侧时,则先使用操作数,再使操作数增1或减1。
package com.sxt; import java.util.Scanner; public class Text { public static void main(String[] args ) { int a=1,a1=1; //++a:把a当成一个变量,先加后运算 a++:把a当成一个表达式,先运算后对a加 int b=++a*2;//a先加1后再乘以2,将结果赋给b,最后a的值为2,b的值为4 int b1=a1++*2;//al先乘2并赋给b1,然后a1自加1,最后a1的值为2,b1的值为2 System.out.printf("a:%d b:%d a1:%d b1:%d ",a,b,a1,b1); } }
(2)关系运算符:
关系表达式是由关系运算符和操作数组成,用来比较两个操作数的大小,比较结果是一个布尔值(True或False)。操作数可以是算数表达式,布尔表达式,整数,浮点数和字符等。关系表达式的运算次序是先分别算出运算符两侧表达式的值,再将两者进行比较。
注意:字符型数据按其在Unicode标准字符集中的位置值进行比较。
(3)逻辑运算符:
逻辑表达式由逻辑运算符和操作数组成。操作数为布尔值或者布尔表达式,运算结果是布尔值。
注意:
“&&”和“||”运算符又分别称“短路与”和“短路或”。如果“&&(短路与)”左边表达式的值为false,则整个逻辑表达式的值为false,编译器不会执行运算右边的表达式。同理如果“||(短路或)”左边表达式的值为true,则整个逻辑表达式的值为true,编译器不会执行运算右边的表达式。
位运算符:>>,<<,>>>,&,|,^,~
举个例子:
赋值运算符:=,+=,-=,*=,/=,%=等
赋值表达式是由赋值运算符和操作数组成, 赋值运算符用于将其右侧表达式的值赋给左侧变量。在Java中,'='不等于数学中的等号,等号应该是'=='。
在赋值运算符两侧操作数的数据类型不一致时,如果左侧操作数的数据类型优先级高,则右侧操作数的数据类型将默认转换成与左侧操作数的数据类型相同的数据类型。否则将使用强制类型转换。
运算符的优先级:
package com.sxt;
import java.util.Scanner;
public class Text {
public static void main(String[] args ) {
//提示用户输入加密的内容
System.out.println("请输入加密的内容:");
//Scanner类表示一个文本扫描器,他可以扫描从键盘输入的字符
Scanner in=new Scanner(System.in);
//方法nextLine()返回键盘上输入的一行字符串
String secretStr=in.nextLine();
//将字符串转为字符数组
char []secretChars=secretStr.toCharArray();
char secret='x';//字符变量用于保存加密密钥
//加密运算:将要加密的字符与字符x进行按位异或运算得到密文
System.out.print("密文:");
for (int i=0;i<secretChars.length;i++)
{
secretChars[i]=(char)(secretChars[i]^secret);
System.out.print(secretChars[i] );//显示密文
}
System.out.print("明文:");
//解密运算:已加密的字符与字符x进行按位异或运算得到明文
for (int i=0;i<secretChars.length;i++)
{
secretChars[i]=(char)(secretChars[i]^secret);
System.out.print(secretChars[i] );//显示明文
}
}
}