Java学习04

复习03:

1.“&”和“&&”的异同
相同点:&与&&的运算结果相同,当符号左边为true,二者都会执行右边的运算。
不同点:当符号左边为false时,&继续执行符号右边的运算。&&不再执行符号右边的运算。
2.程序输出。

class OperatorTest {
	public static void main(String[] args) {
	boolean x = true;
	boolean y = false;
	short z = 40;
	i评((z++ == 40) 8& (y = true)) {
		Z++;
	}
	if ((x = false) II (++z = 43)) {
		Z++;
	}
	System. out.println("z = "+ z);
	}
}

结果为:44
3.定义三个int型变量并赋值,使用三元运算符或者if-else获取这三个数中的较大数的实现。

int num1 = 10,num2 = 15, num3=-20;
int max;
if(num1>=num2 && num1>=num3){
	max=num1;
}else if(num2>=num1 && num2>=num3){
	max=num2;
}else{
	max =num3;
}
System.out.println(max);
 (((n1>n2)? n1 : n2)>n3)? ((n1>n2)? n1 : n2) : n3;

4.编写程序,声明2个double型变量并赋值。判断第一个数大于10.0,且第2个数小于20.0,打印两数之和。否则,打印两数乘积

double d1=12.3;
double d2=32.1;
if (d1>10.0 && d2<20){
	
}else{

}

5.交换两个变量值的代码的实现

int a=10;
int b=20;
int c;
c=a;
a=b;
b=c;

算术运算符 +正 -负 +加 -减 *乘 /除 %取模(取余) ++(前) ++(后) --(前) --(后) +

//除号:/
int num1 = 12;
int num2 = 5;
int result1 = num1/num2;
System.out.println(result1);

//(前)++ :先自增1,后运算
//(后)++ :先运算,后自增1
int a1 = 10;
int b1 = ++a1;
System.out.println("a1= "+ a1 + ", b1 = " + b1);
int a2 = 10;
int b2 = a2++;
System.out.println("a2= "+ a2 + ", b2 = " + b2);

//(前)-- :先自减1,后运算	
//(后)-- :先运算,再自减1
int a4 = 10;
int b4 = a4--;
System.out.println("a4= "+ a4 + ", b4 = " + b4);
int a5 = 10;		
int b5 =--a5;
System.out.println("a5= "+ a5 + ", b5 = " + b5);

特别说明;
1.//(前)++ :先自增1,后运算
//(后)++ :先运算,后自增1
2.//(前)-- :先自减1,后运算
//(后)-- :先运算,再自减1
3.连接符:“+”(只能够使用在string与其他数据类型之间使用)

赋值运算符 = += -= *= /= %=

int i1 = 10;
int j1 = 10;
int i2,j2;
//连续赋值
i2 = j2 = 10;
int i3 = 10,j3 = 20;

int num1 =  10;
num1+= 2;//num1 = num1 + 2;
System.out.println(num1);

int num2=12;
num2 %= 5;//num2= num2%5
System.out.println(num2);

short s1 = 10;
//s1 = s1+2;//编译失败
s1+=2;//不会改变变量本身的数据类型;
System.out.println(s1);

特别说明:
1.运算的结果不会改变变量本身的数据类型
//开发中, 如果希望变量实现+2的操作,有几种方法? (前提: int num = 10;)
//方式一: num=num+2
//方式二: num +=2;(推荐)
//开发中, 如果希望变量实现+1的操作,有几种方法? (前提: int num = 10;)
//方式一: num=num+1
//方式二: num +=1;
//方式三: num++;(推荐)

比较运算符 == != > < <= >= instanceof

int i = 10;
int j = 20;
System.out.println(i==j);//false
System.out.println(i = j);//20

boolean b1 = true;
boolean b2 = false;
System.out.println(b1==b2);//false
System.out.println(b2=b1);//true

特别说明:
1.比较运算符的结果是Boolean类型
2.< > >= <=:只能使用在数值类型的数据之间
3.== !=:不仅可以使用在数值类型数据之间,还可以使用在其他引用类型变量之间
Accont acct1 = new Account(1000);
Accont acct2 = new Account(1000);
boolean b1 = (acct1 == acct2); //比较两个Account是否是同一个账户
boolean b2 = (acct1 != acct2);

逻辑运算符:& && || | ! ^

