Day06 运算符
JAVA语言支持的运算符
- 算数运算符:+,-,*,/,%,++,--
- 赋值运算符=
- 关系运算符:>,<,>=,<=,==(两个等于才表示等于,一个等于是上面的赋值),!=(就是不等于的意思,只能这么表示),instanceof
- 逻辑运算符:&&,||,!(且,或,非) 非:!(a&&b)就是给且取反
- 位运算符:&,|,^(异或),~(取反),>>,<<,>>>
- 条件运算符:? :
- 扩展赋值运算符:+=,-=,*=,/=
public class Operator {
public static void main(String[] args) {
//二元运算符
int a=10;
int b=20;
System.out.println(a+b);
System.out.println(a-b);
System.out.println(a*b);
System.out.println((double) a/b);
System.out.println("=====================================");
long e=121432243546l;
int f=46542;
short g=33;
byte h=10;
System.out.println(e+f+g+h);//long(操作数中有一个数为long,则这个结果类型也为long)
System.out.println(f+g+h);//int(如果没有long,结果都为int)
System.out.println(g+h);//int(在算术混合运算中,表达式的最高精度低于int型整数,按int精度进行计算)
//在算数混合运算中,结果类型自动升为操作数中的最高类型,若低于int,则结果都按最低int型整数计算(double>float>long>int)
System.out.println("=====================================");
//关系运算符返回的结果:正确,错误 布尔值
int c=10;
int d=20;
int i=21;
System.out.println(c>d);//f
System.out.println(c<d);//t
System.out.println(c==d);//f
System.out.println(c!=d);//t
System.out.println(i%c);//i / c 21/10=2……1 取余,模运算
System.out.println("=====================================");
//++ -- 自增,自减 一元运算符
int k=3;
int m=++k;//由于k在+后面,所以是先计算后赋值,先给k+1=4,之后,把4赋值给m,此时,m和k都等于4
int l=k++;//由于k在+前面,所以是先赋值后计算,先把k=4赋值给l,再给k+1=5,此时l=4,k=5
System.out.println(k);
System.out.println(m);
System.out.println(l);
System.out.println("=====================================");
//幂运算 2^3 2*2*2=8 很多运算,我们会使用工具类来操作
double pow = Math.pow(2, 3);//8
System.out.println(pow);
System.out.println("=====================================");
//逻辑运算符 与(and) 或(or) 非(取反)
boolean n=true;
boolean o=false;
System.out.println("n&&o:"+(n&&o));//逻辑与运算:两个变量都为真,结果才为true
System.out.println("n||o:"+(n||o));//逻辑与运算:两个变量有一个为真,则结果为true
System.out.println("!(n&&o:)"+!(n&&o));//逻辑与运算:真变假,假变真
System.out.println("=====================================");
//短路运算
int p=5;
boolean q=!(p<4)&&(p++<4);
System.out.println(q);//false
System.out.println(p);//5(由于p<4已经为假,对于&&所以无论如何,后面结果都是假的,直接不会再去管后面的运行,则p++不计算)
System.out.println("=====================================");
/*
A =0011 1100
B =0000 1101
A&B=0000 1100
A|B=0011 1101
A^B=0011 0001 (异或:相同为0,不同为1)
~B =1111 0010(取反)
位运算效率极高!
<< (左移)*2
>> (右移)/2
0000 0000 0
0000 0001 1
0000 0010 2
0000 0011 3
0000 0100 4
0000 1000 8
0001 0000 16
*/
System.out.println(2<<3);
System.out.println("=====================================");
//扩展赋值运算符:+=,-=
int r=10;
int s=20;
r+=s; //r+s后把值赋给r
r-=s; //r-s后把值赋给r
System.out.println(r);
System.out.println("=====================================");
//字符串连接符 + String
System.out.println(""+r+s);//1020 把r+s当成字符串了
System.out.println(r+s+"");//30 先运算再输出
System.out.println("=====================================");
//三元运算符 ? :
//x?y:z
//如果x==true,则结果为y,否则为z
int score=80;
String type=score<60?"不及格":"及格";//if
System.out.println(type);
}
}
包机制
- 为了更好地组织类,JAVA提供了包机制,用于区别类名的命名空间
- 包语句的语法格式为:
package pkg1[. pkg2[. pkg3...]];
- 一般利用公司域名倒置作为包名:(www.baidu.com,做包时就是com.baidu.www,建立起包中包com>baidu>www)
- 为了能够使用某一个包的成员,我们需要在JAVA程序中明确导入该包。使用“import”语句可以完成此功能
import package1[.package2...].(classname|*);