Java语言入门教程(八):Java语言中的运算符与流程控制

不论使用何种语言,最终都是为了实现业务逻辑。在面向对象的编程语言中 ,业务逻辑都在方法中实现。因此,对于初学者来说,了解完成Java类方法体的 基本知识点是非常必要的。本文中,将介绍编写方法体必须了解的两个方面:运 算符,流程控制。

Java中的运算符根据其功能,可以分成4类。首先需要注意的是,Java中的运 算符是不能重载的。下面分别对4类运算符进行介绍。

1、 算术运算符:+,-,*,/,%,++,–

算术运算符是对基本数据类型进行运算的操作符,其中容易混淆的是/表示除 ,而%表示取余。另外需要注意的是++,–两个自加自减运算符的区别,如下程序 。

package com.csst.test;public class Test1 {    /**     * @param args     */    public static void main(String[] args) {       // TODO Auto-generated method stub       int i=0;       System.out.println(i++);       System.out.println(++i);       int j=0;       System.out.println(j--);       System.out.println(--j);    }}

++,–在变量后,是先取变量没有运算前的值,当作表达式的返回值,然后进 行运算。而++,–如果在变量前,是先对变量进行运算,然后将运算结果作为表 达式的返回值。需要注意的是,不管在前还是在后,对于参与运算的变量本身, 都是进行了一次加1或者减1的操作,没有区别,有区别的是返回值的值。

算术运算符都是针对基本数据类型进行运算的,只有+除外,可以使用+连 接两个字符串。如:

String s=”Hello”+” World”;//String的值是Hello World

2、 位运算符:&,|,^,~,<>,>>>

位运算符是针对二进制的数进行运算的操作符。与操作&的运算规则是两 个都是1才是1,或操作 | 的规则是一个是1就是1,异或 ^ 的规则是不同的是1 ,相同的为0。取反操作~是1变0,0变1。

<<:左移运算符,规则为,抛掉相应位数的高位,在对应的空位补0。 如:

0110 1001 << 2 =1010 0100

>>:有符号右移,规则为,抛掉相应位数的低位,如果移位前,最高 一位是0,则在对应的高位都补0,如果移位前,最高一位是1,则在对应的高位 都补1。

0110 1001 >> 2 =0001 1010

1110 1001 >> 2 =1101 1010

>>>:无符号右移,规则为,抛掉相应位数的低位,在对应的空位 补0:

0110 1001 >>> 2 =0001 1010

1110 1001 >>> 2 =0001 1010

注意:右移运算符分有符号和无符号,而左移没有这个区别。另外左移一位 相当于乘2,右移一位相当于除以2,速度比较快。

3、 比较运算符:>,=,<=,= =,!=

比较运算符是对基本数据类型的二进制进行比较。需要注意的是==表示比 较,=表示赋值。另外,==和!=可以对引用类型比较,比较的是虚地址。如:

String s1=”Hello”;String s2=”Hello”;String s3=new String(“Hello”);System.out.println(s1==s2);//输出trueSystem.out.println(s1==s3);//输出false

4、 逻辑运算符:&,|,^,!,&&,||

在Java语言中,逻辑值使用true和false进行表示,而1和0不表示逻辑,表示 二进制的数。比如:T1&T2,只有当T1和T2都是true时,才返回true

T1|T2:T1和T2只要有一个是true,返回值就是true。

T1^T2:T1和T2不同的时候,返回ftrue,相同的时候返回false。

!T1:T1是true,返回false,T1是false,返回true。

&&,||被称为双与及双或。

T1&&T2: 只有当T1和T2都是true时,才返回true。但是与单与& 不同的是,双&

会发生短路问题,如T1是false,则不会判断T2的值,直接返回false。而单 与不同,不论T1的值是true还是false,都会判断T2的值。

T1||T2:与双与类似,双或当T1为true时,也会发生短路,直接返回true, 而不判断T2。

在运算符这个知识点,有以下几点需要注意:

1、 记清楚每种运算符是针对什么类型进行运算。比如不能对两个字符串使 用>比较,因为>只比较基本类型。

2、 移位运算符中的右移分有无符号两种。

3、 比较运算符几乎都用来比较基本数据类型,只有==,!=除外。

4、 &&,||的短路问题。

了解了Java语言中常用的运算符后,再来看看方法的流程控制。程序的流程 无非3种:

1. 顺序的:顺序的流程就是一条一条语句执行。

2. 分支流程:分支是常见的流程,Java语言对分支控制和其他语言类似, 可以使用if,else以及switch case控制,如下代码:

package com.csst.test;public class Test2 {/** * @param args */public static void main(String[] args) {        // TODO Auto-generated method stub        int x=1;        int y=2;        if(x==1){               System.out.println("x==1");        }else{               System.out.println("x!=1");        }        switch(y){        case 1:System.out.println("1");        case 2:System.out.println("2");        case 3:System.out.println("3");break;        default:System.out.println("default");        }}}

该程序运行结果:

x==1

2

3

需要注意的是,if后的括号中,一定是一个布尔值的表达式。而switch的括 号中,可以是byte,short,int,char,enum(Java5以后有的新类型,枚举),其他 类型不可以。另外,y的值是2,打印结果却是2,3。因为case 2后边的语句没有 break来跳出,所以会继续运行,直到遇到第一个break为止。可以说,case后边 的开关值,只是决定了switch流程的入口,但是出口完全取决于break的出现位 置。

3、循环逻辑

循环逻辑即重复执行某段代码,Java中有三种循环,如for,while,do while, 如下:

package com.csst.test;public class Test3 {       /**        * @param args        */       public static void main(String[] args) {              // TODO Auto-generated method stub              for(int i=0;i<3;i++){                     System.out.println("i="+i);              }              int x=4;              while(x>0){                     System.out.println("x="+x);                     x--;              }              int y=5;              do{                     System.out.println("y="+y);                     y--;              }while(y>0);       }}

程序运行结果如下:

i=0

i=1

i=2

x=4

x=3

x=2

x=1

y=5

y=4

y=3

y=2

y=1

Java类中,可以在循环逻辑中,使用标签来标记循环,通过 break,continue关键字控制循环,以for循环为例。

package com.csst.test;public class Test4 {       /**        * @param args        */       public static void main(String[] args) {              // TODO Auto-generated method stub              loop1: for(int i=0;i<4;i++){              loop2:     for(int j=0;j<3;j++){                            if(i==j){                                   break;                            }                            if(i<j){                                   continue loop1;                            }                            System.out.println("i="+i+" j="+j);                     }              }       }

该类中,有两层for循环,分别以loop1,loop2进行标记,如 果break或者continue后没有出现标记,表示控制的是最近的一层循环,即 loop2,如果出现标记,则控制的是标记名所表示的循环。break表示中断循环, continue表示继续循环。

该类运行结果如下:

i=1 j=0

i=2 j=0

i=2 j=1

i=3 j=0

i=3 j=1

i=3 j=2

通过学习运算符和流程控制,初学者可以很容易开始写一些小程序,熟悉 Java语法。

为了一些琐事吵架,然后冷战,疯狂思念对方,最后和好。

Java语言入门教程(八):Java语言中的运算符与流程控制

相关文章:

你感兴趣的文章:

标签云: