java 运算符

public class Helloworld {

public static void main( String[] args ){

/*  1. 算术运算符  + - * / %

*

*      (1) + (正数,加法,连接符)

*      连接符的作用: 让任何的数据都可以与 字符串进行拼接;

*      如果+号用于字符串的时候,那么+号就是一个连接符, 并不是做加法功能;

*

*      连接符注意: 任何类型的数据与字符串使用连接符连接,那么结果都是字符串类型的数据;

*

*      int i1 = 1;

int i2 = 2;

System.out.println(i1 + "world");

System.out.println(1+2+3 + "world"+1+2+3);  //6world123

*

*      (2)  - * / %

*      (1) java中的  int/int, 结果表达式会是 int类型, 如 11/3=3

*          int a = 11;

int b = 3;

System.out.println(a/b);

*          (2) java中的 % ,取模运算, 结果的正负号是取决于被除数。

*          10 = -3 * -3+1;

*                  -10 = -3* 3 -1;

*          -10 = 3 * -3 -1;

* */

/*

*  2. 自增,自减  ++ --

*  (1) 关于后自增,自减的运行原理:

*      (1) ++,--的运算优先级别很高,无论前++————还是后++--,都会先自增自减;

*    (2) 而后++--则是通过增加一个临时变量实现其效果的;临时变量保存后++--的值,然后变量++--,再将临时变量赋值;

*

*  int  i = 0;

i = i++;

System.out.println(i);

*

*      (2) 前++,--    变量先++--,然后返回变量本身

*          后++ --    先创建临时变量保存原变量的值, 然后变量++--, 然后返回临时变量的value

* */

/*  3. 赋值运算符:  =,+=,-=,*=,/=,%=    (这些运算符进行运算时,编译器已经对 表达式的value进行了强制类型转换,所以编译不会报错)

*

*        byte b1 = 1;

byte b2 = 2;

b2 += 1;

b2 += b1;

// b2 = b2 + b1;    由于b1+b2表达式值类型是int,而int->byte不能隐式转换,编译报错

System.out.println(b2);

* */

/*  4. 比较运算符:  比较运算符的结果都是返回一个布尔值的;

*        (1) ==  判断是否等于

*            == 用于比较两个基本数据类型数据的时候,比较的是两个变量存储的值是否一致;

*            == 用于比较两个引用类型变量的数据时候,比较的是两个引用类型变量所记录的内存地址是否一样

*

*        (2)  != 不等于    >, >= 大于,大于等于  <,<=

* */

/*  逻辑运算符:  逻辑运算符的作用 在于连接 boolean表达式的;

* (1)  &&双与  ||双或  !非

*              1. 需要左右都是boolean表达式

*              2. &&,||具有短路原则

*

*      (2) &  |  ^

*      1.  在java中,&|^在两边都是boolean表达式时,可以算是逻辑运算符号, 证实原因是 按位运算,但是boolean的值只有 1bit有值;

* 2.  充当逻辑运算符号的时候,不具有短路原则;

*

* 1. 逻辑与:  &&,& --> 要全部为真才是真

* 2. 逻辑或:  ||,| --> 只要有一个为真就为真

* 3. 异或:    ^  ---> 异则为真,同则为假

*

*

*

* 位运算:  位运算就是直接操作二进制的; (直接操作bit)

* &(与), |(或), ^(异或), ~(取反)

*

*  关于^异或: 如果操作数A连续异或同一个操作数两次,那么结果还是操作数A。

*  应用: 异或可以对数据进行加密。

*

* int a = 3;

* int b = 4;

* a = a^b;

* b = a^b;

* a = a^b;

*

*

* 截取一个二进制数字的指定位数,要求截取该二进制数据的低4位: &

*        0000001111110001

*      & 0000000000001111

*      ->            0001

*

*

* 移位运算符:

*  << 左移运算符    3<<2  相当于011 --->110  3*(2的1次方)

*  >> 右移运算符    3>>2  相当于011 --->001  3/2=1

*  >>> 无符号右移

* 无符号右移 与 右移的区别:  移动是否改变数据的最高位,即符号位;

*

* */

}

}

你可能感兴趣的:(java 运算符)