为了更好的帮助大家便利的学习java这门编程语言,和更好的巩固java语言学习中的基础知识,我们特意为大家精心制作了java培训教程。
本教程精选java核心内容,结合实例,循序渐进的向大家介绍Java语言。以零基础讲解为基础,用实例引导大家学习,深入浅出的向大家介绍java的相关知识和实战技能。
Java入门(9)1 逻辑运算符 【|| && !】
||【逻辑或】--[短路或]
格式:【表达式A || 表达式B】 ,在某种情况下只判断表达式A,而不用判断表达式B,就能够得到这个逻辑运算的结果【短路】
||【逻辑或】的真值表
Op1 || Op2
True || true true
True || false true
Fales || true true
False || false false
当||【逻辑或】的左边表达式是true的时候,||【逻辑或】的右边表达式是不用计算。
&&【逻辑与】--[短路与]
格式:【表达式A && 表达式B】 ,在某种情况下只判断表达式A,而不用判断表达式B,就能够得到这个逻辑运算的结果【短路】
&&【逻辑与】的真值表
Op1 && Op2
True && true true
True && false false
Fales && true false
False && false false
当&&【逻辑与】的左边表达式是false的时候,&&【逻辑或】的右边表达式是不用计算。
例如:
public class LuoJiDemo{
public static void main(String args[]){
int num1=10;
int num2=0;
//java.lang.ArithmeticException: / by zero
//System.out.println(num1+"/"+num2+"="+(num1/num2));
// ||【逻辑或】--[短路或]
// 当||【逻辑或】的左边表达式是true的时候,||【逻辑或】的右边表达式是不用计算。
//boolean b=(num1>num2) || ((num1/num2)>1);
//boolean b=(num1<num2) || ((num1/num2)>1);
//System.out.println("b=="+b);
// &&【逻辑与】--[短路与]
//当&&【逻辑与】的左边表达式是false的时候,&&【逻辑或】的右边表达式是不用计算。
//boolean b=(num1<num2) && ((num1/num2)>1);
boolean b=(num1>num2) && ((num1/num2)>1);
System.out.println("b=="+b);
}
}
![逻辑非] 求反 !true== false !false==true
2.位运算 【将运算数据转换成2进制,逐位运算】
1.2进制--0101001010----8位2进制为1个字节
2.2进制与10进制的换算
二进制中的原码、反码、补码
对于有符号数而言:
二进制的最高位是符号位:0表示正数,1表示负数
00000001 -- 正数 10000001 -- 负数
正数的原码、反码、补码都一样;
5正数 -- 00000101【原码】 00000101【反码】 00000101【补码】
负数的反码 = 它的原码符号位不变,其他位取反(0 ->1 ; 1->0 );
负数的补码 = 它的反码 +1;
-5负数 -- 10000101【原码】 11111010【反码】 11111011【补码】
0的反码、补码都是0;
在计算机运算的时候,都是以补码的方式来运算的;
8421码标准
--- ...64 32 16 8 4 2 1
7 0 0 0 0 1 1 1
13 0 0 0 1 1 0 1
java语言中六种位运算符:
1.& 按位与 只有对应的两个二进位均为1时,结果位才为1 ,否则为0
1 & 1==1 1& 0==0 0&1 ==0 0&0 ==0
10 & 3 == 2
0000 1010
0000 0011
0000 0010 -- 2
2.| 按位或 只要对应的二个二进位有一个为1时,结果位就为1.
1 | 1==1 1| 0==1 0|1 ==1 0|0 ==0
10 | 3 == 11
0000 1010
0000 0011
0000 1011 --11
3.^ 按位异或 当两对应的二进位相异时,结果为1
1 ^ 1==0 1^ 0==1 0^1 ==1 0^0 ==0
10 ^ 3 ==
0000 1010
0000 0011
0000 1001 ---9
4.~取反
3 -- 0000 0011 --- 1111 1100[补码] -- -4
5.<<左移位 向左移动指定的位数
3 << 4 ==48
3 0000 0011
00110000
3 << 2 00 001100 --12
6.>>右移位 向右移动指定的位数
3 >> 2
3 0000 0011
000000 00
3 >> 2 00000000 --0
a=15 00001111 >> 2 ==3
00000011 ===3
例如:
System.out.println("位运算【& | ^ ~ << >> 】");
System.out.println("10 & 3 =="+(10&3));
System.out.println("10 | 3 =="+(10|3));
System.out.println("10 ^ 3 =="+(10^3));
System.out.println("~3 =="+(~3));
System.out.println(" 3<<2 =="+(3 << 2));
System.out.println(" 15>>2 =="+(15 >>2));
面试题:int a=2*8怎样运算效率最快?
2 <<3 效率最快
3.表达式中自动提升数据结果的数据类型
在程序中没有变量保存的整数,都是int型
在程序中没有变量保存的小数,都是double型
例如:
public class BiaoDaShiDemo{
public static void main(String args[]){
byte b1=12;
short s1=23;
int res = b1+s1+100; //这个表达式的结果是int
double dou=b1+s1+100+12.5; //这个表达式的结果是double
System.out.println("res =="+res );
System.out.println("dou=="+dou );
}
}
表达式的结果的数据类型是由表达式中最高的数据类型决定。
java培训班:http://www.baizhiedu.com/java2019