可以做外链的网站有哪些,百度推广就是做网站吧,wordpress 悬浮通知,dede网站地图不显示文章列表目录
1. 算术运算符
1.0 赋值运算符#xff1a;
1.1 四则运算符#xff1a; - * / % 【取余与C有点不同】
1.2 增量运算符#xff1a; - * / %
* 【右侧运算结果会自动转换类型】
1.3 自增、自减#xff1a;、--
2. 关系运算符
3. 逻辑运算符
3.1 短路求值
3.2 【…目录
1. 算术运算符
1.0 赋值运算符
1.1 四则运算符 - * / % 【取余与C有点不同】
1.2 增量运算符 - * / %
* 【右侧运算结果会自动转换类型】
1.3 自增、自减、--
2. 关系运算符
3. 逻辑运算符
3.1 短路求值
3.2 【非短路逻辑运算和 | 】
4. 位运算符
5. 移位运算符
5.1 左移
5.2 右移
5.3 无符号右移
6. 条件运算符三目运算符
7. 对象类型检查运算符instanceof运算符
* 与C相比 · 失去或被重新定义的运算符 1. 算术运算符
1.0 赋值运算符
这个运算符用于变量的赋值和初始化例如
int a 3
int b
b 30 1.1 四则运算符 - * / % 【取余与C有点不同】
计算机中基本四则运算是加、减、乘、除、取余 int a 20;int b 10;System.out.println(a b); // 30System.out.println(a - b); // 10System.out.println(a * b); // 200System.out.println(a / b); // 2System.out.println(a % b); // 0 ---模运算相当于数学中除法的余数
注意
1. 都是二元运算符使用时必须要有左右两个操作数
2. int / int 结果还是int类型而且会向下取整
int a 3;int b 2;// 在数学中应该是1.5 但是在Java中输出结果为1 会向下取整即小数点之后全部舍弃掉了
System.out.println(a / b);// 如果要得到数学中的结果可以使用如下方式
double d a*1.0 / b;System.out.println(d);
3. 做除法和取模时右操作数不能为0 int a 1;int b 0;System.out.println(a / b)// 运行结果
Exception in thread main java.lang.ArithmeticException: / by zeroat Test.main(Test.java:5)
4. %不仅可以对整型取模也可以对double类型取模但是没有意义一般都是对整型取模的
【在C语言中进行取余操作的两个操作数必须是整型】
System.out.println(11.5 % 2.0);// 运行结果
1.5
5. 两侧操作数类型不一致时向类型大的提升。
System.out.println(10.2); // 的左侧是int右侧是double在加之前int被提升为double// 故输出1.2 1.2 增量运算符 - * / %
该种类型运算符操作完成后会将操纵的结果赋值给左操作数。
int a 1;a 2;
// 相当于 a a 2System.out.println(a); // 输出3a - 1;
// 相当于 a a - 1System.out.println(a); // 输出2a * 3;
// 相当于 a a * 3System.out.println(a); // 输出6a / 3;
// 相当于 a a / 3
System.out.println(a); // 输出2a % 3;
// 相当于 a a % 2
System.out.println(a); // 输出2
注意只有变量才能使用该运算符常量不能使用。 * 【右侧运算结果会自动转换类型】
如果对自己进行增量却不用增量运算符的话会发生类型不匹配的错误 如果我们用增量运算符这样做就不会报错 运行结果 其实使用增量运算符时系统会自动将右边的运算结果进行类型转换。 比如上面的 a 2.6 2.8 就相当于 a a (int)(2.6 2.8); 1.3 自增、自减、--
是给变量的值1--是给变量的值-1。 int a 1;a; // 后置 表示给a的值加1此时a的值为2System.out.println(a); // 注意后置是先使用变量原来值表示式结束时给变量1因此输出2System.out.println(a); // 输出3a; // 前置 表示给a的值加1System.out.println(a); // 注意前置是先给变量1然后使用变量中的值因此输出5System.out.println(a); // 输出5// --操作符给操作-1与含义类似
注意
如果单独使用【前置】和【后置】没有任何区别如果混合使用【前置】先1然后使用变量1之后的值【后置】先使用变量原来的值表达式结束时给变量1只有变量才能使用自增/自减运算符常量不能使用因为常量不允许被修改 2. 关系运算符
关系运算符主要有六个等于、!不等于、大于、小于、大于或等于、小于或等于 其计算结果是 true 或者 false即计算结果是boolean类型 。
int a 10;int b 20;// 注意在Java中 表示赋值要与数学中的含义区分
// 在Java中 表示相等
System.out.println(a b); // falseSystem.out.println(a ! b); // trueSystem.out.println(a b); // trueSystem.out.println(a b); // falseSystem.out.println(a b); // trueSystem.out.println(a b); // false
注意当需要多次判断时不能连着写比如3 a 5要写成a 3 a 5 。Java程序与数学中是有区别的 3. 逻辑运算符
逻辑运算符主要有三个: || !运算结果都是 boolean类型它们两侧的表达式也必须是布尔表达式。
【C语言不要求左右两边的表达式一定是布尔表达式在C中的(a b)在Java中必须写成(a ! 0 b ! 0)】
1. 逻辑与
语法规则表达式1 表达式2左右表达式必须是boolean类型的结果。
逻辑与相当于现实生活中的且比如如果是学生并且 带有学生证 才可以享受半票。 两个表达式都为真结果才是真只要有一个是假结果就是假。 2. 逻辑或 ||
语法规则表达式1 || 表达式2左右表达式必须是boolean类型的结果。
逻辑或相当于现实生活中的或比如买房子交钱时全款 或者 按揭都可以如果全款或者按揭房子都是你的 否则站一边去。 3. 逻辑非 !
语法规则! 表达式
真变假假变真。 3.1 短路求值 和 || 遵守短路求值的规则.
System.out.println(10 20 10 / 0 0); // 打印 false
System.out.println(10 20 || 10 / 0 0); // 打印 true
我们都知道, 计算 10 / 0 会导致程序抛出异常. 但是上面的代码却能正常运行, 说明 10 / 0 并没有真正被求值。 注意: 对于 , 如果左侧表达式值为 false, 则表达式结果一定是 false, 无需计算右侧表达式.对于 ||, 如果左侧表达式值为 true, 则表达式结果一定是 true, 无需计算右侧表达式. 3.2 【非短路逻辑运算和 | 】 和 | 本身是两个位运算符但如果单侧表达式结果为 boolean 时, 也表示逻辑运算.。 但与 || 相比, 它们不支持短路求值。 比如
System.out.println(10 20 10 / 0 0); // 程序抛出异常
System.out.println(10 20 | 10 / 0 0); // 程序抛出异常 4. 位运算符
数据存储的最小单位是字节而数据操作的最小单位是比特位. 字节是最小的存储单位每个字节是由8个二 进制比特位组成的多个字节组合在一起可以表示各种不同的数据。
位运算符主要有四个: | ~ ^除~是一元运算符外其余都是二元运算符。
位操作表示 按二进制位运算. 计算机中都是使用二进制来表示数据的(01构成的序列), 按位运算就是在按照二进制位 的每一位依次进行计算.
1. 按位与 如果两个二进制位都是 1, 则结果为 1, 否则结果为 0. int a 10;
int b 20;
System.out.println(a b);
进行按位运算, 需要先把 10 和 20 转成二进制, 分别为 1010 和 10100 2. 按位或 | 如果两个二进制位都是 0, 则结果为 0, 否则结果为 1. int a 10;int b 20;System.out.println(a | b);
运算方式和按位于类似
注意: 当 和 | 的操作数为整数(int, short, long, byte) 的时候, 表示按位运算, 当操作数为 boolean 的时候, 表 示逻辑运算.
3. 按位取反 ~ 如果该位为 0 则转为 1, 如果该位为 1 则转为 0 int a 0xf;System.out.printf(%x\n, ~a)
4. 按位异或 ^ 如果两个数字的二进制位相同, 则结果为 0, 相异则结果为 1. int a 0x1;
int b 0x2;
System.out.printf(%x\n, a ^ b); 5. 移位运算符
移位运算符有三个: 都是二元运算符且都是按照二进制比特位来运算的。
5.1 左移 左移 最左侧位不要了, 最右侧补 0. int a 0x10;System.out.printf(%x\n, a 1);// 运行结果(注意, 是按十六进制打印的)20
注意向左移位时丢弃的是符号位因此正数左移可能会编程负数。
5.2 右移 右移 最右侧位不要了, 最左侧补符号位(正数补0, 负数补1)。 int a 0x10;System.out.printf(%x\n, a 1);// 运行结果(注意, 是按十六进制打印的)8int b 0xffff0000;System.out.printf(%x\n, b 1);// 运行结果(注意, 是按十六进制打印的)ffff8000
5.3 无符号右移 无符号右移 最右侧位不要了, 最左侧补 0. 【C语言中没有该操作符但是有unsigned操作符可以让数据无符号化】 int a 0xffffffff;System.out.printf(%x\n, a 1);// 运行结果(注意, 是按十六进制打印的)7ffffff 注意: 左移 1 位, 相当于原数字 * 2 左移 N 位, 相当于原数字 * 2 的N次方. 右移 1 位, 相当于原数字 / 2.右移 N 位, 相当于原数字 / 2 的N次方. 由于计算机计算移位效率高于计算乘除, 当某个代码正好乘除 2 的N次方的时候可以用移位运算代替. 移动负数位或者移位位数过大都没有意义. 6. 条件运算符三目运算符 条件运算符只有一个表达式1 ? 表达式2 : 表达式3 运算规则 当 表达式1 的值为 true 时, 整个表达式的值为 表达式2 的值;当 表达式1 的值为 false 时, 整个表达式的值为 表达式3 的值. 也是 Java 中唯一的一个三目运算符, 是条件判断语句的简化写法。
// 求两个整数的最大值
int a 10;
int b 20;
int max a b ? a : b; 注意 1. 表达式2和表达式3的结果要同类型的除非能发生类型隐式类型转换或者主动强制类型转换 2. 表达式不能单独存在其产生的结果必须要被使用。 7. 对象类型检查运算符instanceof运算符 作用 该运算符用于操作对象实例检查该对象是否为某一个特定类型或该类型的子类型类类型或接口类型。如果运算符左侧变量所指的对象是操作符右侧类或接口(class/interface)的一个对象那么结果为真。 注意事项 只能用于对象引用变量instanceof 运算符不能用于基本数据类型。确保对象不为 null在使用 instanceof 运算符时需要确保对象引用变量不为 null否则将抛出 NullPointerException 异常。结果为布尔值instanceof 运算符的结果是一个布尔值只能用于条件判断不能用于赋值或其他操作 使用格式 对象名 instanceof 类型名 例如
String s Hello;
boolean re s instanceof String; // 由于s就是String类型的所以返回真 * 与C相比 · 失去或被重新定义的运算符
下标访问运算符[]、函数调用运算符() 这两种括号在Java语言中已经不再认为是运算符了。 但是数组中还是会用方括号[]来访问下标[]已经和数组类型强绑定了调用方法时还是会用到小括号()不过它不被定义为方法调用操作符。如果小括号()是运算符的话它只能是类型转换运算符。
Java语法这样规定的是为了让它们更具功能明确性。 解引用操作符*、成员间接访问操作符- 这两种符号在Java中已经不存在了。 这个很好理解Java语法中不存在指针而这两种操作符是与指针相关的自然就消失了。 成员直接访问操作符 . 在Java中被称作对象成员访问操作符。 这个操作符用于访问对象的属性字段和方法。例如object.field用于访问对象object的field属性object.method()用于调用对象object的method()方法。此外对于类的静态成员包括静态变量和静态方法可以使用类名后跟“.”操作符来引用例如ClassName.staticField或ClassName.staticMethod()。
该操作符符可以访问对象中的成员变量、方法……而C中的结构体和联合体只有成员变量没有函数。 逗号表达式 Java中逗号的使用受到严格限制不能随意用逗号来分隔多条语句。所以不存在C语言中像“表达式1表达式2表达式3” 这样的用法。 Java中的逗号主要用于变量定义时的多重声明、for循环中的初始化部分、方法参数列表等。例如int a 0, b 1或者for (int i 0, j 10; i j; i, j--) { ... }。 本期分享完毕感谢大家的支持Thanks♪(ω)