1 运算符

1.1  比较运算符

  • 比较运算符的结果都是boolean类型,也即是要么是true,要么是false。
  • 比较运算符"=="不能写成"="。
  • >
package java003;

/**
 * 2017/8/31.
 * 说明:
 */
public class OperateDemo {
    public static void main(String[] args) {
        int a = 3;
        int b = 7;
        System.out.print(a>b);//false
    }
}
  • <
package java003;

/**
 * 2017/8/31.
 * 说明:
 */
public class OperateDemo {
    public static void main(String[] args) {
        int a = 3;
        int b = 7;
        System.out.print(a<b);//true
    }
}
  • ==
package java003;

/**
 * 2017/8/31.
 * 说明:
 */
public class OperateDemo {
    public static void main(String[] args) {
        int a = 3;
        int b = 7;
        System.out.print(a==b);//false
    }
}
  • !=
package java003;

/**
 * 2017/8/31.
 * 说明:
 */
public class OperateDemo {
    public static void main(String[] args) {
        int a = 3;
        int b = 7;
        System.out.print(a!=b);//true
    }
}
  • >=
package java003;

/**
 * 2017/8/31.
 * 说明:
 */
public class OperateDemo {
    public static void main(String[] args) {
        int a = 3;
        int b = 7;
        System.out.print(a>=b);//false
    }
}
  • <=
package java003;

/**
 * 2017/8/31.
 * 说明:
 */
public class OperateDemo {
    public static void main(String[] args) {
        int a = 3;
        int b = 7;
        System.out.print(a<=b);//true
    }
}
  • instanceof
package java003;

/**
 * 2017/8/31.
 * 说明:
 */
public class OperateDemo {
    public static void main(String[] args) {
       String str = "hello";
       System.out.print(str instanceof String);//true
    }
}

1.2 逻辑运算符

  • &(与)、|(或)、!(非)、&&(短路与)、||(短路或)、^(异或)
  • 逻辑运算符用于连接两个boolean类型的表达式。
  • 示例
package java003;

/**
 * 2017/8/31.
 * 说明:逻辑运算符
 */
public class OperateDemo2 {
    public static void main(String[] args) {
        int x = 3;
        System.out.print(x >= 2 && x <= 5);

    }
}
  • &的特点:
  • 如下图所示:表达式1&表达式2的结果。
表达式1 表达式2 结果
true false false
true true true
false false false
false true false
  • &运算的规律:一假全假,全真为真。
  • |的特点
  • 如下图所示:表达式1|表达式2的结果。
表达式1 表达式2 结果
true true true
true false true
false true true
false false false
  • |运算的规律:一真全真,全假才假。
  • 示例:
package java003;

/**
 * 2017/8/31.
 * 说明:逻辑运算符
 */
public class OperateDemo2 {
    public static void main(String[] args) {
       int x = 5;
       System.out.print(x > 5 || x <6);

    }
}
  • !的特点
  • 如下图所示:!表达式
表达式 结果
true false
false true
  • 非运算的规律:非假则真,非真则假。
  • 示例:
package java003;

/**
 * 2017/8/31.
 * 说明:逻辑运算符
 */
public class OperateDemo2 {
    public static void main(String[] args) {
       int x = 5;
       System.out.print(x == 5);
       System.out.print(!(x==5));

    }
}
  • ^
  • 如下图所示:表达式1^表达式2
表达式1 表达式2 结果
true true false
false true true
true false true
true true true
  • 我们知道,在计算机中一般0表示false,1表示true,当然,需要声明的是java中不是用0表示false,1表示true的,在java中,两者不等价。
  • 异或的规律:相同为0,不同为1。即异或左右两边的表达式,如果相同,就是false,不同,就是true。
package java003;

/**
 * 2017/8/31.
 * 说明:逻辑运算符
 */
public class OperateDemo2 {
    public static void main(String[] args) {
       System.out.print(true^true);//false
        System.out.print(true^false);//true
        System.out.print(false^true);//true
        System.out.print(false^false);//false

    }
}

