**运算符:**是用来计算数据的指令。数据可以是常量,也可以是变量。被运算符操作的数成为操作数。
**表达式:**通俗的说,即通过使用运算符将操作数联系起来的式子。
例如:
3+2,使用算数运算符将操作数联系起来,这种情况,我们称为算数表达式。
3>2,使用比较运算符(也称为条件运算符)将操作数联系起来,这种情况,我们称为条件表达式。
将操作数参与数学计算,就是我们的算术运算
完成基础的加、减、乘、除、取余数的运算
/*
基础运算:
*/
public class ExprDemo01{
public static void main(String args[]){
int a=12,b=3;
//基本的加、减、乘、除、取余数的运算
System.out.println("a+b="+(a+b));
System.out.println("a-b="+(a-b));
System.out.println("a*b="+(a*b));
System.out.println("a/b="+(a/b));
System.out.println("a%b="+(a%b));
}
}
运行结果:
(1)加法运算符在连接字符串时要注意,只有直接与字符串相加才会转成字符串。
(2)减法运算符在使用的时候,可以表示负数。
/*
加法与减法特殊运算:
*/
public class ExprDemo02{
public static void main(String args[]){
int a=12,b=3;
//加法运算符在这里表示连接字符串
System.out.println("a="+a);
//减法运算符在这里表示的是负号
System.out.println("-a+b="+(-a+b));
}
}
运行结果:
(1)除法“/”当两边为整数时,取整数部分,舍余数。当两边为浮点型时,按正常规则相除。
/*
除法与取余数特殊运算:
*/
public class ExprDemo03{
public static void main(String args[]){
int a=12,b=3;
double c=12.4,d=3.4;
//除法“/”当两边为整数时,取整数部分,舍余数。当两边为浮点型时,按正常规则相除。
System.out.println("a/b="+a/b);
System.out.println("c/d="+c/d);
}
}
运行结果:
(2)“%”为整除取余符号,取余结果的符号与被取余数的符号相同。小数取余没有意义。得到的是两个相除数据的余数。用处: 判断两个数据是否整除。
//改变b的值
b=5;
//“%”为整除取余符号,取余结果的符号与被取余数的符号相同
System.out.println("a%b="+a%b);
System.out.println("-a%b="+(-a%b));
//小数取余没有意义
System.out.println("c%d="+c%d);
//判断两个数据是否整除,如果为0表示整除
System.out.println("a%b="+a%b);
运行结果:
(3)整数做被除数,0不能做除数,否则报错。
//改变b的值
b=0;
//0不能做除数,否则报错
System.out.println("a/b="+(a/b));
运行结果:
前置与后置效果相同,均为直接+1或-1
/*
自增、自减----单独运算:
*/
public class ExprDemo04{
public static void main(String args[]){
//++运算,单独使用都一样
int a=12;
a++;
System.out.println("a++="+a);
a=12;
++a;
System.out.println("++a="+a);
//--运算,单独使用都一样
a=12;
a--;
System.out.println("a--="+a);
a=12;
--a;
System.out.println("--a="+a);
}
}
运行结果:
自增():将变量的值加1,分前缀式(如i)和后缀式(如i++)。前缀式是先加1再使用;后缀式是先使用再加1。
自减(–):将变量的值减1,分前缀式(如–i)和后缀式(如i–)。前缀式是先减1再使用;后缀式是先使用再减1。
/*
自增、自减----混合运算:
*/
public class ExprDemo05{
public static void main(String args[]){
//前缀式:先+1,在使用
int a=12;
System.out.println("++a="+(++a));
//后缀式:先使用,后+1
a=12;
System.out.println("a++="+(a++));
//前缀式:先-1,在使用
a=12;
System.out.println("--a="+(--a));
//后缀式:先使用,后-1
a=12;
System.out.println("a--="+(a--));
}
}
(1)可以用于整数类型byte、short、int、long,浮点类型float、double,以及字符串类型char。
(2)在Java5.0及以上版本中,它们可以用于基本类型对应的包装类Byte、Short、Integer、Long、Float、Double、Character。
(3)它们的运算结果的类型与被运算的变量的类型相同。
为变量完成初始化及变量的值的改变的运算符
/*
赋值运算符:
=,+=,-=,*=,/=,%=
运算符的运算规则:
先将运算符两边进行+,-,*,/,%运算,在把结果赋值给左边的变量
注意事项:运算符左边必须是一个变量
特点:隐含一个强制类型转换
*/
public class ExprDemo06{
public static void main(String[] args){
int a = 10;
a += 20;//相当于 a = a + 20;
System.out.println("a = " + a);
//5 += 6;//错误: 意外的类型,这里5的位置需要一个变量
byte b = 10;
b += 100;//+=隐含了一个强制类型转换 相当于b = (byte)(b + 100);
System.out.println("b = " + b);
}
}
运行结果:
又叫关系运算符,即判断两个操作数的大小关系及是否相等关系,比较运算符的返回一定为布尔值,也就是要么是true,要么是false。
public class ExprDemo07{
public static void main(String[] args) {
int a = 10;
int b = 20;
int c = 10;
System.out.println(a == b);
System.out.println(a == c);
System.out.println("-----------------");
System.out.println(a != b);
System.out.println(a != c);
System.out.println("-----------------");
System.out.println(a > b);
System.out.println(a > c);
System.out.println("-----------------");
System.out.println(a >= b);
System.out.println(a >= c);
System.out.println("-----------------");
int x = 3;
int y = 4;
//System.out.println(x == y);
//System.out.println(x = y);// 把y赋值给x,把x的值输出
boolean bb = (x == y);
System.out.println("bb="+bb);
// 报错
//boolean cc = (x = y);
int cc = (x = y);
System.out.println("cc="+cc);
}
}
运行结果:
用于计算两个布尔值经过指定逻辑后的运算结果,结果同样是一个布尔值.
逻辑运算符用于连接布尔型表达式,在Java中不可以写成3<x<6,应该写成x>3 && x<6 。
public class ExprDemo08{
public static void main(String[] args) {
int a = 10;
int b = 20;
int c = 30;
System.out.println((a > b) && (a > c));// false && false
System.out.println((a < b) && (a > c));// true && false
System.out.println((a > b) && (a < c));// false && true
System.out.println((a < b) && (a < c));// true && true
System.out.println("---------------");
System.out.println((a > b) || (a > c));// false || false
System.out.println((a < b) || (a > c));// true || false
System.out.println((a > b) || (a < c));// false || true
System.out.println((a< b) || (a < c));// true || true
System.out.println("---------------");
int x = 3;
int y = 4;
System.out.println((x++ > 4) && (y++ > 5)); // false && false
System.out.println("x:" + x);
System.out.println("y:" + y);
System.out.println("---------------");
System.out.println((a > b));// false
System.out.println(!(a > b));// !false
System.out.println(!!(a > b));// !!false
}
}
运行结果:
接下来我们要学习的三元运算符与之前的运算符不同。之前学习的均为一元或者二元运算符。元即参与运算的数据。
格式:(条件表达式)?表达式1:表达式2;
三元运算符运算规则:
先判断条件表达式的值,若为true,运算结果为表达式1;若为false,运算结果为表达式2。
三元运算符,最终一定会产生一个结果值,这个值必须被使用起来。要么被运算符使用,要么被打印
/*
三元运算符:求两个数的最大值,判断两个数是否相等
格式:
(条件表达式) ? 表达式1 : 表达式2;
执行流程:
首先判断条件表达式是否成立
true:表达式1作为3元运算符的结果
false:表达式2作为3元运算符的结果
注意:
三元运算符,最终一定会产生一个结果值,这个值必须被使用起来。
要么被运算符使用,要么被打印
*/
public class ExprDemo09{
public static void main(String[] args){
int a = 10;
int b = 20;
int max = (a > b) ? 10 : 20;
System.out.println("max = " + max);
int c = 15;
int d = 10;
//三元运算符,最终一定会产生一个结果值,这个值必须被使用起来
System.out.println((c != d) ? "相等" : "不相等");
String s = (c != d) ? "相等" : "不相等";
System.out.println("s = " + s);
//(c != d) ? "相等" : "不相等";//错误: 不是语句
}
}