运算符的讲解

赋值运算符
符号: =
 (1)当“=”两侧数据类型不一致时,可以使用自动类型转换或使用强制类型转换原则进行处理。
  (2)支持连续赋值。


扩展赋值运算符: +=, -=, *=, /=, %=


思考1: short s = 3; 
         s=s+2;  ①
         s+=2;    ②
        ①和②有什么区别? 




思考2:
     boolean b1 = false;
        //区分好==和=的区别。
        if(b1=true)
System.out.println("结果为真");
        else
System.out.println("结果为假");
思考3:
int i = 1;
i *= 0.1;
System.out.println(i);//
i++;
System.out.println(i);//


案例:
//赋值运算符:=  +=  -=  *=  /=  %=
class GetValue{
public static void main(String[] args) {
int i1 = 10;
i1 += 3;//i1 = i1 + 3;


short s = 10;
//s = s + 3;编译不通过
s = (short)(s + 1);//不建议如此实现
s += 1;//既可以实现运算,又不会更改s的数据类型。


int i2 = 12;
i2 %= 5;//i2 = i2 % 5;

System.out.println(i1);
System.out.println(s);
System.out.println(i2);//2


boolean b1 = false;
        //区分好==和=的区别。
        if(b1=true)
System.out.println("结果为真");
        else
System.out.println("结果为假");


int i = 1;
i *= 0.1;
System.out.println(i);//0




}
}
比较运算符
 
比较运算符的结果都是boolean型,也就是要么是true,要么是false。
比较运算符“==”不能误写成“=” 。


逻辑运算符
&—逻辑与         | —逻辑或         !—逻辑非
&& —短路与      || —短路或        ^ —逻辑异或 //a和b不一样是true
 
逻辑运算符用于连接布尔型表达式,在Java中不可以写成3<x<6,应该写成x>3 & x<6 。
“&”和“&&”的区别:
     单&时,左边无论真假,右边都进行运算;
     双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。
“|”和“||”的区别同理,||表示:当左边为真,右边不参与运算。
异或( ^ )与或( | )的不同之处是:当左右都为true时,结果为false。
      理解:异或,追求的是“异”!






案例:
//逻辑运算符:  &  && | || ! ^
class TestLogic{
public static void main(String[] args){
boolean a = true;
boolean b = false;


System.out.println(a & b);
System.out.println(a && b);
System.out.println(a | b);
System.out.println(a || b);
System.out.println(a & !b);
System.out.println(a^b);


//& 与 && 的区别:&:不管左边是true还是false,右端都会进行运算。
//   &&:当左端为false时,右端不再进行运算
//以后使用时,建议使用 &&
int i1 = 10;
if(b & (i1++) > 0){ 
System.out.println("今天天气很晴朗");
}else{
System.out.println("难得没有雾霾");
}
System.out.println(i1);//11


int i2 = 10;
if(b && (i2++) > 0){
System.out.println("今天天气很晴朗");
}else{
System.out.println("难得没有雾霾");
}
System.out.println(i2);//10




//| 与 || 的区别:|:当左端为true时,右端照样做运算。
// ||:当左端为true时,右端不再进行运算。
//我们在使用时,选择:||
int i3 = 10;
if(a | i3++ > 0){
System.out.println("今天天气很晴朗");
}else{
System.out.println("难得没有雾霾");
}
System.out.println(i3);//11


int i4 = 10;
if(a || i4++ > 0){
System.out.println("今天天气很晴朗");
}else{
System.out.println("难得没有雾霾");
}
System.out.println(i4);//10


}
}


练习题:
 






位运算符
  
位运算是直接对二进制进行运算
 


 


 
//位运算符:<<  >>   >>>  | & ~ ^
class TestBit{
public static void main(String[] args){
int i1 = 31;

System.out.println(i1<<3);//248
System.out.println(i1<<28);

System.out.println(i1>>2);//7
System.out.println(i1>>>2);//7


int i2 = -31;
System.out.println(i2>>2);//-8
System.out.println(i2>>>2);//1073741816

System.out.println(12 & 5);//4
System.out.println(12 | 5);//13
System.out.println(12 ^ 5);//9
System.out.println(~12);//-13


}
}
 
 
 
 




 


class TestExer1{
public static void main(String[] args){
int m = 12;
int n = 5;
System.out.println("m:" + m + " n:" + n);
//方法一:提供一个临时变量。
//int temp = m;
//       m = n;
//       n = temp;
//System.out.println("m:" + m + " n:" + n);


//方法二:当m和n较大时,有可能出现精度损失
//m = m + n;//m = 12 + 5;
//n = m - n;//n = 17 - 5;
//m = m - n;//m = 17- 12
//System.out.println("m:" + m + " n:" + n);


//方法三:优点:没有上面两种方法的缺点。 缺点:难!
m = m ^ n;
n = m ^ n;//(m ^ n) ^ n == m
m = m ^ n;//(m ^ n) ^ m == n
System.out.println("m:" + m + " n:" + n);

//问题:
//60  手动的方式,从控制台输出60的十六进制。
int i = 61;
//自动调用Integer类现成的方法
String binary = Integer.toBinaryString(i);

System.out.println(binary);


String hex = Integer.toHexString(i);
System.out.println(hex);

/*
char c = 'a';
char c1 = (char)(c + 2);
System.out.println(c1);//c
*/


int j = i & 15;//获取到i的最低4位对应的值。
String k1 = (j <= 9)? j + "" : (char)(j - 10 + 'a') + ""; 
//System.out.println(k1);


i = i >> 4;
int z = i & 15;
String k2 = (z <= 9)? z + "" : (char)(z - 10 + 'a') + "";

System.out.println(k2 + k1);
}
}
 


 






