Day06 基本运算符
基本运算符
支持的运算符
-
算术运算符:+,-,*,/,%(膜运算:取余),++,--
-
赋值运算符:=
-
关系运算符:> , < , >= , <= , ==(java里等于要用两个等于号) , !=instanceof(英文感叹号加等于号!= 表示不等于)
-
逻辑运算符:&&(与),||(或),!(非)
-
位运算符:&,|,^,~,>>,<<,>>>(了解)
-
条件运算符?:
-
扩展赋值运算符:+=,-=,*=,/=
package Operator;
public class Demo01 {
public static void main(String[] args) {
//二元运算符
//Ctrl+D 复制当前行到下一行
int q=10;
int w=88;
int e=1212121213;
int r=999999;
System.out.println(q+w);
System.out.println(e-r);
System.out.println(e*(long)r);//运算中,需要注意内存溢出问题和精度问题
System.out.println((double) e/r);
System.out.println("=================================================");
//跨类型运算:优先级显示
long t=1234564564L;
int y=45;
short u=10;
byte i=8;
double o=1.5263;
System.out.println(t+y+u+i);//Long (有一个数为Long,则运算结果为Long)
System.out.println(u+i*y);//int(其余整数运算结果显示均为int)
System.out.println(u+i);//int
System.out.println(u+i+o);//double(浮点数优先级一般较高)
System.out.println(t+y+u+i+o);//double
System.out.println("=================================================");
//关系运算符返回的结果:只有true和false(布尔值显示)
//与大量if条件等有关
int a=100;
int b=20;
int c=25;
System.out.println(c%b);//只显示余数大小,取余,模运算
System.out.println(a==b);
System.out.println(a>b);
System.out.println(a<b);
System.out.println(a>=b);
System.out.println(a!=b);
}
}
自增自减运算符,初识Math类
自增符:++;自减符:--
package Operator;
public class Demo02 {
public static void main(String[] args) {
// ++(自增符);--(自减符); 一元运算符
int a=10;//初始值
int e=++a;
int b=a++;/*相当于int b=a
a=a+1(自增行为) */
//当加号在后面,先赋值给到b,a再自增
int c=++a;
//当加号在前面时,a先自增,再赋值给到c;自减同理
System.out.println(e);//11
System.out.println(a);//13
System.out.println(b);//11
System.out.println(c);//13
}
}
Math类方法计算
由于java中并不存在幂运算符号,需要使用数学方法类
//幂运算 (在java中没有次方符号);于是使用工具类函数,比如Math
double pow = Math.pow(2, 3);//Alt+回车 输出一个值
//按住Ctrl,可以点击Math,获得Math源代码
System.out.println(pow);
long pow1 = (long) Math.pow(3, 999);//若继续使用double,会变成infinity(即无穷大)
System.out.println(pow1);
逻辑运算符、位运算符
逻辑运算符
package Operator;
//逻辑运算符
public class Demo03 {
public static void main(String[] args) {
//与(and) 、 或(or) 、 非(取反)
boolean a=true;
boolean b=false;
System.out.println(a&&b);//逻辑与运算,两个都为真,才为真
System.out.println(a||b);//逻辑或运算,其中一个为真,则结果为真
System.out.println(!a);//逻辑非运算,如果为真,则变成假;如果为假,则变成真
System.out.println(!b);
System.out.println(!(a&&b));
验证与运算中的短路运算
//(划重点!!!)与运算中存在短路运算,如果发现与运算前面一个已经为false,则后面一个不再运行
int c=99;
boolean d=(c<4)&&(c++<100);
System.out.println(d);
System.out.println(c);//此时的c为初始值99,并未运行自增
int e=26;
boolean f=(e++>20)&&(c++>900);
System.out.println(e);
System.out.println(c);//前面一个为true,于是后面一个运行,c得到自增,为100
System.out.println(f);
位运算符
位运算中
&为与(两个都为1,才为1)
|为或(有1则为1)
~为取反(与其截然相反)
^为亦或(相同为0,不同为1)
//位运算符(注意位运算中的与或非符号的变化)
/*
A=0011 1100
B=0000 1101
====================================
A&B=0000 1100
A|B=0011 1101
A^B=0011 0001
~B=1111 0010
*/
左移:<<
右移:>>
/*
左移<< 相当于乘以2
右移>> 相当于除以2
0000 0000 0
0000 0001 1
0000 0010 2
0000 0011 3
0000 0100 4
0000 0101 5
0000 0110 6
0000 0111 7
0000 1000 8 左移右移相当于是数字左移右移
*/
System.out.println(3<<4);//意为3左移四位,即3乘以4个2=3*2*2*2*2=48
三元运算符
//三元运算符
//x ? y : z
//如果x==true,则结果为y,否则为z
int score=88;
String statement=score<60?"不及格":"及格";
//一般使用if
System.out.println(statement);
扩展赋值及字符串连接注意要点
package Operator;
public class Demo04 {
public static void main(String[] args) {
//扩展赋值运算符
int q=15;
int w=25;
q+=w;//q=q+w
System.out.println(q);
q-=w;//q=q-w ;注意,这个时候由于已经运行了q+w,此刻的q值为40
System.out.println(q);
q=q-w;//非偷懒写法
System.out.println(q);
//字符串连接符+
System.out.println(q+w);
System.out.println(""+q+w);//若其中前面出现了字符串类型String,则所有数字都为字符串,即输出-1025
System.out.println(q+w+"");//如果字符串出现在了后面,运算顺序是,先运算,再字符串,即输出15
浙公网安备 33010602011771号