一,算术运算符(+,-,*,/,%,++,--)
整数运算规则:
- 如果两个操作数为long,则结果也为long。==没有long时,结果为int。即使操作数全为short,byte,结果也是int。整形默认数据类型时int.
浮点运算:
如果两个操作数有一个为double,则结果为double
只有两个操作数时float,则结果才为float。
取模运算:
其操作数可以为浮点数,一般使用整数,结果是"余数",“余数”符号和左边操作数相同,如:7%3=1,-7%3=-1,7%-3=1、
二,赋值、扩展运算符(+=,-=,*=,/=,%=)
int a = 3;
int b = 4;
a += b; //相当于a = a + b
System.out.println("a="+a+"nb="+b);
a = 3;
a *= b;//相当于a = a*b;
System.out.println("a="+a+"nb="+b);
三,关系运算符(==,!=,>,<,>=,<=)
关系运算符是用来进行比较运算的,关系运算符的结果是布尔类型,其结果只会输出true(真)/false(假)。
=是赋值运算符,==是比较比较两个操作数是否相等的运算符。
==、!=是所有数据类型都可以使用。
>,<,>=,<=仅限于数值类型和char.
int a = 4;
int b = 6;
boolean c = a>b;
System.out.println(c);
//char值位于0~65536之间,可以通过int类型强制转换为数字来进行比较
char d = 'y';
System.out.println((int)d);
boolean e = d>100;
System.out.println(e);
四,逻辑运算符(&,|,!,&&,||,^)
与&、短路与&&,-----只有一个操作数为false,则为false。
或|、短路或||,---------只有一个操作数为true,则为true。
非!,------------------取反。
异或^,------------------相同为false,不同true。
逻辑运算的操作数和运算结果都是boolean,值。
短路与&&,短路非||,当左边操作数为true时不执行右边操作数。
代码区:
//int b3 = 3/0;//会报不能除以0异常 //boolean b1 = 1>2 & 4<(3/0); //System.out.println(b1); //boolean b2= 1<2 | 4<(3/0); //System.out.println(b2); boolean b3 = 1>2 && 4<(3/0); System.out.println(b3); boolean b4 = 1<2 || 4<(3/0); System.out.println(b4); boolean b5 = !(1>2);//false为true,true则为false。 System.out.println(b5); boolean b6 = 1<2 ^ 2>3;//相同为假false,不同为真true System.out.println(b6);
五,位运算符(~,&,|,^,<<,>>)
~,取反;&按位与,|按位或,^按位异或,
<<右移运算符,右移一位相当于乘二;>>左移运算符,左移一位相当于除二。
代码区:
int a = 7;
int b = 8;
System.out.println(a&b);//结果:0
System.out.println(a|b);//结果:15
System.out.println(a^b);//结果:15
System.out.println(~b);//结果:-9
//移位操作
//乘以2除以2用移位操作最快。
int c = 5<<2; //5*2*2 结果:20
System.out.println(c); //<<,左移运算符,左移1位相当于乘2
System.out.println(40>>3); //相当于:40/8 //>>,右移运算符,右移1位相当于除2取商
6,条件运算符(三元算符)
格式:“x ? y : z” 当x为true,则返回y;当x为false时,则返回z。
返回数据类型 变量名 = “x ? y : z”
public class TestOperator06{
public static void main(String[] args){
int score = 90;
String a = score>60?"及格":"不及格";
System.out.println(a);
int x = -100;
int flag = x > 0 ? 1:(x==0 ? 0 : -1);
System.out.println(flag);//结果:-1
//优先级问题的用法
boolean s1=true,s2=true,s3=false;
System.out.println(s1||s2&&s3);//逻辑运算符里:非>与>或
//当遇到复杂情况时,建议使用小括号组织表达式
boolean s4 = (3>1||4>3)&&(3<5);
System.out.println(s4);
}
}
7,字符串连接符(+)
这里要注意连接符连接的时String类型(为字符串型,指一串字符)而不是char类型(字符型,指单个字符)
public class TestOperator05{
public static void main(String[] args){
String a = "3";
int b = 4;
//1.‘+’运算符两侧操作数中要有一个是字符串(String)类型,
//系统会自动将另一个 操作数转换成字符串然后在进行连接。
System.out.println(a+b);
char c1 = 'h'; //条件是String类型,不是char.;若是char,则是将字符所在位置数字相加。
char c2 = 'i';
System.out.println(c1+c2);
System.out.println(""+c1+c2)://通过加空字符串(""+),让整个+变成连接符
}
}



