深入讲解Java中的流程控制与运算符

Java流程控制
Java流程控制的语法与 C/C++ 类似,也有 if...else、while、do...while、for、switch...case等,这里不再讲述具体语法,仅举例说明。

输出九九乘法表(右上三角):

public class Demo {
  public static void main(String[] args){
    int i, j;
    for(i=1; i<=9; i++){
      for(j=1; j<=9; j++){
        if(j<i){
          //打印八个空格,去掉空格就是左上三角形
          System.out.print("    ");
        }else{
          System.out.printf("%d*%d=%2d ", i, j, i*j);
        }
      }
      System.out.print("\n");
    }
  }
}

运行结果:

1*1= 1 1*2= 2 1*3= 3 1*4= 4 1*5= 5 1*6= 6 1*7= 7 1*8= 8 1*9= 9
    2*2= 4 2*3= 6 2*4= 8 2*5=10 2*6=12 2*7=14 2*8=16 2*9=18
        3*3= 9 3*4=12 3*5=15 3*6=18 3*7=21 3*8=24 3*9=27
            4*4=16 4*5=20 4*6=24 4*7=28 4*8=32 4*9=36
                5*5=25 5*6=30 5*7=35 5*8=40 5*9=45
                    6*6=36 6*7=42 6*8=48 6*9=54
                        7*7=49 7*8=56 7*9=63
                            8*8=64 8*9=72
                                9*9=81

Java中也有 printf() 语句,用来控制输出格式,不过实际开发中不常用,因为输出到控制台的数据很少要求严格的格式,一般 println() 和 print() 就够了。

println() 输出内容后换行,print() 不换行。

又如,求某一年的某一月有多少天:

import java.util.*;
public class Demo {
  public static void main(String[] args){
    int days = 0;
    // 获取用户输入
    Scanner sc = new Scanner(System.in);
    System.out.print("输入年份:");
    int year = sc.nextInt();
    System.out.print("输入月份:");
    int month = sc.nextInt();

    switch(month){
      case 1:
      case 3:
      case 5:
      case 7:
      case 8:
      case 10:
      case 12:
        days=31;
        break;
      case 4:
      case 6:
      case 9:
      case 11:
        days=30;
        break;
      case 2:
        // 判断闰年
        if(year%4==0 && year%100!=0 || year%400==0)
          days=29;
        else
          days=28;
        break;
      default:
        System.out.println("月份输入错误!");
        System.exit(0); // 强制结束程序
    }
    System.out.printf("天数:%d\n", days);
  }
}

运行结果:

输入年份:2014
输入月份:02
天数:28

Java中没有像C语言中的scanf()语句,从控制台获取输入有点麻烦,我推荐使用 Scanner 类,具体语法请大家自行查看API。

Java运算符
Java中的运算符和C/C++相差无几。
数学运算符

数学运算,结果为一个数值。见下表:

关系运算符

关系运算符,结果为一个布尔值。见下表:

位运算符

位运算符对整数的二进制形式逐位进行逻辑运算,得到一个整数。见下表:

条件运算符

Java中也有一个条件运算符(三目运算符):

  condition ? x1 : x2

condition为一个boolean值。根据condition,取x1或x2的值。

下面是关于运算符的一个综合举例:

public class Demo {
  public static void main(String[] args){
    int a=10;
    int b=10;

    int x=10;
    int y=21;
    int z=10;

    System.out.println("后自加 a=" + (a++));
    System.out.println("a的值 a=" + a);
    System.out.println("前自加 b=" + (++b));

    System.out.println("---------------------");
    System.out.println("说 x>y,对吗?" + (x>y));
    System.out.println("认为 x>y 并且 x<y,对吗?" + ( (x>y) && (x<y) ));
    System.out.println("认为 x>=y 或者 x==y,对吗?" + ( (x>=y) || (x==y) ));
    System.out.println("认为 x<y 或者 x=z,对吗?" + ( (x<y) || (x==z) ));
    System.out.println("---------------------");
    System.out.println("a&x 的结果是:" + (a&x));
    System.out.println("a|x 的结果是:" + (a|x));
    System.out.println("y^z 的结果是:" + (y^z));

    System.out.println("---------------------");
    System.out.println("a 左移2位的结果是:" + (a<<2));
    System.out.println("y 右移3位的结果是:" + (y>>3));
  }
}

