⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 04_expressions_flowcontrol.txt

📁 达内科技上课的 java学习笔记 分为18天学完
💻 TXT
字号:
运算符:
	按照优先级向下排列
	1:	() [] .
			()优先运算
			[]数组下标
			.引用访问属性和方法
			结合性:
				从左向右

	2:	++ -- ! ~
		++	自加
		--	自减
		int a=1;
		int b=++a;
		int b=a++;
		!	逻辑非 boolean b=false; !b==true;
		~	按位取反 byte b=0; byte c=~b; -1
		+	正	
		-	负
			结合性:
				从右向左
		
	3:	* / %
			*	乘法
			/	除法
			%	求余	
			结合性:
				从左到右
	4:	+ -
			+	加法
			-	减法
		结合性:
				从左到右
	5:	>> << >>>
			>>		左移
			<<		右移
			>>>	算术右移,无符号右移
			结合性:
				从左到右	
	6:	> >= < <= 
			int i=1,j=2;
			boolean b=i<j;
			结合性:
				从左到右
	7:	==	!= 
			结合性:
				从左到右
	8:	&
			&	按位与
			同真为真,其他为假
			结合性:
				从左到右
	9:	^
			不同为真,其他为假
			^	按位异或
			结合性:
				从左到右
	10:	|
			同假为假,其他为真
			|	按位或
			结合性:
				从左到右
	11:	&& &
			&&	逻辑与(短路)
				int a=3,b=5,c=8;
				if(a>b&&c++>=9){//如果左边是真还是假右边不运算
					.....//这里的希望c做的++操作没有做
				}
			&	逻辑与(不短路)
				int a=3,b=5,c=8;
				if(a>b&c++>=9){//不论左边是真还是假右边都进行运算
					.....//这里的希望c做的++操作没有做
				}
			结合性:
				从左到右
			&根据左右两边数据类型来进行判断.
			C++不这样做是因为它的bool值和整型值是混用的.
	12:	||  |
			||	逻辑或(短路)
			|	逻辑或(不短路)
			结合性:
				从左到右

	13:	? :
			_?_:_	三目运算符
			结合性:
				从左到右
		
	14:	=    +=     -=    *=     /=    %=    <<=    >>=    >>>=    &=     /=    ^=
			结合性:
				从右到左

	++	如果在语句内被使用就要注意它代表
	/	整除
	%	求余注意符号的问题.左边操作数是正数结果就是正数,如果左边操作数是负数就是负数.
		int a=-5;
		if(a%2==1){//-5%2==-1
			a是奇数.
		}esle{
			a不是奇数.
		}
	位运算:
		>>		右移,最高位是什么就补什么.不改变符号
				相当于除2
		<<		出去的不管,地位补0;
		>>>	不论你的最高位是0还是1,都用0来补位.
		&    先应当把整数的二进制方式画出来,最后得到新的整数.
		^	按位异或,
		|	按位或
		使用场景:
			&:都为1结果位1,有一个位0都为零
				航班的机票系统,航班类型,有个航班的班期.
				需要用数据来描述这个班期,直接能看出来那天有航班,那天没有航班.
				这个时候就可以使用byte.
				还可以使用boolean[7];
				如果使用一个byte的每位来表示每个星期中的一天.
				如果1,3,5有航班,那么可以byte s=42.
				如果我想去判断s这个值,周三有没有航班.s&8但这样并不通用
				结果可以这样
						if((s&(1<<a))>0){//3就是我们要判断的星期几.
							有航班
						}else{
							没有航班
						}

	结合性是优先级的补充,统一优先级的运算到底该从左向右还是从右向左来算.


表达式:
	通过这些运算符加上变量和常量就可以计算出一个唯一的值.
		
流程控制:
	if( ... ){
	
	}else{

	}
	容易出错的地方:
		int a=3,b=5,c=8,d=0;
		if(a>b)
			if(c>b)
				d=c;
		else
			d=b;
		else和if的匹配原则是压栈式的依次匹配,在做if else语句最好把{}带上.



	switch(){
		case xxx:语句;break;
	}
	switch的括号里面可以出现那些类型的数据.
		byte	 short int char enum
		为什么如果出现一个实数值,由于实数值是近似取值,所以实数变量是补能精确定位一个数的.
		float f1=...;
		float f2=...;
		if(f1==f2){
			....;
		}
		不代表两个值是相等的.
		f1=1.1,f2=2.0f-0.9f;
		f1和f2是不相等的.就是由于存储方式导制的.
		
		去判断两个实数值那么需要这样.
			if(Math.abs(f1-f2)<1e-6){
				//求f1-f2的绝对值,如果小于10的-6次方就认为两个数字是相等的.
			}	
		
	

	循环:
		怎么样把一个问题转换成循环控制去进行.
		我不知道怎么把现实的逻辑转换成循环的逻辑来处理.初学程序设计的人的门槛.
		例子1:
			1-1/3+1/5-1/7-....-1/99;
			写不出代码,
			1.最起码知道用循环.
			2.选择那种循环语句,什么时候用三种循环中那种,根据方便来定.
				如果循环的次数已知那么用for比较方便
				如果循环不是根据次数而是根据一些不定的条件,那么用while比较好.
			for(表达式1;表达式2;表达式3){
			}
			while(表达式){
			}
			do{
			}while(表达式);

				//4.1定义一个和值,
				double s=0.0;
				//4.2每循环一次都要求每一项的值
				double d=0.0;
				//5.2.1定义一个整形值控制正负
			for(int i=1;i<50;i++){
				//3.我每循环一次我的程序要做什么
				//3.1去定这一项的值
				//3.2确定这一项的正负.
				//3.3把这一项加到循环值上去.
				//4.定义一些什么样的辅助变量
				//5思考循环语句怎么写
				//5.1求每一项的值,即确定每一项的值
					d=1.0/(2i-1);
				//5.2确定每一项正负;
					d=d*k;
				//5.3求和值
					s+=d;
					k=-k;
			}
		
		例子2:
			已知一个整形值int a=2857;
			写一段代码换成一个新的整数把数字序列到排.

	break;
	contiune;
	loop1:
		for(){
			while(){
				 break loop1;
			}
		}
		...
	在内层循环也可以带有语句标号.
	loop1:for(){
		while(){
			contiune loop1;
			
		}
	}

	题目
		编写程序,求满足以下条件的四位数.
		1.千位数字要大于百位数字.
		2.十位数字的语个位数字.
		3.千位 + 个位=百位 + 十位.

		for(int i=1000;i<9999;i++,j++){
			if( 
				(i/1000)  > (i/100%10) && 
				(i/10%10) >(i%10) && 
				( (i/1000)+(i%10)==(i/100%10)+(i/10%10) )
			)
			System.out.println(i);
			
		}

	byte b1=1;
	byte b2=2;
	byte b3=b1+b2;
	System.out.println(b3);
	int i=b1+b2

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -