关闭

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

163人阅读 评论(0) 收藏 举报
分类:

定义:运算符指明对操作数的运算方式。

分类:运算符按照其要求的操作数数目来分,可以有单目运算符双目运算符和三目运算             ,它们分别对应于1个、2个、3个操作数。运算符按其功能来分,有算术运算符        值运算符关系运算符逻辑运算符位运算符和其他运算符。

A.算术运算符:java中提供了两个类型的算术运算符,一个是单目运算符,另                  一个是双目运算符。

 

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

  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是先加在用。

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

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

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

  例如: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依然是ssjava编译器的算法就这样。。。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=10b=b&a)

b|=a;

System.out.println(b);这里结果为10(这里个人理解为b=b或者b=a,所以b=10b=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("ab与的结果是:"+(a&b));

}

 

}

运行结果ab与的结果是: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));

}

 

}

 

运行结果ab或的结果是: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,根据异或的运算规律,可以得出其结果为110113

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));

 

    }

 

}


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:16690次
    • 积分:927
    • 等级:
    • 排名:千里之外
    • 原创:86篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条