1.3 位运算符

  • <<(左移)、>>(右移)、>>>(无符号右移)、&(与)、|(或)、^(异或)、~(反码)
  • 示例:6&3,int类型的数据在内存中是32位,此处为了方便,就没有画32位了。
package java003;

/**
 * 2017/8/31.
 * 说明:位运算符
 */
public class OperateDemo3 {
    public static void main(String[] args) {
        int a = 6 ;
        int b = 3;
        System.out.print( a & b);
    }
}

  • 示例:6 | 3
package java003;

/**
 * 2017/8/31.
 * 说明:位运算符
 */
public class OperateDemo3 {
    public static void main(String[] args) {
        int a = 6 ;
        int b = 3;
        System.out.print( a | b);
    }
}

  • 示例:6^3
package java003;

/**
 * 2017/8/31.
 * 说明:位运算符
 */
public class OperateDemo3 {
    public static void main(String[] args) {
        int a = 6 ;
        int b = 3;
        System.out.print( a ^ b);
    }
}

  • 示例:~3
package java003;

/**
 * 2017/8/31.
 * 说明:位运算符
 */
public class OperateDemo3 {
    public static void main(String[] args) {
        int b = 3;
        System.out.print( ~ b);//-4
    }
}
  • 示例:3<<2 ,左移一位,乘以2。
package java003;

/**
 * 2017/8/31.
 * 说明:位运算符
 */
public class OperateDemo3 {
    public static void main(String[] args) {
        int b = 3;
        System.out.print( 3 << 2);
    }
}

  • 示例:3 >>2 ,右移一位除以2,如果首个数字是0,则右移的时候,左边空位补0,;如果首个数字是1,则右移的时候,左边空位补1。因为在计算机中0表示正数,1表示负数。
package java003;

/**
 * 2017/8/31.
 * 说明:位运算符
 */
public class OperateDemo3 {
    public static void main(String[] args) {
        int b = 3;
        System.out.print( b >> 2);
    }
}

  • 示例:3 >>>2,不管首位是0还是1,在左边空位都是补0。
package java003;

/**
 * 2017/8/31.
 * 说明:位运算符
 */
public class OperateDemo3 {
    public static void main(String[] args) {
        int b = 3;
        System.out.print( b >>> 2);
    }
}
  • 面试题1:最有效率的方式算出2*8等于几?
package java003;

/**
 * 2017/8/31.
 * 说明:位运算符
 */
public class OperateDemo3 {
    public static void main(String[] args) {
       System.out.print(2 << 3);
    }
}
  • 面试题2:对两个整数变量的值进行交换(不需要第三变量)

    • 思路①,有弊端,如果两个整数的数值太大,会超出int范围,会引起精度问题。  
package java003;

/**
 * 2017/8/31.
 * 说明:位运算符
 */
public class OperateDemo3 {
    public static void main(String[] args) {
       int a = 2;
       int b = 3;
       a = a - b ;
       b = a + b;
       a = b - a;
       System.out.print("a="+a+",b="+b);

    }
}
    • 思路②  
package java003;

/**
 * 2017/8/31.
 * 说明:位运算符
 */
public class OperateDemo3 {
    public static void main(String[] args) {
       int a = 2;
       int b = 3;
       a = a ^ b;
       b = a ^ b ;
       a = a ^ b;
       System.out.print("a="+a+",b="+b);

    }
}

1.4 三元运算符

  • 格式:

    • (条件表达式) ? 表达式1 :表达式2;
    • 如果条件表达式为true,运算后的结果是表达式1,
    • 如果条件表达式为false,运算后的结果是表达式2。  
  • 示例:求两个整数的最大值。
package java003;

/**
 * 2017/9/1.
 * 说明:三元运算符
 */
public class OperateDemo4 {
    public static void main(String[] args) {
        int a = 3;
        int b = 10;
        int c = (a >= b) ? a : b;
        System.out.print("最大值是:"+c);
    }
}

2 程序的流程控制

  • 程序的流程控制分为:

    • 顺序结构
    • 分支结构
    • 循环结构  

2.1 顺序结构

  • 示例:
package java003;

