Java基础语法(3)–运算符
运算符
算术运算符
package operator;
public class Demo1 {
public static void main(String[] args) {
//二元运算符
//ctrl+D 是IDEA里面的快捷键 是复制当前行到下一行
int a = 10;
int b = 20;
int c = 25;
int d = 25;
System.out.println(a+b); //输出30
System.out.println(a-b); //输出-10
System.out.println(a*b); //输出200
System.out.println(a/b); //输出0 //a和b均为int 型的,所以a/b也是int型的(0.5四舍五入就等于0)
System.out.println(a/(double)b); //输出0.5 //强制转换
long a1 = 1234567L;
int a2 = 1234;
short a3 = 123;
byte a4 = 10;
System.out.println(a1+a2+a3+a4); //Long类型 a1为long类型,所欲结果为long类型
System.out.println(a2+a3+a4); //int类型 a2,a3,a4中没有long类型,所以结果为int
System.out.println(a3+a4); //int类型 a3,a4中没有long类型,所以结果为int
}
}
关系运算符
package operator;
public class Demo2 {
public static void main(String[] args) {
//关系运算符返回的结果:正确或错误 布尔值
//跟if一起使用
int a = 10;
int b = 20;
int c = 21;
System.out.println(c%a); //取余 模运算 结果为1
System.out.println(a>b); //结果为false
System.out.println(a<b); //结果为true
System.out.println(a==b); //结果为false
System.out.println(a!=b); //结果为true
}
}
自加自减运算符
package operator;
public class Demo3 {
public static void main(String[] args) {
//++ -- 自加 自减 一元运算符
int a = 3;
//System.out.println(a); //3
int b = a++; //这行代码是先把上面的a赋给b,再做自加运算 //也就是这行代码是两行 int b = a;a=a+1;
// System.out.println(a); //4
int c = ++a; //这行代码是先做自加运算,再把自加之后的a赋给b 也就是这行代码是两行 int a=a+1; int c = a;
System.out.println(a); //5
System.out.println(b); //3
System.out.println(c); //5
//幂运算 2^3=2*2*2=8 在java里面没有^这个运算 但可以借助java里的数学类Math来进行幂运算
double pow = Math.pow(2, 3);
System.out.println(pow); //8.0
}
}
逻辑运算符
package operator;
public class Demo4 {
public static void main(String[] args) {
//逻辑运算符 与 或 非
boolean a = true;
boolean b = false;
System.out.println("a && b:"+(a && b)); //false
System.out.println("a || b:"+(a || b)); //true
System.out.println("!a:"+(!a)); //false
//短路运算
int c = 5;
boolean d = (c<4) && (c++<4); //c<4为假 与运算中第一个为假,整个结果就是假
System.out.println(d); //false 因为c<4为假,与运算中第一个为假,&&后面的语句都不会执行,也就是这里(c++<4)不会执行,所以输出的c仍为5
System.out.println(c); //5
}
}
位运算符
package operator;
public class Demo5 {
public static void main(String[] args) {
//位运算符
/*
A = 0011 1100
B = 0000 1101
-------------------
A&B=0000 1100
A|B=0011 1101
A^B=0011 0001
~B =1111 0010
面试题:2*8怎么计算最快 2*2*2*2
<< >> 箭头指向哪边就是往哪边移 即<<左移 >>右移
二进制
0000_0001 1
0000_0010 2
0000_0011 3
0000_0100 4
0000_1000 8
0001_0000 16
0010_0000 32
故左移1位 <<1 表示*2
右移1位 >>1 表示/2
*/
System.out.println(2>>3); //左移3位 结果位16
}
}
字符串运算符
package operator;
public class Demo6 {
public static void main(String[] args) {
int a = 10;
int b = 20;
//字符串连接符 + 在+运算符两侧只要有一个是String类型,就会把另外的东西转换成String进行连接(注意真正的String类型在加号的前面还是后面)
System.out.println(""+a+b); //结果为1020
System.out.println(a+b+""); //结果为30
System.out.println(a+b+""+a+b); //结果为301020
}
}
三元运算符
package operator;
public class Demo7 {
public static void main(String[] args) {
//三元运算符
//x?y:z;
//if x为true,结果就是y,否则结果为z
int score = 90;
String type = score>60?"及格":"不及格";
System.out.println(type);
}
}