//区分& 与&& 
		//相同点:&与&&的运算结果相同,当符号左边为true,二者都会执行右边的运算。
		//不同点:当符号左边为false时,&继续执行符号右边的运算。&&不再执行符号右边的运算。
		//开发中,推荐使用&&
		boolean b1=true;
		b1 = false;
		int num1=10;
		if(b1 & (num1++>0)){
			System.out.println("北京");
		}else{
			System.out.println("南京");
		}
		System.out.println("num1 = " + num1);

		boolean b2 = true;
		b2 = false;
		int num2 =10;
		if(b2 && (num2++>0)){
			System.out.println("北京");
		}else{
			System.out.println("南京");
		}
		System.out.println("num2 = " + num2);

		//区分 | 与 ||
		//相同点1: | 与|| 的运算结 果相同
		//相同点2:当符号左边是false时,二者都会执行符号右边的运算
		//不同点3:当符号左边是true时,|继续执行符号右边的运算,而||不再执行符号右边的运算
		//开发中推荐使用||
		boolean b3 = false;
		b3 = true;
		int num3 = 10;
		if(b3 | (num3++>0)){
			System.out.println("北京");
		}else{
			System.out.println("南京");
		}
		System.out.println("num3 = " + num3);
		
		boolean b4 = false;
		b4 =true;
		int num4 = 10;
		if(b4 || (num4++>0)){
			System.out.println("北京");
		}else{
			System.out.println("南京");
		}
		System.out.println("num4 = " + num4);

		boolean x=true;
		boolean y=false;
		short z=42;
		//if(y == true)
		if((z++==42)&&(y=true))
			System.out.println("z="+z);
			z++;
			System.out.println("z="+z);
		System.out.println("z="+z);
		if((x=false) ||(++z==45)) 
			z++;
		System.out.println("z="+z);

a b a&b a&&b alb allb !a a^b
true true true true true true false false
true false false false true true false true
false true false false true true true true
false false false false false false true false
特别说明:
1.逻辑运算符操作的都是boolean类型的变量,而且结果也是boolean类型

位运算符:<< >> >>> & | ^ ~

int i = 21;
	System.out.println("i << 2 : " + (i << 2));//21*4
	System.out.println("i << 3 : " + (i << 3));//21*8
	System.out.println("i << 27 : " + (i << 27));
	System.out.println("i << 26 : " + (i << 26));
	System.out.println("i >> 2 : " + (i >> 2));
	 i = -21;
	System.out.println("i >> 2 : " + (i >> 2));
	System.out.println("i >>> 2 : " + (i >>>2));

	int m = 12;
	int n = 5;
	System.out.println("m & n : " + (m & n));
	System.out.println("m | n : " + (m | n));
	System.out.println("m ^ n : " + (m ^ n));

[面试题]你能否写 出最高效的2 * 8的实现方式?
答案: 2<<3 或 8<<1
1.位运算符操作的都是整型的数据
2. << :在一定范围内,每向左移1位,相当于*2
>>:在一定范围内,每向右移1位,相当于/2
典型题目:
1.交换两个变量的值.
2.实现60的二进制到十六进制的转换

//方式一:自动实现
String str1 = Integer.toBinaryString(60);//二进制
String str2 = Integer.toHexString(60);//十六进制
//方式二: 手动实现
int i1 = 60;
int i2 = i1&50;
String j = (i2>9)?(char)(i2-10+'A')+"":i2+"";
int temp = i1>>>4
i2 = temp&15;
String k = (i2>9)?(char)(i2-10+'A')+"":i2+"";
System.out.println(k+""""+j);

三元运算符:(条件表达式)?表达式1:表达式2
//获取两个整数的较大值
1.说明:
①条件表达式的结果为boolean类型
②根据表达式真或假,决定执行表达式1,还是表达式2
如果表达式为true,则执行表达式1
如果表达式为false,则执行表达式2
③表达式1和表达式2要求是一致的
④三元运算符可以嵌套使用
2.
凡是可以使用三元运算符的地方,都可以改写成if-else
反之不成立
3.如果程序既可以使用三元运算符,又可以使用if-else结构,那么优先选择三元运算符。原因:简洁、执行效率高,

顺序结构:程序从上到下执行
分支结构:if-else if -else switch-case
循环结构:for while do-while

发布了5 篇原创文章 · 获赞 0 · 访问量 33

猜你喜欢

转载自blog.csdn.net/weixin_44722917/article/details/105208015