【幻化万千戏红尘】qianfengDay02-java基础学习:运算符、进制转换

时间:2021-10-03 01:10:13
常用命令:
“F:”进入到指定盘符
“cd 路径”:进入到指定路径下


javac 编译
java解释执行


标识符:
数据类型:基本数据类型、引用数据类型


今日内容:


常量:13
变量:一块内容可以改变的内存,存储数据
变量名:标识符
变量值:内存中的数据
变量想被使用,那么必须,先声明后赋值
声明的格式:数据类型 变量名;
赋值的格式:变量名=变量值;
数据类型(声明) 变量名=变量值(赋值);
例:int num = 12;
格式:数据类型 变量名[=值];


字符和字符串的区别?
字符:单引号,内部只有一个字符
字符串:双引号,内部可以有多个字符
byte范围:-128到127
java的整型默认都为int型,小数数据都默认为double型,


格式:数据类型 变量名[=值]


数据类型:
1、基本数据类型:数据类型为基本类型
2、引用数据类型变量:数据类型为引用类型


作用域分:
1、局部变量:定义在方法块中的变量(声明在方法代码块中的变量),作用范围就是方法内部
2、全局变量:定义在类的内部,方法的外部,作用于整个类中


java中的运算符:
1、算术运算符+、—、*、%、++、--
例:int b= ++(++i);//不可以,报错。相当于int b= ++(i=1);这是不合法的
int c*=i++;//是错误的,
int c=2;c*=i++;或c*=++i;都是正确的。c*=++(i++);或c*=--(++i);都是错误的
int i=1;
int b=++(++i);//不可以,错误的
int c*=i++;//是错误的,




2、赋值运算符:主要赋值
=、+=、-=、/=、%=


3、关系运算符>、<、>=、<=、==、!=,结果为布尔类型。


4、逻辑运算符:主要应用在布尔类型,结果都是布尔类型
!(非):!true==false
^(异或):true^false==true,true^true==false同为false,异为true
&(与):且,同时为true才为true
&&(短路与):且,同时为true才为true
|(或):或者,只要一个为true,那么结果为true
||(短路或):或者,只要一个为true,那么结果为true


短路与和与的区别?
与(&):无论左边是否为false,都会验证右边的表达式
短路与(&&):只要左边为了false,那么右边就不会验证
或(|):无论左边是否为true,都会验证右边的表达式
短路或(||):只要左边为true,那么右边就不会验证


8、int a = 5;
int b = 4;
boolean b9 = (a++)>(--b) & (--a)%(b++)==1 &(a--)<(b--);
System.out.println(b9+"\t"+a +"\t"+b);//


5>3&5%3==1&5<4
true&false&false=false
a=4,b=3;


a = 5;
b = 4;
boolean b10 = (a++)>(--b) && (--a)%(b++)==1 && (a--)<(b--);
System.out.println(b10+"\t"+a +"\t"+b);
true&&false&& (a--)<(b--)=false
a=5,b=4


9、a = 6;
b = 9;
boolean b11 = (a--)/(b++)<2 | (--a)*(--b)!=4 | (a++)%(b--)==2;
System.out.println(b11+"\t"+a +"\t"+b);//


6/9<2|4*9!=4|4%9==2
true
a=5,b=8






a = 6;
b = 9;
boolean b12 = (a--)/(b++)<2 || (--a)*(--b)!=4 || (a++)%(b--)==2;
System.out.println(b12+"\t"+a +"\t"+b); 


true
a=5,10






5、位运算符:操作的是每一个二进制数
位:就是一个二进制数:0或1
字节:由8位二进制组成的B
~(按位取反):取相反的
^(按位异或):相同则为0,不同则为1
|(按位或):同则同,异为1
&(按位与):同则同,异为0


二进制和十进制之间的转换:
二进制和十进制之间的转换?
十进制---- >二进制:除2取余、除尽为止
二进制---- >十进制:累加求和
负十进制----负二进制:
取绝对值
转换为二进制
取反加1
负二进制----负十进制:
减1取反(或取反加1)
转换为十进制正数
乘 -1


13--->二进制
-123-->101


64+32+16+8+2+1


7<<2


(左移)<<:左移,a<<b:a向左移动b位,a<<b:公式a*2的b次幂a*2^b。
有符号右移>>:a>>b:a向右移动b位
无符号右移>>>:a>>>:a向右移动b位,a>>>b公式:a/2的b次幂
例:8>>>1等价于8/2    -7>>>2-->1073741822




计算机的进制:
1、二进制:机器识别:0和1组成
2、十进制:生活用的,由0到9的数字组成
3、八进制:由0到7组成,逢八进位,借1顶8,要求以0开头
4、十六进制:由0到9还有A到F,要求以0x开头


6、字符串连接运算符:结果就是一个字符串 : "+"


三目运算符:X?Y:Z;
X若为true则选Y,若为false则选Z。
例1:int num1=5,num2=3;
String result = num1>num2?"真的啊":"假的吗"
//输出:真的啊
例2:System.out.println(false?'A':'z');//z
int i= 2; 
3>4?1.0*i/1:i/5;
答案为:5.0
int i = 2;  
3>4?1.0*i/1:i/5;
答案为:0.0






表达式:由变量和运算符按照一定规则组成的语句
表达式的类型:就是结果的数据类型
表达式的值:表达式的结果








推断表达式的值:
根据优先级进行结合,一步步的计算每一步涉及到的变量的值






明天课程:
分支:
1、if-else
2、switch






今日作业:






1.已知m,n,k是整型变量,执行下列语句后, m,n,k分别是多少? 
m = n = k = 8;  m += n += k += 1; 
m =11 ;n =10 ; k =9;


2.int n = 5;n = ++n + ++ n;求n=?
n=13


3.int n = 3;n = ++n + n++;求n=?
n=8


4.int x = 4 , y = 2 , z = 3;求表达式y-=z++*--x的值是多少?
表达式运行之后,x,y,z的值分别是多少?
值是:-7,x=3,y=-7,z=4




5.请写出下面表达式的输出结果:
int a =11;
int b =21;
boolean ben1 = (--a)%(++b)<10 | (a++)/(b--)!=11 | (++a)*(--b)==20 |(++a)<(--b);
System.out.println(ben1+"\t"+a +"\t"+b);
//true  13  19


boolean ben2= (--a)%(++b)<10 || (a++)/(b--)!=11 || (++a)*(--b)==20 ||(++a)<(--b);
System.out.println(ben2+"\t"+a +"\t"+b); 
//true  11  21


6.请计算:
a=3,b=4;
(1):(a++)/3+(--b)*2-(a--)%6+(b++)*3-(b--)
//3/3+3*2-4%6+3*3-4=1+6-4+9-4=8


a=3,b=4
(2):(++b)*2-(a--)%4+(a++)*5-(--b)/2+(--a)
//5*2-3%4+2*5-4/2+2=10-3+10-2+2=17


a=3,b=4
(3):(a--)*6+(b++)/3-(--a)*2-(--b)*2+(++a)
//3*6+4/3-1*2-4*2+2=18+1-2-8+2=11