fengye0518

导航

Java学习 (八)基础篇 运算符

运算符

基本运算符

Java 语言支持如下运算符

算术运算符 +,-,*,/,%,++,--
赋值运算符 =
关系运算符 >,<,>=,<=,==,!=
‘逻辑运算符 &&,||,!
位运算符 &,^,~,>>,<<,>>>
条件运算符 ?、:
扩展赋值运算符 +=,-=,*=,/=

1.一元基础运算(重点)

一元运算符 (a++ / ++a) (a-- / --a)

int a1 = 3;
int b1 = a1++;
/*
b1 = a1     先赋值 3=3     此时a1=3,b1=3
a1 = a1+1   后自增 3+1=4   此时a1=4
 */
System.out.println(a1);//4
int c1 = ++a1;
/*
a1 = a1+1   先自增         此时a1=4+1=5
a1 = c1     后赋值         此时c1=a1=5
 */
//a++是先赋值给了b再a自增1,所以b只是3,而++a是先自增再赋值给c,所以c是变成了5
System.out.println(a1);	//5
System.out.println(b1);	//3
System.out.println(c1);	//5

2.二元基础运算

基础

        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 (/)计算结果取小数部分的整数,在字符面前添加类型即可
        System.out.println(a/(double)b);//0.5

计算返回值类型

       long e = 121212121212L;
        int f = 123;
        short g = 10;
        byte h = 8;

        //运算结果的数据类型为参与运算的变量中最高优先级的数据类型
        System.out.println(e+f+g+h);//121212121353(long)
        System.out.println(f+g+h);  //141(int)
        System.out.println(g+h);    //18(int)

关系运算

//关系运算符返回的结果(布尔值)
        int i = 10;
        int j = 20;
        int k = 21;

        System.out.println(a>b);	//false
        System.out.println(a<b);	//true
        System.out.println(a==b);	//false
        System.out.println(a!=b);	//true
//模运算(取余)
        System.out.println(k%j);  	//1

幂运算

//很多运算,我们会使用一些工具类来使用

double pow1 = Math.pow(2,3);
double pow2 = Math.pow(3,2);
System.out.println(pow1);	//8
System.out.println(pow2);	//9

3.三元运算符

/*
x ? y : z
如果 x==true,则结果为y,否则结果为z
 */
//int score = 80;
int score = 50;
String type = score <60 ?"不及格":"及格";
System.out.println(type);//及格

4.逻辑运算符

与(and) 或(or) 非(取反)

boolean a = true;
boolean b = false;

System.out.println("a && b:"+ (a && b));//逻辑与运算,两个变量都为真,结果才为true
System.out.println("a || b:"+ (a || b));//逻辑或运算,两个变量有一个为真,结果才为true
System.out.println("a && b:"+ !(a || b)); //如果是真则为假,如果是假则为真

//短路运算 :(&&)中当前一变量为假,则不会执行后一变量,直接输出
int c = 5;
boolean d = (c<4)&&(c++<4);
System.out.println(d);	//false
System.out.println(c);	//5

位运算

/*
A = 0011 1100
B = 0000 1101
-------------------------------------
A&B 0000 1100
A|B 0011 1101
A^B 0011 0001
~B  1111 0010
 */

/*
2*8 = 16  计算机没有此编码方式
2*2*2*2 = 16  效率低下
<<(左移 乘)  >>(右移 除)
 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);//2乘以3个2	16
System.out.println(16>>3);//16除以3个2	2

5.扩展赋值运算符

int a = 10;
int b = 20;

a += b;
//a -= b;
System.out.println(a);		//30

//字符串连接符    + , String
System.out.println(a+b);	//50
System.out.println(""+a+b);	//3020
//如果前方出现字符串类型,则之后的操作都为字符串类型
System.out.println(a+b+"");	//50
//如果字符串在操作后面,则会先进行运算,后拼接

posted on 2022-08-01 17:47  落枫叶子  阅读(25)  评论(0编辑  收藏  举报