分类: Java
2019-11-01 13:39:14
1.Java中简单的赋值运算符
最基本的赋值运算符是“=”,表示将右边表达式的值赋值给左边的变量。
扩展的赋值运算符
+=
-=
*=
/=
%=
都表示先将左边与右边做相应的运算,再赋值给左边。
注意:扩展的赋值运算符隐含了强制类型转换。
public class FuZhiYunSuanFu{
public static void main (String[]args){
//把10赋值给int类型的变量;
int i = 10;
System.out.println("i:"+i);//10
//+= 把左边和右边的数据做加法操作,结果赋值给左边
i += 20;
//i = i+20;
System.out.println("i:"+i);//30
//注意:扩展的赋值运算符底层隐含了强制类型转换
short s = 10;
s += 20;//s 为short类型 20为int类型
//s = (short)(s+20);
System.out.println("s:"+s);//30
}
}
2.关系运算符
关系运算符有6种关系,分别为小于、小于等于、大于、等于、大于等于、不等于。关系运算符的运算结果都是boolean类型,要么是true,要么是false。注意不要把“== ” 误写为“=”,“==”是关系运算(等于),“=”是赋值运算。
进行简单的代码检验:
public class GuanXiYunSuan{
public static void main(String[]args){
//定义变量
int i = 10;
int j = 20;
int k = 10;
//==
System.out.println(i == j);
System.out.println(i == k);
System.out.println("-----------");
//!=
System.out.println(i != j);
System.out.println(i != j);
System.out.println("-----------");
//>
System.out.println(i>j);
System.out.println(i>k);
System.out.println("---------");
//>=
System.out.println(i >= j);
System.out.println(i >= k);
System.out.println("----------");
//不小心吧==写成了=
//吧j的值赋值给了i,然后输出i
System.out.println(i=j);
}
}
3.逻辑运算符
3.1
逻辑运算符把各个运算的表达式连接起来,组成一个逻辑表达式,以判断程序中的表达式是否成立。
逻辑运算的结果肯定是boolean类型,要么是true要么是false。
& 逻辑与 并且的关系,只有表达式全部为true时,结果才为true
| 逻辑或 或者的关系,只有表达式全部为false是,结果才为false
^ 逻辑异或 a^b, a与b的结果不同,异或结果为true,相同为false
! 逻辑非 取反,!a与a的结果正好相反
代码演示
/*
逻辑运算符
*/
public class LuoJiYunSuanFu{
public static void main(String[] args){
//定义变量
int i = 10;
int j = 20;
int k =30;
//& 有false则fakse
System.out.println((i>j)&(i>k));// false&false
System.out.println((i
System.out.println((i>j)&(i
System.out.println((i
System.out.println("----------");
//| 有ture则ture
System.out.println((i>j)|(i>k));// false|false
System.out.println((i
System.out.println((i>j)|(i
System.out.println((i
System.out.println("-----------");
//^相同为false,不同为true
System.out.println((i>j)^(i>k));// false^false
System.out.println((i
System.out.println((i>j)^(i
System.out.println((i
System.out.println("-----------");
//!
System.out.println((i>j));// false
System.out.println(!(i>j));//!false
System.out.println(!!(i>j));//!!false
System.out.println(!!!(i>j));//!!!false
System.out.println("-----------");
}
}
3.2短路逻辑运算符
在逻辑与运算中,如果一个表达式结果为false,那么整个运算结果其实已经可以确定了,肯定为false,这时,其实没必要再判断其他参与运算的表达式了。同样在逻辑或运算中,如果一个表达式为true,那么结果也可以确定为true了。
&& 逻辑与 运算结果与&相同,但具有短路效果
一旦发现左边的表达式结果为false,右边的表达将不再参与运算
|| 逻辑或 运算结果与|相同,但具有短路效果
一旦发现左边的表达式结果为true,右边的表达将不再参与运算
在我们的代码书写中,逻辑与和或的运算,实际使用的就是短路的逻辑运算符。
代码展示:
/*
短逻辑运算符
*/
public class DuanLuoJiYunSuanFu{
public static void main(String[] args){
//定义变量
int i = 10;
int j = 20;
int k =30;
int h = 40;
//& 有false则fakse
System.out.println((i>j)&&(i>k));// false&false
System.out.println((i
System.out.println((i>j)&&(i
System.out.println((i
System.out.println("----------");
//| 有ture则ture
System.out.println((i>j)||(i>k));// false|false
System.out.println((i
System.out.println((i>j)||(i
System.out.println((i
System.out.println("-----------");
//&&和&
System.out.println((i++>50)&&(j++>50));
//System.out.println((j++>50)&(i++>50));
System.out.println("i:"+i);
System.out.println("j"+j);
//||和|
System.out.println((k++<100)||(h++>100));
System.out.println("k:"+k);
System.out.println("h:"+h);
}
}
4.三元运算符
三元运算符语法格式:
关系表达式 ? 表达式1 : 表达式2;
说明:问号前面的位置是判断的条件,判断结果为boolean型,为true时调用表达式1,为false时调用。
代码一:两个数比大小
public class SanYuanYunSuanFu{
public static void main(String[]args){
//定义两个变量
int a = 5;
int b = 3;
//获取两个数中的较小值
int min = a < b ? a : b;
//输出结果
System.out.println("min:"+min);
}
}
代码二 比较两位同学成绩:
/*
两位同学比较成绩
已知两位同学的语文成绩分别为80、100,请用程序实现判断两位同学成绩是否相等。
定义两个变量记录两位同学成绩
使用三元运算符判断成绩是否相同,相同为true,不同为false
输出结果
Ji
*/public class ChengJi{
public static void main(String[]args){
int chengJi1 = 80;
int chengJi2 = 100;
boolean b = chengJi1 == chengJi2 ? true:false;
System.out.println("b:"+b);
}
}
代码三:求三人当中最低的身高
/*
求三个人身高最低的
*/
public class SanGehesang{
public static void main(String[]args){
int height1 = 150;
int height2 = 210;
int height3 = 165;
//定义一个临时变量x
int x = height1
//
int y = x < height3? x:height3;
//输出结果
System.out.println("最低身高为:"+y);
}
}
5.算术运算符
5.1Java程序中,整数运算,结果只能得到整数,想得到小数,需要浮点数参与运算。
整数的除法运算得到的是商
整数的取余运算得到的是余数
算术运算符int类型除法遇到小数,可使用输出语句System.out.println(a*1.0/b);来实现结果出现小数;在java运算符中:整数相除只能得到整数。得到小数必须有浮点数的参与操作。
/*
算术运算符
*/
public class SuanSuYunSuan01 {
public static void main(String[] args) {
//定义两个变量
int a = 6;
int b = 4;
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);
//除法得到的是商,取余得到是余数
//整数相除只能得到整数,要想得到小数,必须有浮点数的参与
System.out.println(6*0.1/ 4);
}
}
5.2字符的“+”操作
用char类型的字符参与到算术运算的时候,会取字符在计算机底层对应的数值来进行计算。有几个连续的字符需要简单记忆一下:'A’对应的是65 从A到Z是连续的
‘a’对应的是97,从a到z是连续的。
‘0’对应的是48,从0到9是;连续的。
char类型的数据参与算术运算,会自动提升为int类型,使用的是字符在计算机底层中对应的十进制整数值。
记住三个字符对应的数值:
‘A’---- 65
‘a’---- 97
‘0’---- 48
不同的基本数据类型参与运算时,整个算术表达式的类型会自动进行提升,提升为参与运算的最高等级。
提升规则:
byte类型,short类型和char类型将被提升到int类型
整个表达式的类型自动提升到表达式中最高等级操作数相同的类型
等级顺序:byte,short,char > int > long > float > double
/*
字符的"+"操作
*/
public class OperatorDemo02 {
public static void main(String[] args) {
//定义两个变量
int i = 10;
char c = 'A'; //'A'的值是65
c = 'a'; //'a'的值是97
c = '0'; //'0'的值是48
System.out.println(i + c);
//char ch = i + c;
//char类型会被自动提升为int类型
int j = i + c;
System.out.println(j);
//int k = 10 + 13.14;
double d = 10 + 13.14;
}
}
5.3字符串的“+”操作
当“+”操作中出现字符串时,这个”+”是字符串连接符,而不是算术运算。在”+”操作中,如果出现了字符串,就是连接运算符,否则就是算术运算。当连续进行“+”操作时,从左到右逐个执行。在以后的输出语句中,我们可以使用字符串连接符使输出结果更加清晰。
/*
字符串的 + 操作
*/
public class ZiFuChuanCaoZuo{
public static void main(String[]args){
System.out.println("LOVE"+"JAVA");//LOVEJAVA
System.out.println("JAVA"+666);//JAVA666
System.out.println(666+"JAVA");//666JAVA
System.out.println("老铁"+6+66);//老铁666
System.out.println(6+66+"老铁");//72老铁
//定义两个变量 保存a b 的值
String a = "杰克马";
String b ="亿表人财";
//用字符串拼接成一句话
System.out.println(a+b);//杰克马亿表人财
String xingMing = "XX辉";
int age = 18;
System.out.println("我叫"+xingMing+",今年:"+age+"岁");
}
}
5.4自增自减运算符
自增(或自减自减)运算符作用是在运算结束前(前置自增自减运算符)或后(后置自增自减运算符)将变量的值加(或减)一。单独使用,前置和后置没有区别,结果一样。
参与运算:
前置,运算使用的是自增或自减后的值。(先增后用 ++a)
后置,运算使用的是自增或自减前的值。(先用后增 a++)
常见用法:单独使用
减减的代码演示:
/*
-- 运算符
结论:
++ -- 既可以放在变量前,也可以放在变量后;
如果单独使用,在前在后效果一样;
如果复合使用,在前和在后,对于要进行自增或自减的的这个变量来说没有影响,受影响的是其它变量;
当++或--在变量前时,--a;自己先减,让在和别人运算;
当++或-- 在变量后时,a--先和别人运算在自己减
注意:代码从上到下 逐行执行!!
*/
public class JianJian{
public static void main (String[] args){
int a = 5;
int b = --a-1;//--a a会先减1 然后再 4-1,所以 a=4,b=3
System.out.println("a:"+a);//4
System.out.println("b:"+b);//3
int c = a-- -1;//由于a--,此时a会先使用原来的值(4)和-1操作。所以 c=3;然后a在自己减1(--),所以a最终也会变为3
System.out.println("c:"+c);// 3
System.out.println("a:"+a);//3
//输出的时候,如果用++或--也算是符合运算
int d = 5;
int e = 5;
System.out.println("----------");
System.out.println("d:"+ d--);//5
System.out.println("e:"+ --e);//4
System.out.println("----------");
System.out.println("d:"+d);//4
System.out.println("e:"+e);//4
System.out.println();
}
}