import sun.applet.Main;

/**
 * 2017/9/1.
 * 说明:顺序结构
 */
public class OperateDemo5 {
    public static void main(String[] args) {
        System.out.print("哈哈");
        System.out.print("呵呵");
        System.out.print("嘻嘻");
        System.out.print("笨笨");
    }
}

2.2 分支语句

2.2.1 分支语句之if语句

  • 格式1
if(条件表达式){
     执行语句;
}

  • 格式2
if(条件表达式){
   执行语句1;
}else{
   执行语句2;
}

  • 格式3
if(条件表达式1){
   执行语句1;
}else if(条件表达式2){
  执行语句2;
}else{
  执行语句3;
}

  • 示例:
package java003;

/**
 * 2017/9/1.
 * 说明:if
 */
public class IfDemo1 {
    public static void main(String[] args) {
        int x = 3;
        if(x > 1){
            System.out.println("正确");
        }
        System.out.println("结束");

    }
}
  • 示例:
package java003;

/**
 * 2017/9/1.
 * 说明:if
 */
public class IfDemo2 {
    public static void main(String[] args) {
        char gender = '男';
        if(gender == '男'){
            System.out.println("性别为男");
        }else{
            System.out.println("性别为女");
        }

    }
}
  • 示例:
package java003;

/**
 * 2017/9/1.
 * 说明:if
 */
public class IfDemo3 {
    public static void main(String[] args) {
        int x = 3;
        if(x >1){
            System.out.print("a");
        }else if(x >2){
            System.out.print("b");
        }else if(x >3){
            System.out.print("c");
        }else{
            System.out.print("d");
        }

    }
}
  • 练习一:用户输入指定的数字,然后输出对应的星期几?
package java003;

/**
 * 2017/9/1.
 * 说明:
 */
public class IfTest1 {
    public static void main(String[] args) {
        int i = 5;
        if(i == 1){
            System.out.print("星期一");
        }else if(i == 2){
            System.out.print("星期二");
        }else if(i == 3){
            System.out.print("星期三");
        }else if(i == 4){
            System.out.print("星期四");
        }else if(i == 5){
            System.out.print("星期五");
        }else if(i == 6){
            System.out.print("星期六");
        }else if(i == 7){
            System.out.print("星期日");
        }else{
            System.out.print("输入错误");
        }

    }
}
  • 练习二:根据指定月份,输出对应的季节
package java003;

/**
 * 2017/9/1.
 * 说明:
 */
public class IfTest2 {
    public static void main(String[] args) {
        int month = 3;
        if((month == 3) || (month == 4 )|| (month == 5)){
            System.out.print("春季");
        }else if((month == 6) || (month == 7 )|| (month == 8)){
            System.out.print("夏季");
        }else if((month == 9) || (month == 10 )|| (month == 11)){
            System.out.print("秋季");
        }else if((month == 12) || (month == 1 )|| (month == 2)){
            System.out.print("冬季");
        }else{
            System.out.print("输入错误");
        }

    }
}

2.2.2 分支语句之switch语句

  • 格式
switch(表达式){
  case 值1:
      执行语句1;
  break;
  case 值2:
      执行语句2;
  break;
  ……
  default:
       执行语句n;
 break;
}    
    • 说明:在JDK7之前,表达式可以是byte、short、int和char类型。在JDK7之后,支持String类型。  
  • 示例:
package java003;

/**
 * 2017/9/1.
 * 说明:switch
 */
public class SwitchDemo {
    public static void main(String[] args) {
        int x = 3;
        switch (x){
            case 1:
                System.out.print("x=1");
                break;
            case 2:
                System.out.print("x=2");
                break;
            case 3:
                System.out.print("x=3");
                break;
            default:
                    System.out.print("呵呵");
                break;

        }

    }
}
  • 练习:根据数字输出对应的星期几?
package java003;

/**
 * 2017/9/1.
 * 说明:输入数字对应星期几?
 */