运行结果:

后自加 a=10
a的值 a=11
前自加 b=11
---------------------
说 x>y,对吗?false
认为 x>y 并且 x<y,对吗?false
认为 x>=y 或者 x==y,对吗?false
认为 x<y 或者 x=z,对吗?true
---------------------
a&x 的结果是:10
a|x 的结果是:11
y^z 的结果是:31
---------------------
a 左移2位的结果是:44
y 右移3位的结果是:2
(0)

相关推荐

  • Java语法基础之运算符学习笔记分享

    一.运算符 运算符包括下面几种: 算术运算符赋值运算符比较运算符逻辑运算符位运算符三目运算符 最不常用的是位运算符,但也是最接近计算机底层的. 1.算术运算符 (1)+的几种用法:加法.正数.字符串连接符 (2)除法的时候要注意一个问题:整数相除,只能得到整数.要想得到小数,可以将数据自身*1.0,即将数据自身先转换为浮点型. 2.赋值运算符 符号 = += -= *= /= %= 注:=为基本的赋值运算符,其他的为扩展的赋值运算符 面试题: (1)short s=1, s = s+1; (2)

  • java中关于移位运算符的demo与总结(推荐)

    首先,移位运算符有三种,其操作类型只支持:byte / short / char / int和long五种. << 左移运算符,表示将左边的操作数的二进制数据向左移动*位,移动后空缺位以0填充,多余位舍弃.(等同于乘2的n次方) >> 右移运算符,二进制数据向右移动*位,就在其二进制数据后抹掉几位?(这里还不错定,但个人理解是这样的)(等同于除2的n次方) >>> 无符号右移运算符,不管移动前最高位是0还是1,右移后左侧产生的空位部分都以0来填充. 下面我们借一个

  • java代码之谜运算符篇

    从最简单的运算符加号(+)说起,加号(+)是个二元运算符--也就是说,加号只把两个数联接起来,从来不把第三个或者更多的联接起来. 因此,"1加2加3" 在计算机中被表述为: (1 + 2) + 3 // a或者 1 + (2 + 3) // b虽然我们通常写做 1 + 2 + 3,但是并不意味这它和我们数学中的 1+2+3 是等价的. 那么数学中的 1+2+3 到底表示的是 a 呢,还是 b 呢? 如果计算机的求值是左结合的,那么此表达式等价于第一种a: 如果是右结合的,那么此表达式等

  • Java的super关键字与instanceof运算符使用方法

    Java super关键字 super 关键字与 this 类似,this 用来表示当前类的实例,super 用来表示父类. super 可以用在子类中,通过点号(.)来获取父类的成员变量和方法.super 也可以用在子类的子类中,Java 能自动向上层类追溯. 父类行为被调用,就好象该行为是本类的行为一样,而且调用行为不必发生在父类中,它能自动向上层类追溯. super 关键字的功能: 调用父类中声明为 private 的变量. 点取已经覆盖了的方法. 作为方法名表示父类构造方法. 调用隐藏变

  • 整理Java编程中常用的基本描述符与运算符

    描述符 描述符是你添加到那些定义中来改变他们的意思的关键词.Java 语言有很多描述符,包括以下这些: 可访问描述符 不可访问描述符 应用描述符,你可以在类.方法.变量中加入相应关键字.描述符要先于声明,如下面的例子所示(斜体): public class className { // ... } private boolean myFlag; static final double weeks = 9.5; protected static final int BOXWIDTH = 42; p

  • Java instanceof 运算符的使用方法

    用法: (类型变量 instanceof 类|接口) 作用: instanceof 操作符用于判断前面的对象是否是后面的类,或者其子类.实现类的实例.如果是则返回true 否则就返回false. 注意: · instanceof前面的操作数的编译时类型要么与后面的类相同,要么与后面的类具有父子继承关系否则会引发编译错误. 一个简单的例子: 复制代码 代码如下: /** * instanceof 运算符 * @author Administrator * */ public class TestI

  • Java利用条件运算符的嵌套来完成学习成绩的划分

    题目:利用条件运算符的嵌套来完成此题:学习成绩> =90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示. 程序分析:程序分析:(a> b)?a:b这是条件运算符的基本例子. 程序设计: import javax.swing.*; public class ex5 { public static void main(String[] args){ String str=""; str=JOptionPane.showInputDialog("请输

  • Java用三元运算符判断奇数和偶数的简单实现

    创建一个类,在该类的主方法中创建标准输入流的扫描器对象,提示用户输入一个整数,并通过扫描器的方法来接受这个整数,然后通过三元运算符判断该数字与2的余数,如果余数为0,说明其是偶数,否则是奇数. 复制代码 代码如下: import java.util.Scanner;public class ParityCheck {    public static void main(String[] args){        System.out.println("请输入一个整数:");    

  • Java 运算符 动力节点Java学院整理

    Java的运算符,分为四类: 算数运算符.关系运算符.逻辑运算符.位运算符. 算数运算符(9):+ - * / % ++ -- 关系运算符(6):== != > >= < <= 逻辑运算符(6):&& || ! ^ & | 位运算符(7):& | ~ ^ >> << >>> Java基本数据类型: 数值类型: 整型:byte.short.int.long 非整型:double.float 非数值类型:char

  • Java中使用异或运算符实现加密字符串

    通过异或运算符号与一个指定的值进行异或运算,从而改变字符串每个字符的值,这样就可以得到加密后的字符串. import java.util.Scanner; public class Encypt { public static void main(String args[]){ Scanner scan = new Scanner(System.in); System.out.println("请输入一个英文字符串或解密字符串:"); String password = scan.ne

  • Java运算符>、>>、>>>三者的区别

    >表示大于,如:if(a>b)...结果是boolean类型 >>表示带符号右移,如:int i=15; i>>2的结果是3,移出的部分将被抛弃. 转为二进制的形式可能更好理解,0000 1111(15)右移2位的结果是0000 0011(3),0001 1010(18)右移3位的结果是0000 0011(3). >>>无符号右移: 按二进制形式把所有的数字向右移动对应巍峨位数,低位移出(舍弃),高位的空位补零.对于正数来说和带符号右移相同,对于负数来

  • Java中的位运算符、移位运算详细介绍

    一.位运算 Java中有4个位运算,它们的运算规则如下: (1)按位与 (&) :两位全为1,结果为1,否则为0: (2)按位或 (|) :两位有一个为1,结果为1,否则为0: (3)按位取反(~):0 变 1, 1变0: (4)按位异或(^):两位,如果相同,结果为0:如果不同,结果为1: 注意: (1)位运算中的 符号位(最高位)也跟着变; (2)位运算符与逻辑运算符(逻辑与&&.逻辑或||.逻辑非! )有点相似.但是,逻辑运算符只能操作boolean变量 (也就是左右两边的值

  • java中的移位运算符心得总结

    java中有三种移位运算符 <<      :     左移运算符,num << 1,相当于num乘以2 >>      :     右移运算符,num >> 1,相当于num除以2 >>>    :     无符号右移,忽略符号位,空位都以0补齐 下面来看看这些移位运算都是怎样使用的 复制代码 代码如下: /** *  */package com.b510.test; /** * @author Jone Hongten * @creat

随机推荐