运算符:
两原一封
–两个原则:
1、不同类型数据做运算时,一定会先转换成较大类型范围
再做运算
2、byte,short,char这些类型运算时,一定先转换成int类型
在做运算,结果是int类型
–封:
一定要注意封闭式运算
算术运算符:+,-,*,/,%,++,–
/:
1、参与的类型都是整型时,做取整运算
即,商 n 余 m ,输出 n ;
将范围变成一个固定值,可以用除法取整;
2、只要有一个浮点数参与,就会做类似精确运算
%:
取余运算符号,也叫取模运算符号
即,商 n 余 m ,输出 m ;
1、参与运算的都是整数时,余数是精确值
2、有浮点数参与时,余数不一定是精确值,但接近精确值
取余运算一般被用来判断某个数能否被另外一个数整除
取余算法的结果取正取负,只看被除数
被除数为正,结果为正
被除数为负,结果为负
++/–:
是自增自减运算符
符号与变量一起使用,表示自动+1或-1;
如:
a++/++a <=> a = a+1
a--/--a <=> a = a-1
与变量在一起,不与其他变量连用时(单独使用)
此时,变量一定会+1或-1;
自增自减运算与其他符号连用时,需要考虑表达式的值
a++/a–/++a/–a 整体看成表达式
符号(++/–)在前,先运算(自增自减),再赋值(给表达式)
符号(++/–)在后,先赋值(给表达式),再运算(自增自减)
/**
运算符:(两原一封)
1.算数运算符:+,-,*,/,%,++,--
*/
public class CalDemo01{
public static void main(String[] args){
byte a = 1;
byte b = 2;
byte c = (byte)(a+b);//a+b为int类型,再强制转换成byte
short s1 = 1;
char c1 = 'A';
int result = s1+c1;//两个变量先转换成int类型,再运算
System.out.println(result);//66
short s2 = (short)(s1+c1);
System.out.println(s2);//66
char c2 = (char)(s1+c1);
System.out.println(c2);//B
int m1 = 10;
long m2 = -1;
long m3 = m1-m2;//m1转成long再与m2运算,结果是long类型
System.out.println(m3);//11
int n1 = 10;
double n2 = 2;
double n3 = n1*n2;
System.out.println(n3);
System.out.println("----------------------------");
int x1 = 10;
int x2 = 3;
int x3 = x1/x2;
System.out.println(x3);
x3 = x2/x1;
System.out.println(x3);
long x4 = x2/10l;
System.out.println(x4);
double x5 = 2.5;
long x6 = 5;
double x7 = x6/x5;
System.out.println(x7);
double x8 = 3.1415926;
int x9 = 2;
double x10 = x8/x9;
System.out.println(x10);
System.out.println("----------------------------");
int y1 = 3;
int y2 = 10;
int y3 = y1%y2;
System.out.println(y3);//3
y3 = y2%y1;
System.out.println(y3);//1
float y4 = 2.7f;
float y5 = y4%y1;
System.out.println(y5);//2.7
y5 = y1%y4;
System.out.println(y5);
System.out.println("----------------------------");
/*
*/
int z = 1;
int r = ++z;
System.out.println(z+" "+r);
int q = 1;
int v = ++q;
System.out.println(v);//2
q = 1;
v = q++;
System.out.println(v);//1
q = 10;
v = --q;
System.out.println(v);//9
q = 100;
v = q--;
System.out.println(v);//100
int w = 10;
int p = 5;
w = w++ + ++w + p-- + --p - w;
// 10 + 12 + 5 + 3 - 12 = 18
//w 11 12
System.out.println(w);//18
System.out.println(p);//3
System.out.println("---------------------");
int b01 = -3;
int b02 = -2;
int b03 = b01/b02;
System.out.println(b03);
int b04 = b01%b02;
System.out.println(b04);
}
}
运算符之关系运算符:
<,>,<=,>=,==,!=
用来判断条件是否成立,一般都用在分支结构或循环结构中
运算符之逻辑运算符:
当有多个条件进行判断是否成立时,需要使用逻辑运算符
即 &&, ||, !
数学: 1<a<5
JAVA语言: a>1&&a<5
&&: 用于判断多个条件是否同时成立
一假则假
||: 用于判断是否存在条件成立
一真则真
!: 用于条件的否定
又称之为:短路运算符
当使用&&和||运算符时,第一个条件能确定结果时,
不执行后面的条件,这种现象我们视之为短路现象
单个符号的 &(与) |(或)没有短路现象——一般不使用
运算符之赋值运算符 :
=,赋值运算,给前面的变量赋值
扩展赋值运算符
+=,-=,*=,/=,%=
a+=b –> a = a+b;
其余的同理
运算符之字符串拼接符号:
+
+前后只要有一个字符串类型就做拼接操作
结果是字符串类型
运算符之三目运算符(三元运算符):
关系运算和逻辑运算统称为条件运算
变量类型名 变量 = 条件表达式(判断)? 值1(true):值2(false)
变量类型:需要与值1或值2类型相同
而值1,值2类型要么相同
要么可以相互转化
例:
int a = 1;
int b = 2;
int c = a>b?a:b;
System.out.println("c:"+c);//c:2
int min = a<b?a:b;
System.out.println("min:"+min);//min:1
嵌套: 条件表达式?(三目运算):(三目运算)