黑马程序员学习笔记
基本运算符
- 加减乘除,取余 + - * / %
- 整数相除结果还是整数,小数直接舍弃
- +与字符串做运算时,起连接作用,结果还是字符串(能相加就是+,不能相加就是连接作用)
package com.zhang.oprator;
public class OperatorDemo1 {
public static void main(String[] args) {
//目标:掌握基本的算数运算符的使用
int a = 10;
int b = 2;
System.out.println(a + b);
System.out.println(a - b);
System.out.println(a * b);
System.out.println(a / b);
System.out.println(a % b);
// 在Java中整数相除,小数直接舍弃
System.out.println(5 / 2);//2.5 ==> 2
//就是要小数 *1.0
System.out.println(5.0 / 2);//2.5
System.out.println("--------------------");
int i = 5;
int j = 2;
System.out.println(i / j);//2.5 ==> 2
//就是要小数 *1.0
System.out.println(1.0 * i / j);//2.5
//目标2:+ 还能做连接符
int a2 = 5;
System.out.println("abc"+a2);//abc5
System.out.println(a2+5);//10
System.out.println("zhang"+a2+5);//zhang55
System.out.println(a+a2);
System.out.println('a'+a2);//97+5
}
}
- 运行结果
自增自减运算符
- ++、–如果不是单独使用(如在表达式中,或者同时有其他操作),放在变量前后会有明显的区别;
- 放在变量前边,先对变量进行+1、-1,再拿变量的值进行操作;
int b = 5;
int rs = b++;//先用再加
System.out.println(b);//6
System.out.println(rs);//5
int b2 = 5;//先加再用
int rs2 = ++b2;
System.out.println(b2);//6
System.out.println(rs2);//6
int b3 = 10;
int rs3 = --b3;//先减后用
System.out.println(rs3);//9
System.out.println(b3);//9
int b4 = 10;
int rs4 = b4--;//先用后减
System.out.println(b4);//9
System.out.println(rs4);//10
练习题
int m = 5;
int n = 3;
//m 5 6 5 4
//n 3 4 3
// 6 - 5 + 5 - 4 +4 +3
int result = ++m - --m + m-- - ++n + n-- + 3 ;
System.out.println(result);
System.out.println(m);//4
System.out.println(n);//3
- 所有代码
package com.zhang.oprator;
public class OperatorDemo2 {
public static void main(String[] args) {
//目标:自增自减运算符
int a = 10;
a++;//a = a + 1;
System.out.println(a);//11
++a;
System.out.println(a);//12
System.out.println("\n");
a--;//a = a - 1
System.out.println(a);//11
--a;
System.out.println(a);//10
int b = 5;
int rs = b++;//先用再加
System.out.println(b);//6
System.out.println(rs);//5
int b2 = 5;//先加再用
int rs2 = ++b2;
System.out.println(b2);//6
System.out.println(rs2);//6
int b3 = 10;
int rs3 = --b3;//先减后用
System.out.println(rs3);//9
System.out.println(b3);//9
int b4 = 10;
int rs4 = b4--;//先用后减
System.out.println(b4);//9
System.out.println(rs4);//10
System.out.println("-----------------------------------");
int m = 5;
int n = 3;
//m 5 6 5 4
//n 3 4 3
// 6 - 5 + 5 - 4 +4 +3
int result = ++m - --m + m-- - ++n + n-- + 3 ;
System.out.println(result);
System.out.println(m);//4
System.out.println(n);//3
}
}
- 运行结果
扩展赋值运算符
全部代码
package com.zhang.oprator;
public class OperatorDemo3 {
public static void main(String[] args) {
//扩展运算符 (含一个强制转换)
//+-
//需求:收红包
double a = 9.5;//a 是钱包余额
double b = 250;//b 是收到的红包
a += b;//a = (double)(a + b);
System.out.println(a);
//需求:发红包
double a2 = 600;//a2 是钱包余额
double b2 = 250;//b2 是要发的红包钱数
a2 -= b2;//a2 = (double)(a2 - b2);
System.out.println(a2);
System.out.println("----------------------------------");
int m = 10;
int n = 5;
m += n;//m = (int)(m + n);
System.out.println(m);
m -= n;//m = (int)(m - n)
System.out.println(m);
m *= n;//m =(int)(m * n)
System.out.println(m);
m /= n;//m = (int)(m / n)
System.out.println(m);
System.out.println("----------------------------------");
byte x = 5;
byte y = 6;
x += y;
System.out.println(x);
//x = x+y; 会报错,因为byte计算是转换成int计算的,也就是说 此时(x+y)是int型,但是x是byte
//所以 x +=y; 完全等价于 x = (byte)(x + y);
}
}
运行结果:
关系运算符
判断数据是否满足条件,会返回一个布尔值,ture或者false
package com.zhang.oprator;
public class OperatorDemo4 {
public static void main(String[] args) {
int a = 10;
int b = 5;
boolean rs = a>b;
System.out.println(rs);//ture
System.out.println(a >= b);
System.out.println(2 >= 2);
System.out.println(a < b);
System.out.println(a <= b);
System.out.println(2 <= 2);
System.out.println(a == b);//注意 判断是否相等用==
System.out.println(a != b);
System.out.println(10 != 10);
}
}
运行结果:
逻辑运算符
//6.|| 短路或 双或
//只要遇见一个true,后面的运算不再执行直接返回,true
int m = 10;
int n = 50;
System.out.println(m++ < 100 | n++ < 10);//都执行
System.out.println(m);//11
System.out.println(n);//51
int m1 = 10;
int n1 = 50;
System.out.println(m1++ < 100 || n1++ < 10);//只 执行 m1++
System.out.println(m1);//11
System.out.println(n1);//50
运行结果:
全部代码:
package com.zhang.oprator;
public class OperatorDemo5 {
public static void main(String[] args) {
//目标:逻辑运算符的使用
//需求:要求手机必须满足尺寸大于等于6.95,且内存必须大于等于8
double size = 6.8;
int storage = 16;
boolean rs = (size >= 6.95 && storage >= 8);
System.out.println(rs);
//需求2 :手机尺寸大于等于6.95 或者 内存大于等于8
boolean rs2 = (size >= 6.95 || storage >= 8);
System.out.println(rs2);
System.out.println("-------------------------------------");
//! 取反
System.out.println(!true);
System.out.println(!false);
System.out.println(!(2<1));//true
//4.^ 前后相同false 不同true
System.out.println(true ^ true);//true
System.out.println(false ^ false);//true
System.out.println(true ^ false);//false
System.out.println(false ^ true);//false
System.out.println("-------------------------------------");
//5. && 短路与 双与
//与&同样的意思,都true为true,否则为false
//但是,从左往右,只要出现一个false,那么运算结果直接为false,后面的运算不再执行,直接返回false
int i =10;
int j = 20;
System.out.println(100 < i++ & 100 > j++);//& 全部式子都执行
System.out.println(i);
System.out.println(j);
int i2 =10;
int j2 = 20;
System.out.println(100 < i2++ && 100 > j2++);//&& 遇见false,后面运算不再执行,直接返回false
System.out.println(i2);
System.out.println(j2);
System.out.println("-------------------------------------");
//6.|| 短路或 双或
//只要遇见一个true,后面的运算不再执行直接返回,true
int m = 10;
int n = 50;
System.out.println(m++ < 100 | n++ < 10);//都执行
System.out.println(m);//11
System.out.println(n);//51
int m1 = 10;
int n1 = 50;
System.out.println(m1++ < 100 || n1++ < 10);//只 执行 m1++
System.out.println(m1);//11
System.out.println(n1);//50
}
}
运行结果:
运算符优先级
- && 的优先级大于 ||
- 不清楚顺序就打括号
//&& 优先级大于 ||
int m = 5;
int n = 10;
System.out.println(m > 1 || m < 100 && n < 6);//true
System.out.println((m > 1 || m < 100 )&& n < 6);//false
三元运算符
格式: 表达式?值1:值2
解释:表达式成立吗?成立选值1,不成立选值2
package com.zhang.oprator;
public class OperatorDemo6 {
public static void main(String[] args) {
//三元运算符
//需求:查看成绩是否合格
double score = 98;
String rs = score >= 60 ? "成绩合格" : "成绩不合格";
System.out.println(rs);
//需求2 :找出两个数中的较大数,并输出
int a = 66;
int b = 99;
int max = a > b ? a : b;
System.out.println(max);
//需求3:找出三个数中的较大数,并输出
//可以先找出两个数中的较大数,再与第三个数进行比较,这样很容易能明白
//直接比较三个 代码不宜读,不是好的代码
int i = 52;
int j = 85;
int k = 11;
int temp = i > j ? i : j;//temp是临时变量
int rs2 = temp > k ? temp : k;
System.out.println(rs2);
//&& 优先级大于 ||
int m = 5;
int n = 10;
System.out.println(m > 1 || m < 100 && n < 6);//true
System.out.println((m > 1 || m < 100 )&& n < 6);//false
}
}
执行结果: