您的位置:首页 > 编程语言 > Java开发

java中的运算符的分类及运用

2015-11-18 17:03 295 查看
定义:运算符指明对操作数的运算方式。
分类:运算符按照其要求的操作数数目来分,可以有单目运算符双目运算符和三目运算
符,它们分别对应于1个、2个、3个操作数。运算符按其功能来分,有算术运算符、赋
值运算符、关系运算符逻辑运算符位运算符和其他运算符。
A.算术运算符:java中提供了两个类型的算术运算符,一个是单目运算符,另
一个是双目运算符。

1.单目运算符:+(正),-(负),++(自增),--(自减)

++ (+,-这里不讲解,下面讲解)

++分为两种情况,一种是数据在++前面,一种是数据在++后面,他们是有区别的。
例如: public class OC{
public static void main(String[] args){
{
int i=2;
int a=i++;
System.out.println(a);//这里结果为2;
}
{
int i=2;
int a=++i;
System.out.println(a);//这里结果为3;
}
}
}
从上面这段代码就可以知道n++是先用在加,++n是先加在用。

--:同上面的++是一样的这里就不做演示。

2.双目运算符:+(加),-(减),*(乘),/(除),%(求余)

+:+即是双目运算符也是单目运算符,单目运算符的时候表示正数,双目运算符的
时候表示两个数相加求和,但是还有一种意思是字符串的拼接。

例如:int
a=1;
int b=2;
System.out.println(a+b);//这里输出的结果是3;这里是相加求和
System.out.println(a+””+b)//这里输出的结果是1
2,这里就是拼接
b.-,*,/,%这些符号就只有做数据的运算,也就是数学里面的运算作用。

{
int ss=1;
ss=ss++;
System.out.println(ss);
int
i = 1;
i
+= ss;
System.out.println(i);
//输出结果为: 1 2 ;
//ss依然是ss,java编译器的算法就这样。。。ss不是ss++;
//理论上好像是ss 赋值为ss然后 ss再加加
于是ss等于ss++!但是 ss依然为ss!
}
System.out.println(a-b);//这里的结果为7。
System.out.println(a*b);//这里的结果为30。
System.out.println(a/b);//这里的结果为3。
System.out.println(a%3);这里的结果为1。
char类型的数据是可以参与数据运算的。
B.赋值运算符(=,+=,-=,/=,*=,%=,&=,|=,^=,<<=,>>=,>>>=)
例如:int a=10;
int
b;
b=a;
System.out.println(b);这里结果为10,这里就不用解释了吧。
b+=a;
System.out.println(b);这里结果为20,意思是b=b+a;所以这里结果为20。
b-=a;
System.out.println(b);这里结果为0,意思是b=b-a;所以这里结果为0。
b/=a;
System.out.println(b);这里结果为1,意思是b=b/a;
b*=a;
System.out.println(b);这里结果为100,意思是b=b*a;
b%=a;
System.out.println(b);这里结果为0,意思是b=b%a;
b&=a;
System.out.println(b);这里结果为10,(这里个人理解为b=b并且b=a,所以b=10,b=b&a);
b|=a;
System.out.println(b);这里结果为10,(这里个人理解为b=b或者b=a,所以b=10,b=b|a);
b^=a;
System.out.println(b);这里结果为0,意思是b=b^a;(对于^这个符号我不大理解,问老师)
b<<=a;
System.out.println(b);这里结果我1024,(我也不理解,问老师)
b>>=a;
System.out.println(b);这里结果我0,(我也不理解,问老师)
b>>>=a;
System.out.println(b);这里结果我0,(我也不理解,问老师)
C.运算符(||,&&,!,^,&,|)
a.与运算符用符号“&”,其使用规律如下:
两个操作数中位都为1,结果才为1,否则结果为0,例如下面的程序段。
public class data13 {
public static void main(String[] args) {
int a=129;
int b=128;
System.out.println("a和b与的结果是:"+(a&b));
}

}
运行结果a和b与的结果是:128 下面分析这个程序:“a”的值是129, 转换成二进制就是10000001,而“b”的值是128,转换成二进制就是1 0000000。根据与运算符的运算规律,只有两个位都是1,结果才是1,可以 知道结果就是10000000,即128。
b.或运算符用符号“|”,其使用规律如下:
两个位只要有一个为1,那么结果就是1,否则就为0,下面看一个简单的例子。
public class data14{
public static void main(String[] args) {
int a=129;
int b=128;
System.out.println("a 和b或的结果是:"+(a|b));
}

}

运行结果a和b或的结果是:129 下面分析这个程序段:a的值是129, 转换成二进制就是10000001,而b的值是128,转换成二进制就是10000000,根据或运算符的运算规律,两个位满足其中有一个或两个是1,结果就为1, 可以知道结果就是10000001,即129。
c.非运算符用符号“~”表示,其运算规律如下:
如果位为0,结果是1,如果位为1,结果是0,下面看一个简单例子。
public class data15 {
public static void main(String[] args) {
int a=2;
System.out.println("a 非的结果是:"+(~a));
}
}
d.异或运算符是用符号“^”表示的,其运算规律是:
两个操作数的位中,相同则结果为0,不同则结果为1。下面看一个简单的例子。
public class data16{
public static void main(String[] args) {
int a=15;
int b=2;
System.out.println("a与 b异或的结果是:"+(a^b));
}
}
运行结果a与 b异或的结果是:13分析上面的程序段:a的值是15,转换成二进制为1111,而b的值是2,转换成二进制为0010,根据异或的运算规律,可以得出其结果为1101即13。
e.短路
条件操作(&&,||)

当使用逻辑操作符时,我们会遇到一种“短路”现象。即一旦能够明确无误地确定整个表达式的值,就不会再计算表达式剩余的部分了。因此,整个逻辑表达式靠后的部分有可能不会被运算。

System.out.println(false||true);

//输出true,||不存在短路现象,表达式中有任意一部分为true就返回true,所以||逻辑操作符必须要将整个表达式运算完毕才能得出结果。

System.out.println(false && true);

//输出false。表达式中有任意一部分为false,整个表达式就返回false。不必将整个表达式运算完毕。
以下是范例:
public class Demo2{
public static void main(String[] args){
boolean
b1 = true;
boolean
b2 = false;

System.out.println(b1
& b2);//这里结果是false,
System.out.println(b1
| b2);//这里结果为ture,

String
str = null;
//System.out.println(str.length());这里会报空指针异常

int
i = 8;

//System.out.println(b2
& i == str.length());
System.out.println(b2
&& i == str.length());//这里结果为 false。

System.out.println(b1
&& i == str.length());//这里会报空 指针异常。

}

}

public class Demo3{

public static void main(String[] args){
Scanner input = new Scanner(System.in);

System.out.println("input a number:");
int
i = input.nextInt();
//这里结果为11,以二进制(基数2)无符号整数形式返回一个整数 参数的字符串表示形式。
System.out.println("Binary:"+Integer.toBinaryString(i));
//这里结果为3,以八进制(基数8)无符号整数形式返回一个整数参数的字符串表示形式。
System.out.println("Octal:"
+ Integer.toOctalString(i));
//这里结果为3,以十六进制(基数16)无符号整数形式返回一个 整数参数的字符串表示形式。
System.out.println("Hex: " + Integer.toHexString(i));

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: