当前位置: 代码迷 >> 综合 >> Java&day02
  详细解决方案

Java&day02

热度:33   发布时间:2024-02-05 14:13:05.0

1.运算符

1.算术运算符

符号 作用
+
-
*
/
% 取余

1.1.1 运算符和表达式


运算符:对常量或者变量进行操作的符号
表达式:用运算符把常量或者变量连接起来符合java语法的式子就可以称为表达式。
不同运算符连接的表达式体现的是不同类型的表达式。
+   -    *    /     % 
注意:
/和%的区别:两个数据做除法,/取结果的商,%取结果的余数。
整数操作只能得到整数,要想得到小数,必须有浮点数参与运算。

public class demo1 {public static void main(String[] args) {//代码演示:System.out.println(10 + 20);  //30System.out.println(10 - 20);  //-10System.out.println(10 * 20);  //200System.out.println(10 / 3);   // 整数和整数计算的结果必须是整数 3System.out.println(10 % 3);   // 1System.out.println(7  % 10);  // 7System.out.println(13 % 5);   // 3}
}

2.字符的+操作

      每个字符的底层其实都是一个数字
要记住常用的字符的值。
在字符加数字的情况下,结果会变成一个数字

public class demo1 {public static void main(String[] args) {//代码演示:System.out.println('a' + 1);  //98    'a' -->  97System.out.println('A' + 1);  //66    'A' -->  65System.out.println('0' + 1);  //49    '0' -->  48 System.out.println('我'+ 1); //25106  '我'-->  25105}
}

3.字符串的+操作

    字符串遇到+就不是加法运算了,是拼接效果。
字符串和任何类型连接都会变成一个更大的字符串。


public class demo1 {public static void main(String[] args) {//代码演示:System.out.println("黑马" + 66 + 6);    //"黑马666"System.out.println(99 + 1 + "黑马");    //"100黑马"System.out.println("黑马" + (66 + 6));  //"黑马72"// 10+20=30System.out.println(10 + "+" + 20 + "=" + 30);     // 10+20=30int a = 6;//使用这个a打印出:     6+6=12System.out.println(a + "+" + a + "=" + (a+a));  //6+6=12}
}

4.赋值运算符

符号 作用 说明
= 赋值 a=10,将10赋值给变量a
+= 加后赋值 a+=b,将a+b的值给a
-= 减后赋值 a-=b,将a-b的值给a
*= 乘后赋值 a*=b,将a×b的值给a
/= 除后赋值 a/=b,将a÷b的商给a
%= 取余后赋值 a%=b,将a÷b的余数给a

注意:

  扩展的赋值运算符隐含了强制类型转换。


public class demo1 {public static void main(String[] args) {/=    +=    -=    *=    /=     %=// 代码演示://把10赋值给int类型的变量aint a1 = 10;//扩展的赋值运算符演示int a = 10;a += 20;    //相当于 a = a + 20;System.out.println(a);//30a -= 5;     //       a = a - 5;System.out.println(a); //25}
}

5.自增自减运算符

符号 作用 说明
++ 自增 变量的值加1
-- 自减 变量的值减1

++(给变量自身加一)    --(给变量自身减一)  

++前置:
++a;
先加一,后运算
后置++:
a++;
先运算,后加一

 

public class demo1 {public static void main(String[] args) {// 代码演示://在单独使用时,不涉及运算,前置和后置效果是一样的int a = 10;a++;//++a;System.out.println(a); //11int a = 10;//先把a的值赋值给b,然后a自身再加一int b = a++;System.out.println(a); //11System.out.println(b); //10int a = 10;//先让a自身加一,然后再把a的值赋值给bint b = ++a;System.out.println(a); //11System.out.println(b); //11int a = 10;int b = 20;//       10 + 21int c = a++ + ++b;System.out.println(c); //31}
}

6.关系运算符

符号 说明
== a==b,判断a和b的值是否相等,成立为true,不成立为false
!= a!=b,判断a和b的值是否不相等,成立为true,不成立为false
> a>b,判断a是否大于b,成立为true,不成立为false
>= a>=b,判断a是否大于等于b,成立为true,不成立为false
< a<b,判断a是否小于b,成立为true,不成立为false
<= a<=b,判断a是否小于等于b,成立为true,不成立为false

>   <   ==   !=   >=   <=

关系运算符的结果一定是boolean类型。
=是赋值   ==是判断相等  ,千万不要把 == 写成 = !!! 

7.逻辑运算符

 

符号 作用 说明
& 逻辑与 a&b,a和b都是true,结果为true,否则为false
| 逻辑或 a|b, a和b都是false,结果为false,否则为true
^ 逻辑异或 a^b,a和b结果不同为true,相同为false
! 逻辑非 !a,结果和a的结果正好相反
&& 短路与 作用和&相同,但是有短路效果
|| 短路或 作用和|相同,但是有短路效果

