1.运算符:进行特定操作的符号。
? ? 表达式:用运算符连起来的式子叫做表达式。
2.具体类型:
2.1加减乘除? ? 取模
public class DemoPerator {
public static void main(String[] args) {
//加:
? ? ? ? System.out.println(20 +30);? //两个常量可以进行运算
//减:
? ? ? ? int num1 =10;
? ? ? ? int num2 =20;
? ? ? ? System.out.println(num1 - num2);? //两个变量也可以进行运算
//乘:
? ? ? ? int num3 =10;
? ? ? ? System.out.println(num3 *10);? ? //变量和常量也可以混合运算。
//除:
? ? ? ? int num4 =10;
? ? ? ? int numchu =3;
? ? ? ? int result1 = (num4 / numchu);
? ? ? ? System.out.println(result1);? ? //对于整数表达式,除法 / 用的是整除,只保留商,不保留余数。
? ? ? ? int result2 = (num4 % numchu);
? ? ? ? System.out.println(result2);? ? //求余数用 %(取模运算符) 计算。
? ? ? ? System.out.println("================");
? ? ? ? double result3 = num4 +2.5;? ? //int + double-->double + double -->double
? ? ? ? System.out.println(result3);? ? ? //结果为12.5
? ? }
}
2.3.“+” 的用法
1.对于数值来说就是加法。
2.对于char来说就是转换成int进行计算。
3.对于字符串String(首字母大写)来说,加号“+”代表字符串连接。
4.任何数据类型和String相连都是转换成String类型。
public class DemoStr {
public static void main(String[] args) {
String s1 ="Hello ";
? ? ? ? String s2 ="World";
? ? ? ? String result1 = s1 + s2;
? ? ? ? System.out.println("Hello "+"Java");
? ? ? ? System.out.println(result1);
? ? ? ? System.out.println("============");
? ? ? ? System.out.println(result1+100);
? ? ? ? System.out.println(result1+5.20);
? ? ? ? System.out.println(result1+'A');
? ? ? ? System.out.println(result1+true);
? ? }
}
TIP:优先级:小括号优先!
2.4.自增运算符,自减运算符。
? ? 4.1基本含义:让变量增加一个数字1,或者减少一个数字1;
? ? 4.2用法:1.单独使用? ?:++num 和 num++没有任何区别
? ? ? ? ? ? ? ? ? ? 2.混合使用? ? :
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? A:++num:马上变量值+1,然后拿着结果进行使用。? 【先加后用】
???????????????????????????????? ? ? ? ? ? ?B:num++:? ? 首先使用变量原本的数值,然后值再+1; 【先用后加】
示例:
public class DemoACnum {
public static void main(String[] args) {
int num =10;
? ? ? ? num++;
? ? ? ? System.out.println("第一次num++: "+num);
? ? ? ? ++num;
? ? ? ? System.out.println("第二次++num "+num);
? ? ? ? System.out.println("===============");
? ? ? ? //与打印操作混合
? ? ? ? int num1 =10;
? ? ? ? System.out.println(num1++);? ? //此时结果为10
? ? ? ? System.out.println(num1);? ? ? //再打印一次num1,此时结果为11
? ? ? ? System.out.println("===============");
? ? ? ? int num2 =20;
? ? ? ? System.out.println(++num2);? ? //此时结果为21
? ? ? ? System.out.println(num2);? ? ? //此时结果仍旧是21
? ? ? ? System.out.println("===============");
? ? ? ? int num3 =30;
? ? ? ? int result1 = --num3;
? ? ? ? System.out.println(result1);? ? //此时result1 = 29
? ? ? ? System.out.println(num3);? ? ? //此时num3也为29
? ? ? ? System.out.println("===============");
? ? ? ? int num4 =40;
? ? ? ? int result2 = num4--;
? ? ? ? System.out.println(result2);? ? //result2的值为40
? ? ? ? System.out.println(num4);? ? ? //num4的值减一,为39
? ? ? ? System.out.println("===============");
? ? ? ? //混合自增自减分析
? ? ? ? int x =10;
? ? ? ? int y =20;
? ? ? ? int result3 = ++x + y--;
? ? ? ? System.out.println(result3);? ? ? ? //result3:31
? ? ? ? System.out.println(x);? ? ? ? ? ? ? //x:11
? ? ? ? System.out.println(y);? ? ? ? ? ? ? //y:19
? ? }
}
TIP:常量不可以使用自增自减。比如“”20++“”是错误的!
2.5 赋值运算符
? ? 2.5.1:基本赋值运算符:“=” (只有一个等号)。表示把右边的值赋值给左边
? ? 2.5.2:复合赋值运算符:
? ??????????????????????+=: a+=3 ????相当于a=a+3
????????????????????????-= : b-=4? ? ?相当于b=b-4
????????????????????????*= : c*=5? ? ?相当于c=c*5
????????????????????????/= : d/=6? ? ?相当于d=d/6
? ? ? ? ? ? ? ? ? ? ? ?%=: e%=7? ?相当于e=e%7
public class GiveData {
public static void main(String[] args) {
int a =7;
? ? ? ? a+=3;
? ? ? ? System.out.println(a);? //此时a=10;
? ? ? ? a-=4;
? ? ? ? System.out.println(a);? //此时a=6
? ? ? ? a*=5;
? ? ? ? System.out.println(a);? //此时a=30
? ? ? ? a/=6;
? ? ? ? System.out.println(a);? //此时a=5
? ? ? ? a%=7;
? ? ? ? System.out.println(a);? //此时a=5
? ? }
}
TIP:1.常量不能进行赋值运算。
? ? ? ? 2.赋值运算包含隐式类型转换。
2.6:比较运算符
? ? 比较运算符有六种:
? ? ? ? ==:比较符号两边数值是否相等,相等为true,否则为false。
? ? ? ? <:????比较符号左边的数据是否小于右边的数据,如果小于则为true,否则为false。
? ? ? ? >:????比较符号左边的数据是否大于右边的数据,如果大于则为true,否则为false。
? ? ? ? <=:????比较符号左边的数据是否小于或者等于右边的数据,如果小于则为true,否则为false。
? ? ? ? >=:????比较符号左边的数据是否大于或者等于右边的数据,如果大于则为true,否则为false。
? ? ? ? !=:????不等于符号,如果等式两边不相等,结果是true,否则为false;
public class DemoCompare {?????
public static void main(String[] args) {
System.out.println(10>5);? ? ? //结果为true
? ? ? ? System.out.println(5>10);? ? ? //结果为false
? ? ? ? System.out.println("===============");
? ? ? ? int num1 =10;
? ? ? ? int num2 =20;
? ? ? ? System.out.println(num1
? ? ? ? System.out.println(num2
? ? ? ? System.out.println("===============");
? ? ? ? int num3 =30;
? ? ? ? System.out.println(num3>=100);? ? ? //结果为false
? ? ? ? System.out.println(num3<=100);? ? ? //结果为true
? ? ? ? System.out.println(num3<=30);? ? ? //结果为true
? ? ? ? System.out.println("===============");
? ? ? ? System.out.println(10==10);? ? ? ? //结果为true
? ? ? ? System.out.println(15!=20);? ? ? ? //结果为true
? ? ? ? System.out.println(20!=20);? ? ? ? //结果为false
? ? }
}
TIP:1.比较运算符的结果一定是一个boolean值,成立就是true,不成立就是false。
? ? ? ? 2.不能连着写,比如1<x<3(先判断1<x为true,但是true<5就不能判断了)。
2.7:逻辑运算符
? ? ? ? 三种:与、或、非。
? ? ? ? ? ? ? ? 与(并且):&&? ? ?全部都是true,结果才是true。否则就是false。
? ? ? ? ? ? ? ? 或(并且):||? ? ? ? 至少有一个true,结果就是true。全都是false,结果就是false。
? ? ? ? ? ? ? ? 非(取反):!? ? ? ? 结果相反。本来是true,加了!就变成false.
public class DemoLuoji {
public static void main(String[] args) {
System.out.println(true&&true);? ? //结果为true
? ? ? ? System.out.println(true&&false);? ? //结果为false
? ? ? ? System.out.println("==============");
? ? ? ? System.out.println(true||true);? ? //结果为true
? ? ? ? System.out.println(true||false);? ? //结果为true
? ? ? ? System.out.println(false||false);? //结果为false
? ? ? ? System.out.println("==============");
? ? ? ? System.out.println(!true);? ? ? ? ? //结果为false
? ? ? ? System.out.println(!false);? ? ? ? //结果为true
? ? ? ? System.out.println("==============");
? ? ? ? int a =10;
? ? ? ? System.out.println(3>4&&++a<100);? //++a不执行,因为前半部分false已经结束
? ? ? ? System.out.println(a);? ? ? ? ? ? ? //a为10
? ? }
}
TIP:
? ? ? ? 1.逻辑运算符只能用于boolean值。
? ? ? ? 2.与、或需要左右各有一个boolean值,但是非只需要有一个。
? ? ? ? 3.与、或如果有多种条件可以连续写,比如上一小节1<x<5.写成 int x = 5; 1<x && x<5
? ? ? ? 4与、或具有短路效应,但左边判断值成立后,右边不再执行。
2.7:三目运算符
? ? ? ? 2.7.1含义:需要三个数据才可以进行操作的运算符
? ? ? ? 2.7.2格式:? ? 变量名称 = 条件判断 >表达式A? :? 表达式B
? ? ? ? 2.7.2流程:1.首先判断条件是否成立。如果成立,将表达式A赋值给左边的变量。如果不成立,将表达式B赋值给左边的变量。
public class DemoThreefu {
public static void main(String[] args) {
int num1 =10;
? ? ? ? int num2 =20;
? ? ? ? int max = num1 > num2 ? num1 : num2;
? ? ? ? System.out.println(max); //max结果为大的数字20
//特殊写法
? ? ? ? System.out.println(num1 > num2 ? num1 : num2);
? ? }
}
TIP:
? ? ? ? 1.必须同时保证表达式A和表达式B都符合左侧的变量数据类型
? ? ? ? 2.三目运算符的结果必须被使用。(如特殊写法里的打印语句),否则会报错。