java语言用文字描述如下运算符的作用
一、当前实操名称
文字描述如下运算符的作用以及附加上测试代码。
1.1、算术运算符(+-*/%,自增自减)
1.2、赋值扩展运算符
1.3、关系运算符(<,>,<=,>=,!=,==)
1.4、逻辑运算符(&&,||,!)
1.5、位运算符(&,|,^)
1.6、条件运算符
1.7、字符串连接符
二、心得与主要bug反馈
2.1、对变量有了详细的了解;
2.2、深刻的认识了几种运算情况;
2.3、对运算符有了熟练的应用;
2.4、主要bug及异常在代码中具体介绍;
三、项目
3.1、作者:胡超凡;
3.2、用时:2h;
3.3、项目环境:
a、JDK版本:1.8.0_181;
b、IDE版本:eclipse Oxygen.3a Release (4.7.3a)
c、系统:win10
d、项目所用知识点:主要是一个类的main方法中进行相关测试;
3.4、项目
3.4.1、文字描述运算符的作用
3.4.1.1、算术运算符(+-*/%,自增自减)
+-*/%:操作数相加,相减,相乘,相除,相除取余数;
++、--:操作数,自己加1,自己减1;
3.4.1.2、赋值扩展运算符
3.4.1.3、关系运算符(<,>,<=,>=,!=,==)
关系运算符用来进行比较运算,结果是布尔值:true/false;
3.4.1.4、逻辑运算符(&&,||,!)
3.4.1.5、位运算符(&,|,^)
3.4.1.6、条件运算符
语法格式:x?y:z;
其中 x 为 boolean 类型表达式,先计算 x 的值,若为true,则整个运算的结果为表达式 y 的值,否则整个运算结果为表达式 z 的值。
3.4.1.7、字符串连接符
“+”运算符两侧的操作数中只要有一个是字符串(String)类型,系统会自动将另一个操作数转换为字符串然后再进行连接。
3.4.2、项目代码
3.4.2.1-3.4.2.2、算术运算符(+-*/%,自增自减) 赋值扩展运算符
/**
- 测试算术运算符、赋值和赋值扩展运算符
- @author huchaofan
*/
public class TestOperator01 {
public static void main(String[] args) {
byte a=1;//特例,int直接付给byte;
int b=2;
long b2=3;
//byte c=a+b;//Type mismatch: cannot convert from int to byte
//int c2=b2+b;//Type mismatch: cannot convert from long to int
//float f1=3.14;//默认double,Type mismatch: cannot convert from double to float
float f1=3.14F;
double d=b+b2;//测试加法;
float d1=b-b2;//测试减法;
long d2=b*b2;//测试乘法;
int d3=a/b;//测试除法;1/2,为0.5,int类型去掉小数,变为0;
System.out.println("##########算数运算符测试###########");
System.out.println("加法测试:b+b2="+d);
System.out.println("减法测试:b-b2="+d1);
System.out.println("乘法测试:b*b2="+d2);
System.out.println("除法测试:a/b="+d3);
//float e=f1+6.2;//默认double,Type mismatch: cannot convert from double to float
double g=f1+6.2;//如果两个操作数有一个为double,则结果为double
float e=f1+6.2F;//只有两个操作数都是float,则结果才为float
System.out.println("浮点运算测试:f1+6.2F="+e);
System.out.println("###############取模测试####################");
System.out.println(-9%5);//-4,取模符号与左边操作数一样;
System.out.println(9%-5);//4
//测试自增和自减
System.out.println("############自增和自减测试###########");
int m=3;
int n=m+++3;//先算n=3+3=6;再m++,即m=4
System.out.println("m="+m+"\tn="+n);
m=3;
n=++m+3;//先算++m,m=4,再n=4+3=7
System.out.println("m="+m+"\tn="+n);
//测试赋值和赋值扩展运算符
System.out.println("##########赋值和赋值扩展运算符测试###########");
int x=3;//赋值
int y=4;
x+=y;//相当于x=x+y
System.out.println("+=测试:"+"x="+x+"\ty="+y);
x=3;
x-=y;//相当于x=x-y
System.out.println("-=测试:"+"x="+x+"\ty="+y);
x=3;
x*=y+3;//相当于x=x*(y+3)
System.out.println("*=测试:"+"x="+x+"\ty="+y);
x=3;
x/=y-3;//相当于x=x/(y-3)
System.out.println("/=测试:"+"x="+x+"\ty="+y);
x=3;
x%=y-2;//相当于x=x%(y-2)
System.out.println("%=测试:"+"x="+x+"\ty="+y);
}
}
3.4.2.3、关系运算符(<,>,<=,>=,!=,==)
/**
- 测试关系运算符
- @author huchaofan
*/
public class TestOperator02 {
public static void main(String[] args) {
int a=3;
System.out.println("############测试关系运算符############");
System.out.println(a3);//测试
System.out.println(a!=3);//测试!=
System.out.println(a<5);//测试<
System.out.println(a>5);//测试>
System.out.println("#####################");
char b='a';
char b2='c';
System.out.println(b);//a字符
System.out.println((int)b);//97,强制转为int类型
System.out.println(0+b);//2.没有long时,结果为int。即使操作数全为short,byte,char,int,结果也是int
System.out.println(0+b2);//99
System.out.println(b<b2);//true
System.out.println(b+b2);//char+char类型,自动转为int;
}
}
3.4.2.4、逻辑运算符(&&,||,!)
/**
- 测试逻辑运算符
- @author huchaofan
*/
public class TestOperator03 {
public static void main(String[] args) {
boolean b1=true;
boolean b2=false;
System.out.println(b1&b2);//测试与
System.out.println(b1|b2);//测试或
System.out.println(b1^b2);//测试异或
System.out.println(!b2);//测试非
//短路
System.out.println("###########测试短路###########");
//int c=3/0;
/*异常
* Exception in thread "main" java.lang.ArithmeticException: / by zero
* at TestOperator03.main(TestOperator03.java:18)
* 线程“main”java.lang.ArithmeticException:异常,/ by zero
*/
boolean b3=1>2&&2<(3/0);//短路与,第一个操作数的值为false,则不需要再计算后面的操作数;
System.out.println(b3);
boolean b4=1<2||2<(3/0);//短路或,第一个操作数的值为true,则不需要再计算后面的操作数;
System.out.println(b4);
}
}
3.4.2.5、位运算符(&,|,^)
/**
- 位运算符
- @author huchaofan
*/
public class TestOperator04 {
public static void main(String[] args) {
int a=3;
int b=4;
System.out.println(a&b);//测试按位与,3:0011;4:0100,按位与后为:0000,即为0;
System.out.println(a|b);//测试按位或,3:0011;4:0100,按位或后为:0111,即为7;
System.out.println(a^b);//测试按位异或,3:0011;4:0100,按位异或后为:0111,即为7;
System.out.println(~a);//测试按位非,3:0011,按位非后为:1100,即为12;
/*异常
* System.out.println(a~b);
* Exception in thread “main” java.lang.Error: Unresolved compilation problem:
* Syntax error on token “a”, AssignmentOperator expected after this token
* 线程“主”JavaLang.Error中的异常:未解决的编译问题:
*/
//移位
System.out.println("##############测试移位#############");
int c=3<<2;
System.out.println("c="+c);//3*2*2=12
System.out.println(12>>2);//12/2/2=3
System.out.println(12>>3);//1100,右移3位,变为0001,即为1;
int d=28>>3;
System.out.println("d="+d);//28为:0001 1100,右移3位,变成0000 0011,即为3;
int e=-28>>3;
System.out.println("e="+e);
/*
* 计算机中,数值一律用补码表示和存储的,正数的补码与原码相同,负数的补码为“其反码+1”
* 反码,顾名思义就是取反,对于正数来说,反码与原码相同;对于负数来说,反码为原码的各位取反(符号位除外)
* 向右移动三位后:移动的是补码
*/
}
}
3.4.2.6、条件运算符
/**
- 测试条件运算符(三元运算符)
- @author huchaofan
*/
public class TestOperator06 {
public static void main(String[] args) {
System.out.println("###########测试条件运算符############");
int score = 80;
int x=-100;
String type = score<60?“不及格”:“及格”;
System.out.println(type);
if(score<60) {
System.out.println("不及格");
}else {
System.out.println("及格");
}
System.out.println(x>0?1:(x==0?0:-1));//嵌套
}
}
3.4.2.7、字符串连接符
/**
- 测试字符串连接符
- @author huchaofan
*/
public class TestOperator05 {
public static void main(String[] args) {
System.out.println("##########测试字符串连接符###########");
String a=“3”;
int b=4;
int c=5;
System.out.println(a+b);//34
System.out.println(b+c);//9,+两侧为数字,为加法运算
System.out.println(a+b+c);//345,从左向右运算;
System.out.println(b+c+a);//93
System.out.println(b+c+a+b+c);//9345
System.out.println("#####################");
char d='a';
System.out.println(d);
System.out.println(d+4);//97+4=101,char+int=int;
}
}