 &    :与
左右两端都是true,结果才是true,否则是false
|   :或
左右两端都是false,结果才是false,否则是true

^   :异或
两边相同为false,两边不同为true
!   :非
取反

 


&&  :短路与
如果左边结果是false,右边就不会执行了。

||  :短路或
如果左边结果是true,右边就不会执行了。

public class demo1 {public static void main(String[] args) {// 代码演示:int a = 10;int b = 20;//a++是后置,所以先运算后加一 10>10 false//++b是前置,所以先加一后运算 21>20 trueSystem.out.println(a++>10 & ++b>20);   // false&true  --> false//在执行这行之前a已经是11了,11>10 true//在执行这行之前b已经是21了,21>21 falseSystem.out.println(a++>10 | b++>21);   // true|false  --> trueSystem.out.println(true  ^ true);    //falseSystem.out.println(false ^ true);    //trueSystem.out.println(true  ^ false);   //trueSystem.out.println(false ^ false);   //false//!取反System.out.println(!(a>20));   //trueSystem.out.println(!!(a>20));  //false//代码演示:int c = 10;int d = 20;//c++后置,10>10 false c变成11  右边不执行System.out.println(c++>10 && ++d>20);  //false//++d前置,先变成21,21>21 false  11>10 true             System.out.println(++d>21 || c++>10);  //trueSystem.out.println(c); //12System.out.println(d); //21}
}

8.三元运算符

  格式:
数据类型 变量名 = 关系表达式 ? 表达式1 : 表达式2;

流程:
如果关系表达式是true,就把表达式1赋值给变量
如果关系表达式是false,就把表达式2赋值给变量

 


public class demo1 {public static void main(String[] args) {//代码演示://求两个数字的较小值int a = 10;int b = 5;int c = a > b ? b : a;System.out.println(c);  //5//练习://求三个整数的最大值int height1 = 150;int height2 = 210;int height3 = 220;//先求两个人的较大值int temp = height1 > height2 ? height1 : height2;//再拿较大值和第三个值比较int max = temp > height3 ? temp : height3;System.out.println("最大值是:" + max);}
}

9.优先级结论

  运算符其实是有优先级的
比如&&的优先级大于||

  System.out.println(true || true && false);     //true

  //这个()可写可不写,但是尽量写上为了看起来清楚先执行的是后面
System.out.println(true || (true && false));   //true

  优先级不需要记,写代码的时候,尽量把优先级手动表示清楚

2.键盘输入

 

  1. 导包

    import java.util.Scanner;
  2. 创建对象

    Scanner sc = new Scanner(System.in);
  3. 输入数据

    int a = sc.nextInt();
//导包
import java.util.Scanner;public class demo1{//所有的变量名都是可以随便命名的public static void main(String[] args){//创建对象Scanner sc = new Scanner(System.in);//输入数据int a = sc.nextInt();//输出一下这个数据System.out.println("数据是:" + a);}
}

3.流程控制语句

  java中一共有三种流程语句,顺序结构、分支结构和循环结构

1.if语句

  格式:
if(条件判断){
语句体;
}

流程:
如果条件判断的结果是true,语句体就执行
如果条件判断的结果是false,语句体就跳过不执行

public class demo1{public static void main(String[] args){int a = 10;System.out.println("开始");if(a>20){System.out.println(a + "大于20");}System.out.println("结束");}
}

2.if...else语句

  格式:
if(条件判断){
语句体1;
}else{
语句体2;
}

流程:
如果条件判断的结果是true,就执行语句体1
如果条件判断的结果是false,就执行语句体2
也就是说两个语句体一定会执行一个,也叫作是互斥判断。

public class demo1 {public static void main(String[] args) {int a = 30;int b = 20;//求两个数的较大值if(a > b){System.out.println("较大值是:" + a);}else{System.out.println("较大值是:" + b);}}
}

3.if...else if...语句

  格式:
if(条件判断1){
语句体1;
}else if(条件判断2){
语句体2;
}else if(条件判断3){
语句体3;
}else{
语句体4;
}

流程:
如果条件判断1的结果是true,就执行语句体1,别的不会执行了。
如果条件判断1的结果是false,就会继续条件判断2,如果判断2的结果是true,就执行语句体2,别的不会执行了
……
如果所有的if结果都是false,就执行else里面的语句体4

else if()可以写任意多个,最后的else可以不写,也叫做是多分支判断,多个之中选一个执行。

 

import java.util.Scanner;
public class demo1{public static void main(String[] args){/*		0 ~ 60  不及格60~ 70  及格70~ 80  良好80~100  优秀*/Scanner sc = new Scanner(System.in);System.out.println("请输入一个分数:");int a = sc.nextInt();//判断if(a>=0 && a<60){System.out.println("不及格!!!");}else if(a>=60 && a<70){System.out.println("及格!!!");}else if(a>=70 && a<80){System.out.println("良好!!!");}else if(a>=80 && a<=100){System.out.println("优秀!!!");}else{System.out.println("啥也不是!!!!");}}
}