【JAVASE_学习笔记】运算符

来源:互联网 发布:汇智通兼职数据录入 编辑:程序博客网 时间:2024/06/01 09:03

【JAVASE_学习笔记】运算符

算数运算符

+(正数,加号,连接符)
连接符:数据与字符使用+,此时+作为一个连接符,拼接字符串。任何数据与字符串使用连接符,结果类型为字符串类型。
注意:计算机每次只能运算一个+

System.out.println(1+2+3+"hello"+1+2+3);//输出6hello123

-(减号)
*(乘号)
/(除号)默认取整
%(取模,取余数)取模运算结果正负取决于被除数的正负

System.out.println(10%3);//1System.out.println(10%(-3));//1System.out.println((-10)%3);//-1System.out.println((-10)%(-3));//-1

++(自增)- -(自减)
应用场景:
   1)单独使用:不管是++或者–在数据前还是数据后都是自增1或者自减1
   2)参与运算使用:
     a:++,- -在数据的前面,先自增1或者自减1,然后在运算(赋值)
     b:++,- -在数据的后面.先运算(先赋值),然后自增1或者自减1
练习:

/* * 1 :  int a = 10;    int b = 10;    int c = 10;    a = b++;    c = --a;    b = ++a;    a = c--;    请分别计算出a,b,c的值2:int x = 4;int y = (x++)+(++x)+(x*10);分别求出x和y的值 * */public class OperatorTest {    public static void main(String[] args) {        int a = 10;        int b = 10;        int c = 10;        a = b++;//a=10 ,b=11  c=10        c = --a;//a=9  ,b=11,c=9        b = ++a;//a=10,b=10, c=9        a = c--;// a=9, b=10,c=8        System.out.println("a:"+a);        System.out.println("b:"+b);        System.out.println("c:"+c);        System.out.println("-----------------------");        int x = 4;        int y = (x++)+(++x)+(x*10);        //x = 4,5,6        //y = 4 + 6 + (6*10)        System.out.println("x:"+x);        System.out.println("y:"+y);    }}

赋值运算符

=(赋值运算符)
拓展的赋值运算符:
+=
表达的意思:将当前符号右边的数据和左边的数据相加赋值给左边的数据
-=
*=
/=
%=
对于扩展的赋值运算符:隐藏了默认的强制类型转换
例如:

/* *  面试题:        short s=1;            s = s+1;         short s=1;            s+=1;        上面两个代码有没有问题,如果有,哪里有问题。 * */public class OperatorTest {    public static void main(String[] args) {        //定义变量//      short s = 1 ;//      s = (short) (s + 1) ;        short s = 1 ;        s += 1 ;        System.out.println(s);    }}

比较运算符

符号连接的表达式结果都是boolean类型
== 作用:
   1.用于基本数据类型数据比较时,判断两个数据是否相等;
   2.用于引用数据类型比较时,比较的是两个变量所指向的对象是否为同一个(比较的是内存地址)
!= (不等于)
<  (小于)
<  (大于)
<= (小于等于)
>= (大于等于)

逻辑运算符

主要作用是用于连接布尔表达式的
& (与)    两边都true,才true
|  (或)    一边为true,就为true
!  (非)    true边false,false边true
^ (异或)   两边不同为true,相同为false
&&(短路与)
||(短路或)
逻辑双与&&和逻辑单与& 的区别 (逻辑双或||和逻辑单或|):
  相同点:结果相同
  不同点:
      使用&&时,若左边为false,则不会运算右边布尔表达式,直接返回false;
       使用||时,若左边为true,则不会运算右边布尔表达式,直接返回true

位运算符

使用位运算符时,将1看为true,将0看为false
&(位与)

|(位或)

^(位异或)
位异或的一个特点:一个数据被另一个数据位异或两次,结果是该数据本身

~(取反)

public class OperatorDemo {    public static void main(String[] args) {        //位运算符        System.out.println(3 & 4);        System.out.println(3 | 4);        System.out.println(3 ^ 4);//(位异或:重点)        System.out.println(~3);    }}/* * 计算出int类型3和4对应的二进制数据 * 00000000 00000000    00000000    00000011 * 00000000 00000000    00000000    00000100 *位与:& *      特点:有0则0  *          00000000    00000000    00000000    00000011 *    位与&:00000000  00000000    00000000    00000100 * ------------------------------------------------------- * 结果:  00000000    00000000    00000000    00000000 *  0 * 位或|: *      特点:有1,则1 *       00000000   00000000    00000000    00000011 * 位与|:00000000     00000000    00000000    00000100 * ------------------------------------------------------- *       00000000   00000000    00000000    00000111 * 结果:7 *  * 位异或:^ *      特点:相同则为0,不同则为1 *       00000000   00000000    00000000    00000011 * 位与^:00000000     00000000    00000000    00000100 * ------------------------------------------------------ *       00000000   00000000    00000000    00000111 * 结果:7 *  * 反码:~:特点:按位取反(底层对补码进行按位取反) *      00000000    00000000    00000000    00000011 原码,反,补 *  ~  -------------------------------------------------- *  * 最高符号位                        数值位 *      1                   1111111 11111111    11111111    11111100(补码)--->原码 *                                                                -1 *      1                   1111111 11111111    11111111    11111011        --->反码 *      1                   0000000 00000000    00000000    00000100 *      -                   4 *  * 结果:-4 * */

<<(左移)  最左边的最高符号为丢弃,右边补齐0
规律:一个操作数进行左移运算时,等于该操作数乘以2的n次方,n是移动的位数

>>(右移)  最高符号位为0,左边补0,最高符号位为1,左边补齐1
规律:一个操作数右移时,等于该操作数除以2的n次方,n是移动的位数

>>>(无符号右移) 不管最高符号位是0还是1,左边补齐0

三元运算符(三目运算符)

格式:
 (表达式)? true的结果 : false的结果;
执行流程:
 如果表达式成立,执行true的结果;
 如果表达式不成立,执行false的结果;
 

public class OperatorDemo {    public static void main(String[] args) {        //求两个数据是否相等        int a = 100;        int b = 200 ;        //用三元运算符实现//      boolean flag = (a==b) ? true : false;//==表示两个数据进行比较//      System.out.println("flag:"+flag);        //优化改进        boolean flag = a==b ;        System.out.println(flag);        //求两个数据中的最大值        //先定义变量max        int max = (a>b) ? a : b ;        System.out.println("两个数据中的最大值是:"+max);        System.out.println("-----------------------");        //求三个数据中的最大值        int m = 10 ;        int n = 50 ;        int z = 20 ;        //可以使用中间第三方变量进行实现,实际开发中就使用第三方进行实现//      int temp = (m>n) ? m : n ;//      //定义max2//      int max2 = (temp > z) ? temp : z ;        //一步走:        int max2 = (m>n) ? ((m>z)? m: z) : ((n>z)? n: z) ;//不建议使用        System.out.println("三个数据中的最大值是:"+max2);    }}

键盘录入

步骤:
  A:创建键盘录入对象:Scanner类: java.util包下的类
    固定格式:
    sc:对象名
    Scanner sc = new Scanner(System.in); //实质还是通过IO流实现的(java高级特性)
  B:导包:位置:class和package中间
    import java.util.Scanner;
  C:录入数据:使用对象名调用方法
    int a = sc.nextInt();
  D:输出

package _11.org.westos_键盘录入;import java.util.Scanner;//导包:import java.util.Scanner;快捷键:ctrl+shift+o/* * 键盘录入两个数据,并对这两个数据求和,输出其结果 * */public class ScannerTest {    public static void main(String[] args) {        //1)创建键盘录入对象        Scanner sc = new Scanner(System.in)  ;        //2)录入数据        //提示        System.out.println("请输入第一个数据:");        int firstNumber = sc.nextInt() ;        System.out.println("请输入第二个数据:");        int secondNumber = sc.nextInt() ;        //定义个最终变量        int result = firstNumber + secondNumber ;        System.out.println("result:"+result);    }}
原创粉丝点击