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

分类:运算符按照其要求的操作数数目来分,可以有单目运算符双目运算符和三目运算             符,它们分别对应于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);
        //输出结果为:  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));
 
    }
 
}