Java语言基础—基础知识—运算符

2018年4月24日10:52:20
  • Java语言基础—基础知识—运算符已关闭评论
  • 132 views
  • A+
所属分类:java基础

1、赋值运算符,2、算术运算符,3、自增和自减运算符,4、比较运算符,5、逻辑运算符,6、位运算符,7、三元运算符,8、运算符优先级

Java语言基础—基础知识—运算符

  • 1、赋值运算符

赋值运算符即“=”,是一个二元运算符(即对两个操作数进行处理),其功能是将右方操作数所含的值赋值给左方的操作数,

语法如下所示:

变量类型 变量名 = 所赋的值;

 

在java中可以将赋值运算符连在一起使用如:

x=y=z=5;  //不建议这样使用

 

赋值运算符用于把一个数赋予一个变量。赋值运算符两边的类型不一致时,

那么如果左侧的数据类型的级别高,则右边的数据将转换成左边的数据类型在赋予左边的变量,否则需要强制类型转换。

赋值运算符包括= 、+=、-=、*=、%=、/=等。

 

  • 2、算术运算符

Java中的算术运算符主要+(加号)、-(减号)、*(乘号)、/(除号)和%(求余),它们都是二元运算符。

 

 

  • 3、自增和自减运算符

自增、自减运算符是单目运算符,可以放在操作元之前,也可以放在操作元之后。操作元必须是一个整型或浮点型变量。

放在操作元前面的自增、自减运算符,会先将变量的值加1(减1,然后再使该变量参与表达式的运算;

放在操作元后面的自增、自减运算符,会先使变量参与表达式的运算,然后再将该变量加1(减1) 。

++a(--a); 使用之前自增减

a++(a--); 使用之后自增减

 

  • 4、比较运算符

比较运算符属于二元运算符,用于程序中的变量和变量之间、变量和常量之间以及其他类型的信息之间的比较。

比较运算符的运算结果是boolean型,当运算符对应的关系成立时,运算结果是true,否则结果是false。

比较运算符通常用在条件语句中来作为判断的依据。

 

关系运算符用来比较两个值,返回布尔类型的值 true 或 false。

等于不等于小于小于等于大于等于大于

==     !=   <   <=   >=   >

 

  • 5、逻辑运算符

逻辑运算符包括&&(&(逻辑与)、||(|(逻辑或)和!(逻辑非),返回值为布尔类型的表达式,操作元也必须是boolean型数据。

和比较运算符相比,逻辑运算符可以表示更加复杂的条件,例如连接几个关系表达式进行判断。

在逻辑运算符中,除了“!”是一元运算符之外,其余的都是二元运算符。

 

  • 6、位运算符

位运算符用于处理整型和字符型的操作数(只适用于byte、short、char、int、long),

对其内存进行操作,数据在内存中以二进制的形式表示:

例如int型变量7的二进制表示是00000000 00000000 00000000 00000111,

-8的二进制表示是111111111 111111111 1111111 11111000,

 

最高位是符号位,0表示正数,1表示负数。

按位与 (&):都是1结果位才是1,否则为0;

按位或 (|) :都是0结果位才是0,否则为1;

按位取反(~):1修改为0,0修改为1;

按位异或(^):双目运算,同时为0或者同时为1,结果才为0,否则为1;

移位操作(<<:左移,右边移空的部位补0

>>:右移,高位是0,移空的部位补0,高位是1,移空的部位补1;

>>>(无符号右移)):移空的部位始终补0。

 

y>>2 即 y * 4

y<<1 即 y / 2

 

&=位与赋值

|= 位或赋值

^= 位异或赋值

>>= 右移赋值

>>>= 右移赋值,左边空出的位以 0 填充;无符号左移

<<= 左移赋值位非(NOT

位非也叫做补,一元运算符 NOT“~”是对其运算数的每一位取反。例如,数字 42,它的二进制代码为: 00101010

经过位非运算成为 11010101

 

  • 7、三元运算符

元运算符是Java中唯一一个三目运算符,其操作元有三个,第一个是条件表达式,其余的是两个值,

条件表达式成立时运算取第一个值,不成立时取第二个值,示例代码如下所示:

boolean b = (20 < 45) ? true : false;

 

条件运算符条件运算符的作用是根据表达式的真假决定变量的值。

 

 格式:条件表达式 ? 表达式 2 :表达式 3

功能:条件表达式为 true,取“表达式 2”值,为 false,取“表达式 3”的值

例: int a=0x10 , b=010 , max ; max=a>b ? a : b ; System.out.println(max) ; // 输出 16

 

 

  • 8、运算符优先级
  • Java语言基础—基础知识—运算符
  • 1、异或的应用范例:不使用辅助变量实现两变量的值互换

     

    1 import java.util.Scanner;

    // 异或的应用范例:不使用辅助变量实现两变量的值互换

    public static void OrTest() {

    Scanner scan = new Scanner(System.in);

    System.out.println("请输入变量A的值");

    long A = scan.nextLong();

    System.out.println("请输入变量B的值");

    long B = scan.nextLong();

    scan.close();

    System.out.println("A=" + A + "\tB=" + B);

    System.out.println("执行变量互换...");

    A = A ^ B;

    B = A ^ B;

    A = A ^ B;

    System.out.println("A=" + A + "\tB=" + B);

    }

     

    17 /*

    18 这里运用了位操作异或,对于整数X:X^X=0;X^0=X;同时异或操作满足结合律和交换律

    19 将A=A^B带入后面两式,分别如下:

    20 B=B^A=B^A^B=A^(B^B)=A^0=A;

    21 A=A^B=(A^B)^A=...=B;

    22 ----------

    23 引申:除异或方法外,不通过辅助变量的方法还:

    24 (1a=a+b;b=a-b;a=a-b;

    25 (2a=a*b;b=a/b;a=a/b;

    26 */

     

     

     

     

    2、判断某一年是否为闰年

    import java.util.Scanner;

    // 判断某一年是否为闰年

    public static void LeapYear() {

    Scanner scan = new Scanner(System.in);

    System.out.println("请输入年份(0~99999:");

    long year = scan.nextLong();

    while (year < 0 || year > 99999) {

    System.out.println("请重新输入年份(0~99999:");

    year = scan.nextLong();

    }

    scan.close();

    if ((year / 400 == 0) || ((year / 4 == 0) && (year / 100 != 0))) {

    System.out.println("输入年份为" + year + "是闰年");

    } else {

    System.out.println("输入年份为" + year + "不是闰年");

    }

    }

     

     

    3、不使用乘号运算符,用移位运算符计算21*16。

     

    public class MoveBit {

    public static void main(String[] args){

    long a=21L;

    int x=1;

    for(int i=1;i<5;i++){

    x*=2;

    a=a<<1;

    System.out.println("21左移动"+i+"位就是乘以"+x+"结果为"+a);

    }

    }

    }

     

avatar