Java运算符
前言运算符是一些特殊的符号,主要用于数学函数、一些类型的赋值语句和逻辑比较方面。Java中提供了丰富的运算符,如赋值运算符、算数运算符、比较运算符等。
一:赋值运算符赋值运算符以符号“=”表示,它是一个二元运算符(对两个操作数处理)其功能是讲右作数所含的值赋给左方的操作数。例如:
int a =100;这个表达式是将100赋值给变量a。左方的操作数必须是一个变量,而右边的操作数则可以是在任何表达式,包括变量(a、number)、常量(如123,'book')、有效的表达式(如23*12)。
由于赋值运算符“=”处理时会先取得右方表达式处理后的结果,因此一个表达式中若含有两个以上的“=”运算符,会从最右边的“=”开始处理。在项目中创建类Eval,主方法中定义变量,使用赋值运算符为变量赋值。
public class Eval {
public static void main(String[] args) {
int a, b, c;
a =15 ;
c = b =a + 4;
System.out.println("c的值为:"+c);
System.out.println("b的值为:"+b);
}
}
运行结果如下:
我们看到第5行代码,不好理解,换一种简单的方式,便于理解。
int a , b ,c;
a = 15;
b = a + 4;
c = b;二、算数运算符Java中的算术运算符主要有+(加)、减-(减)、*(乘)、/(除)、%(求余),他们都是二元运算符。
注意:在进行除法运算时,0不能做除数。例如,对于语句“int a = 8 / 0”,系统会抛出异常。创建ArithmeticOpenator类,输入连两个数字,分别用不同运算符进行计算,代码如下。
import java.util.Scanner;
public class ArithmeticOpenrator {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc =new Scanner(System.in);//创建扫描器,获取控制台输入的值
System.out.println("请输入两个数字,用空格隔开(num1 num2)");//输入提示
double num1 =sc.nextDouble();//记录输入第一个数字
double num2 =sc.nextDouble();//记录输入第二个数字
System.out.println("num1+num2的和为:"+(num1+num2));//计算和
System.out.println("num1-num2的差为:"+(num1-num2));//计算差
System.out.println("num1*num2的积为:"+(num1*num2));//计算积
System.out.println("num1/num2的商为:"+(num1/num2));//计算商
System.out.println("num1%num2的余数为:"+(num1%num2));//计算余数
sc.close();
}
}运行结果如下:
三、自增和自减运算符自增、自减运算符是弹幕运算符,可以放在操作元之前,也可以放在操作之后。操作元必须是一个整型或浮点型变量。自增、自减运算符的作用是使变量的值增或减1。放在操作元前面的自增、自减运算符,会先将变量的值加1(减1),然后再使用该变量参与表达式的运算。放在操作元后面的的自减运算符,会先使变量表达式的运算,然后将该变量加1或减1。
一、自增++a//在使用变量a之前,先使a的值加1
a++//在使用变量a之后,使a的值加1提示:符号在前先运算再使用 符号在后先使用再运算 二、自减--a//在使用变量a之前,先使a的值减1
a--//在使用变量a之后,使a的值减11、举个栗子:“++a”与“a++”的作用都相当于a=a + 1,假设a=4,则:
b=++a; //先将a的值加1,然后赋值给b,此时a值为5,b值为5再康康另一个语法,
b=a++ //先将a的值赋给b,再将a的值变为5,此时a值为5,b值为4四、逻辑运算符1、逻辑运算符逻辑运算符包括&&(逻辑与)、||(逻辑或)、!(逻辑非)。逻辑运算符必须是boolean型数据。
口诀:
逻辑与(&&):两者都为真,结果才是真。
逻辑或(||):只要有一者为真,结果就是真。
逻辑非(!):非真即假,非假即真。
2、位运算符位运算符除“按位与”和“按位或”运算符外,其他只能处理用于处理整数的操作数,包括byte、short、char、int和long等数据类型。
口诀:
按位与(&):两者都为1,结果才是1。
按位或(|):只要有一者为1,结果就是1。
按位取反(~):0变1,1变0
按位异或(^):两者相同为0,不同即为1。
3、移位操作 <<: 左移 整体左移,空位补0,溢出去掉。
>> : 右移 整体右移,正数补0,负数补1。
>>>:无符号右移 整体右移,空位补0,溢出去掉。
4、三元运算符三元运算符的使用格式为:
条件式?值1:值2三元运算符的运算规则为:若条件式的值为ture,则整个表达式取值1,否则取值2。例如:
Boolean b = "20<45"?ture:false;表达式“20<45”的运算结果返回为真,那么Boolean型变量的值取ture,反之,如果表达式的运算结果返回值为假,那么Boolean型变量b取值为false。
三元运算符等价于if…slse语句,例如上述代码等价于:
boolean a;//声明Boolean型变量
if(20<45)//将20<45作为判断条件
a = ture;//条件成立,将ture赋值给a
else
a = false;//条件不成立,将false赋值给a运算符优先级
Java中的表达式就是使用运算符链接起来的符合Java规则的式子。运算符的优先级决定了表达式中运算只想的先后顺序。通常,优先级由高到道低得依次顺序是:
增量和减量运算符。
算数运算符
比较运算
逻辑运算
赋值运算
提示:如果两个运算有相同的优先级,那么左边的表达式要比右边的表达式先被处理运算符优先级表
优先级
描述
运算符
1
圆括号
()
2
正负号
+、-
3
一元运算符
++、--、!
4
乘除
*、/、%、
5
加减
+、-
6
移位运算
>>、>>>、<<
7
比较大小
<、>、>=、<=
8
比较是否相等
==、!、=
9
按位与运算
&
10
按位异或运算
^
11
按位或运算
|
12
逻辑与运算
&&
13
逻辑或运算
||
14
三元运算符
?:
15
赋值运算符
=
5、数据类型转换数据类型转化是讲一个值从一种类型更改为另一种类型的转换。例如,可以将String类型的数据“457”转换为数值型,也可以将任意的数据类型转换为String类型。
如果从低精度数据类型向高精度数据类型转换,则永远不会溢出,并且总是成功的;而把高精度数据类型向低精度类型转换时,则会有信息丢失,有可能失败。
1.1隐式类型转换从低级类型向高级类型的转换,系统将自动执行,程序无须任何操作。这种类型的转换称为隐式转换。下列节本数据类型会涉及数据转换,不包括逻辑类型和字符类型。这些类型按精度从低到高的顺序为byte 举个栗子: 可以将int类型变量直接赋值给float型变量,此时int型变量将隐式转换为另一种类型的数据,代码如下: int x =50;//声明int型变量x float y =x;//将x赋值给y,y的值为50.0在项目中创建类Conver,在主方法中创建不同数值类型的变量,实现将各变量隐式转换。 public class Conver { public static void main(String[] args) { // TODO Auto-generated method stub byte mybyte = 127;//定义byte型变量mybyte,并把允许的最大值赋给mybyte int myint =150;//定义int型变量myint,并赋值150 float myfloat = 452.12f;//定义float型变量myflaot,并赋值 char mychar =10;//定义char型变量mychar,并赋值 double mydouble =45.45546;//定义double型变量,并赋值 System.out.println("byte类型与float类型数据进行运算结果为:"+(mybyte+myfloat)); System.out.println("byte类型与int类型数据进行运算结果为:"+(mybyte*myint)); System.out.println("byte类型与char类型数据进行运算结果为:"+(mybyte/mychar)); System.out.println("double类型与char类型数据进行运算结果为:"+(mydouble+mychar)); } } 运行结果如下: 1.2、显示类型转换当把高精度的变量值赋给低精度的变量时,必须使用显示类型转换(强制类型转换)。 语法如下: (类型名)要转换的值举例: int a =(int)45.23;//此时输出a的值为45 long y =(long)456.6F//此时输出的值为456 int b =(int)'d';//此时输出的值为100提示: 当把整数赋值给一个byte、short、int、long、型变量时,不可以超出这些变量的取值范围,否则必须进行强制类型转换。byte b = (byte)129;