算术运算符
package com.java.base;
/**
* 算术运算符 + - = + - * / % ++ --
*/
public class TestAri {
public static void main(String[] args){
/*
* /运算(除运算)
*/
int i = 12;
int i2 = i/5;
System.out.println(i2);
//将i强转为double
//double i3 = (double)i/5; //若写成(double)(i/5)结果还是2.0
double i3 = i/5.0;
System.out.println(i3);
/*
* %运算(取余运算)
*/
int i4 = i%5;
System.out.println(i4);
/*
* ++运算 后++ 先运算后增1 前++ 先增1后运算
*/
int ii = 10;
int ii1 = ii++;//后++
System.out.println(ii);//11
System.out.println(ii1);//10
int jj = 10;
int jj2 = ++jj;
System.out.println(jj);//11
System.out.println(jj2);//11
}
}
赋值运算符
package com.java.base;
/**
* 赋值运算符: = += -= *= /= %=
* =支持连续赋值,赋值是从右->左
* += -=等等既可以完成运算,又不改变运算对象的数据类型。
* += -= /= %= 完成的是累加 累减 累除 累余 其中不涉及强转,但是运算后不改变运算对象的数据类型
*
*/
public class TestAss {
public static void main(String[] args){
int i = 10; // = 是一个赋值运算符,将10赋值给i
i += 2; //i = i + 2 同时i的数据类型不会发生改变(i += 2可以理解成在i的基础上累加2)
System.out.println(i);
int i1 = 12;
i1 += 1.5; //这里虽然1.5是double,但是将其强转为int型(范围大的转范围小的,截取)
System.out.println(i1);
int i2 = 13;
i2 /= 3;
System.out.println(i2);
double i3 = 13;
i3 /= 3;
System.out.println(i3);
}
}
逻辑运算符
package com.java.base;
/**
* 逻辑运算符 & && | || ^ !
* @author LENOVO
*
*/
public class TestLogic {
public static void main(String[] args){
boolean a = true;
boolean b = false;
System.out.println(a & b); //&(与) false
System.out.println(a && b); //&&(短路与) false
System.out.println(a | b); //| (或) true
System.out.println(a || b); //||(短路或) true
System.out.println(a^b); //^ (异或) true 异或:不同为true,相同为false
System.out.println(!a); //! (非) false
int i = 10;
int j = 10;
/*
* &与短路&&
* 对于&&,若左端为false,右端不进行运算
* 对于&,无论左端是false还是true,右端都进行运算
*/
if(b && ++i > 0){
System.out.println("早上好");
}else{
System.out.println("中午好");
}
System.out.println(i); //10
if(b & ++j > 0){
System.out.println("早上好");
}else{
System.out.println("中午好");
}
System.out.println(j); //11
/*
* |与||
* ||若左端为true,右端不进行运算
* |无论左端为true或者false,右端都要进行运算
*/
int ii = 2;
int jj = 2;
if(a || ++ii > 0){
System.out.println("下午好");
}else{
System.out.println("晚上好");
}
System.out.println(ii); //2
if(a | ++jj > 0){
System.out.println("下午好");
}else{
System.out.println("晚上好");
}
System.out.println(jj); //3
}
}
位运算符
package com.java.base;
/**
* 位运算符 << >> >>> & | ^ ~
*/
public class TestBit {
public static void main(String[] args){
/*
* << 左移运算符(左移一位相当于乘以二(末尾补0))
* 注意:左移位数不能太多,超出类型范围
*/
int i = 12;
i = i << 2;
System.out.println(i); //48
int ii = -12;
ii = ii << 2;
System.out.println(ii); //-48
/*
* >> 右移运算符(右移一位相当于除以二(符号位是什么补什么))
* >>> 无符号右移运算符(不管正负都补0)
* 对于正数,>>和>>>结果一致
* 对于负数,>>和>>>结果不一致
*/
int j = 12;
j = j >> 2;
System.out.println(j); //3
//j = j >>> 2;
//System.out.println(j); //3
int jj = -12;
//jj = jj >> 2;
//System.out.println(jj); //-3
jj = jj >>> 2;
System.out.println(jj); //1073741821
/*
* 位运算指的都是二进制位
* &两个操作数的每一位进行与运算
* |两个操作数的每一位进行或运算
* ^两个操作数的每一位进行异或运算
* ~操作数按位取反
*/
int a = 12;
int b = 5;
System.out.println(a & b); //4
System.out.println(a | b); //13
System.out.println(a ^ b); //9
System.out.println(~ b); //-6 注意按位取反包括符号位
}
}