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。取反操作~1001

<<:左移运算符,规则为,抛掉相应位数的高位,在对应的空位补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);//输出true

System.out.println(s1==s3);//输出false

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

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

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

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

!T1T1true,返回false,T1false,返回true

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

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

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

T1||T2:与双与类似,双或当T1true时,也会发生短路,直接返回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,打印结果却是23。因为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语法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值