三元运算符
 
表达式1和表达式2为同种类型
三元运算符与if-else的联系与区别:
1)三元运算符可简化if-else语句
2)三元运算符要求必须返回一个结果。
3)if后的代码块可有多个语句


练习: 获取两个数中的较大数
       获取三个数中的较大数


/*
三元运算符:(条件表达式)?  表达式1 : 表达式2;
要求:表达式1与表达式2为同种数据类型。
  既然是运算符,就一定会有运算的结果,结果的数据类型与表达式1,2的类型一致。
三元运算符在一定程度上可以与if-else互换。(三元运算符一定可以转换为if-else,反之不成立。)
*/
案例:
class TestSanYuan{
public static void main(String[] args){
int i = 10;
int j = 20;
//此时max记录了i与j的较大值
int max = (i > j)? i : j;


//String str = (i > j)? "i大" : "j大";
String str = (i > j)? "i大" : (i == j)? "相等" : "j大";


//String str1 = (i > j)? i : "j大";
System.out.println(max);
System.out.println(str);


//互换
if(i >= j){
System.out.println("较大值为:" + i);
}else{
System.out.println("较大值为:" + j);
}


//练习:如何使用三元运算符,输出三个数中的较大值。
int m = 12;
int n = 23;
int k = -9;
int max1 = (m > n)? m : n;
int max2 = (max1 > k)? max1 : k;
System.out.println(max2);
}
}


 




程序流程控制
 


 


案例:
/*
1.格式:三种
2.执行if-else语句时,一定会选择其中的一个路径执行,而且也仅会选择一条路径。
*/
class TestIf1 {
public static void main(String[] args){
int age = 28;


if(age > 18){
System.out.println("你已经成年了!");
}else{
System.out.println("你还不能看成人电影!");
}


if(age > 130 || age < 0){
System.out.println("你估计不是人");
}else if(age < 30){
System.out.println("人家还很年轻,只有" + age + "岁的啦~~么么");
}else{
System.out.println("别追我了,我都有两个娃了!");
}


if(age < 30){
//1.
}else if(age < 60){
//2.
}else if(age < 100){
//3.
}else{
//4.
}


}
}


怎么获取键盘输入:
//1.导包
import java.util.Scanner;
class TestScanner{
public static void main(String[] args){
//2.创建一个Scanner类的对象
Scanner s = new Scanner(System.in);
System.out.println("请输入一个字符串:");
//3.调用此对象的相应的方法,完成键盘输入的值的获取
//next():表示从键盘获取一个字符串
String str = s.next();

System.out.println(str);
}
}
 案例:if语句例题1
从键盘输入小明的期末成绩。
当成绩为100分时,奖励一辆BMW;
当成绩为(80,99]时,奖励一个台iphone5s;
当成绩为[60,80]时,奖励一本参考书;
其它时,什么奖励也没有。


/*
从键盘输入小明的期末成绩。
当成绩为100分时,奖励一辆BMW;
当成绩为(80,99]时,奖励一个台iphone5s;
当成绩为[60,80]时,奖励一本参考书;
其它时,什么奖励也没有。


1.条件判断之间可以嵌套
2. ①如果多个条件之间是“互斥”关系,多个条件语句上下顺序是自由的。
   ②如果多个条件之间存在“包含”关系,要求范围小的写在范围大的上面。
*/
import java.util.Scanner;
class TestIf2{
public static void main(String[] args) {

Scanner s = new Scanner(System.in);
System.out.println("请输入小明的期末成绩:(分)");
int score = s.nextInt();

if(score >100 || score < 0){
System.out.println("你输入的数值有误!");
}else{
if(score == 100){
System.out.println("奖励一辆BMW");//be my wife!  MSN!
}else if(score > 80){
System.out.println("奖励一个台iphone5s");
}else if(score >= 60){
System.out.println("奖励一本参考书");
}else{
System.out.println("什么也没有");
}
}





}
}




编写程序:由键盘输入三个整数分别存入变量num1、num2、num3,对它们进行排序(使用 if-else if-else),并且从小到大输出。
/*
编写程序:由键盘输入三个整数分别存入变量num1、num2、num3,
对它们进行排序(使用 if-else if-else),并且从小到大输出。


说明:如果if-else if-else条件的执行语句块{}只有一条语句的话,那么这一对{}可以省略
建议:不要省略{}
*/
import java.util.Scanner;
class TestIf3{
public static void main(String[] args) {
//1.从键盘获取三个整数
Scanner s = new Scanner(System.in);
System.out.println("请输入第一个整数:");
int num1 = s.nextInt();
System.out.println("请输入第二个整数:");
int num2 = s.nextInt();
System.out.println("请输入第三个整数:");
int num3 = s.nextInt();


//2.对num1,num2,num3从小到大排序
System.out.println("从小到大的排序为:");
if(num1 > num2){
if(num3 > num1)
System.out.println(num2 + "," + num1 + "," + num3);
//System.out.println("helloworld");
else if(num3 < num2)
System.out.println(num3 + "," + num2 + "," + num1);
else
System.out.println(num2 + "," + num3 + "," + num1);

}else{
if(num3 > num2)
System.out.println(num1 + "," + num2 + "," + num3);
else if(num3 < num1)
System.out.println(num3 + "," + num1 + "," + num2);
else
System.out.println(num1 + "," + num3 + "," + num2);

}

}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值