public class SwitchTest {
    public static void main(String[] args) {
       int day = 3;
       switch (day){
           case 1:
               System.out.print("星期一");
               break;
           case 2:
               System.out.print("星期二");
               break;
           case 3:
               System.out.print("星期三");
               break;
           case 4:
               System.out.print("星期四");
               break;
           case 5:
               System.out.print("星期五");
               break;
           case 6:
               System.out.print("星期六");
               break;
           case 7:
               System.out.print("星期七");
               break;
           default:
               System.out.print("输入错误");
               break;
       }

    }
}

2.2.3 if和switch的区别

  • if

    • ①对具体的值进行判断。
    • ②对区间进行判断。
    • ③对运算结果是boolean类型的表达式进行判断。  
  • switch

    • ①对具体的值进行判断。
    • ②值得个数是固定的。  

2.3 循环结构

2.3.1 while循环

  • 格式
while(条件表达式){
   执行语句;
}

  • 示例:
package java003;

/**
 * 2017/9/1.
 * 说明:while
 */
public class WhileDemo {
    public static void main(String[] args) {
        int x = 1 ;
        while(x <= 3){
            System.out.println("x="+x);
            x++;
        }

    }
}
package java003;

/**
 * 2017/9/1.
 * 说明:while
 */
public class WhileDemo {
    public static void main(String[] args) {
        int x = 1 ;
        while(x++ <= 3){
            System.out.println("x="+x);
        }

    }
}
  • 练习:获取1到10的和。
package java003;

/**
 * 2017/9/1.
 * 说明:计算从1到10的和
 */
public class WhileTest {
    public static void main(String[] args) {
        int sum = 0;
        int i = 1 ;
        while(i<= 10 ){
            sum += i;
            i++;
        }
        System.out.println("1到10的和是:"+sum);

    }
}

2.3.2 do-while循环

  • 格式
do{
    执行语句;

}while(条件表达式);

  • 示例:
package java003;

/**
 * 2017/9/1.
 * 说明:
 */
public class DoWhileDemo {
    public static void main(String[] args) {
        int x = 1;
        do{
            System.out.println("x="+x);
            x++;
        }while(x <= 3);

    }
}
  • do-while语句的特点:无论条件是否满足,循环体至少执行一次。

2.3.3 for循环

  • 格式
for(表达式1;表达式2;表达式3){
    执行语句;
}

  • for循环的执行流程

    • ①表达式1只读一次,判断表达式2,为真就执行循环体,然后再执行表达式3,接着继续判断表达式2,重复整个过程,直到表达式2不成立为止。
    • ②for和while循环是可以互换的,区别在于for为了循环而定义的变量在for循环结束后就在内存里释放,而while循环使用的变量在循环结束后还可以继续使用。
    • ③最简单的无限循环:while(true){},for(;;){},无限循环存在的原因是并不知道循环多少次,而是根据某些条件,来控制循环(常见的是if和break搭配)。  
  • 示例:
package java003;

/**
 * 2017/9/1.
 * 说明:
 */
public class ForDemo {
    public static void main(String[] args) {
        int sum = 0;
        for(int x = 1;x <= 10;x ++){
            sum += x;
        }
        System.out.println("sum="+sum);

    }
}

2.3.4 循环结构的应用场景

  • 当对某些代码执行很多次的时候,使用循环结构来完成。

Java运算符和流程控制的更多相关文章

  1. 三、 java运算符与流程控制

    赋值运算 赋值运算符:=,+=,-=,×=,/=,%= class fuzhiyunsuan{ public static void main(String[] args){ int i1 = 10; ...

  2. Java 中的运算符和流程控制

    Java 中的运算符和流程控制 + 面试题 算术运算符 Java 中的算术运算符,包括以下几种: **算术运算符** **名称** **举例** + 加法 1+2=3 - 减法 2-1=1 \* 乘法 ...

  3. Java中的流程控制(三)

    关于Java中的流程控制 关于Java中的流程控制 4.do while语句 do while语句的功能和while语句差不多,只不过它是在执行完第一次循环后才检测条件表达式的值,这意味着包含在大括号 ...

  4. Java中的流程控制(二)

    关于Java程序的流程控制(二) 关于Java程序的流程控制(二) 3.switch选择语句 switch语句用于将一个表达式的值同许多其他值比较,并按比较结果选择下面该执行哪些语句. switch( ...

  5. Java中的流程控制(一)

    程序的流程控制(一) 关于Java程序的流程控制(一) 从结构化程序设计角度出发,程序有三种结构: 顺序结构 选择结构 循环结构 1.顺序结构 就是程序从上到下一行行执行,中间没有判断和跳转. 2.i ...

  6. Java 基本语法---流程控制

    Java 基本语法---流程控制 0. 概述 三大流程控制语句:顺序.选择.循环. 选择结构: if 结构,if - else结构: 多重 if - else 语句 ; 嵌套 if - else 语句 ...

  7. Java基础-程序流程控制第二弹(循环结构)

    Java基础-程序流程控制第二弹(循环结构) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 流程控制有三种基本结构:顺序结构,选择结构和循环结构.一个脚本就是顺序结构执行的,选择结 ...

  8. Java基础-程序流程控制第一弹(分支结构/选择结构)

    Java基础-程序流程控制第一弹(分支结构/选择结构) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.if语句 1>.if语句的第一种格式 if(条件表达式){ 语句体: ...

  9. Linux基础-shell脚本知识整理和脚本编写----------变量、运算符、流程控制、函数、计划任务(发送邮件)

    I:知识整理:变量.运算符.流程控制.函数.计划任务 变量 系统变量:set:显示所有变量                env:环境变量 常用系统变量: path pwd lang home his ...

随机推荐

  1. 自定义Git之搭建Git服务器

    在远程仓库一节中,我们讲了远程仓库实际上和本地仓库没啥不同,纯粹为了7x24小时开机并交换大家的修改. GitHub就是一个免费托管开源代码的远程仓库.但是对于某些视源代码如生命的商业公司来说,既不想 ...

  2. Unity 使用TexturePackerGUI打包图集 Sprite 图片边上有线

    原来遇到的问题 保存下解决方法 修改Shape Padding图片间距的值为4

  3. [Poi2010]Monotonicity 2 线段树

    这道题考试的时候先打了个dfs暴力.又打了个O(n²)的动规.然后竟然心血来潮拍了一下..明明知道过不去的...然后水了50分(20个测试点这么多啊啊啊啊). 因为它已经提前给你如果长度为i时下一位的 ...

  4. JAVAOO零碎--内存叠加

    子类继承父类,父类的构造方法是不能被继承的,但是在new子类对象的时候,父类的构造方法是要执行构造的,构造好了过后再来构造子类特有的属性.这也被称作是内存叠加.

  5. css 定位功能position

    Static 定位 HTML元素的默认值,即没有定位,元素出现在正常的流中.静态定位的元素不会受到top, bottom, left, right影响. 相对定位Relative相对定位元素的定位是相 ...

  6. c++类与初始化,const

    --c++类与初始化,const --------------------------------2014/09/04 1. 类的定义(头文件.声明文件)看成类的外部接口,一般写成.h头文件. 2. ...

  7. Python 搭建环境踩过的那些坑

    实践出真知,学习 Python 第六天,准备开始尝试写一些 Python 的实例.之前学习过程主要是参照的 廖雪峰老师的教程.搭建环境的过程,被很多坑围绕着. 版本选择 版本选择 Python 3.5 ...

  8. ELK搭建指南(linux及Windows)

    当前公司系统使用mongodb记录日志,最近想对日志做可视化分析,尝试了exceptionless,感觉扩展性不高,所以尝试搭建elk,过程如下: ELK核心由三部分组成: Elasticsearch ...

  9. 你以为你真的会用编辑器----之Vim

    Vim ----------------------- Vim下载地址:http://www.vim.org/download.php -------------------------------- ...

  10. WeQuant交易策略—ATR

    ATR(真实波幅均值)策略 策略介绍 ATR(average true range,真实波幅均值),是用来衡量一段时间内价格的真实的平均波动范围,ATR不是一个领先指标,但是它测量最重要的市场参数之一 ...