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 分支语句

  • 格式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("输入错误");
        }

    }
}

java 基础三的更多相关文章

  1. Java 基础三、接口与内部类

    1.   在Java程序语言中,接口是对类的一种描述.例如Arrays类中sort方法声明可以对对象进行排序,但前提是对象所属的类必须实现Comparable接口. public interface ...

  2. java基础(三)

    1.枚举类,使用enum定义的枚举类默认继承java.lang.Enum,而不是Object类.枚举类的所有实例必须在枚举类中显示列出,否则这个枚举类永远都不能产生实例.相关内容较多,需要后续继续跟进 ...

  3. java基础三种循环的使用及区别

    摘要:Java新人初学时自己的一些理解,大神们路过勿喷,有什么说的不对不足的地方希望能给予指点指点,如果觉得可以的话,希望可以点一个赞,嘿嘿,在这里先谢了.在这里我主要说的是初学时用到的Java三个循 ...

  4. Java基础(三)-final关键字分析

    今天来谈谈final关键字的作用, 虽然有很多博文关于final进行了很深的研究,但还是要去记录下谈谈自己的见解加深下印象.下面直接进入主题: 一.final关键字的作用 1.被final修饰的类不能 ...

  5. java基础(三)-----java的三大特性之多态

    面向对象编程有三大特性:封装.继承.多态. 封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据.对外界而已它的内部细节是隐藏的,暴露给外界的只是它的访问方法. 继承 ...

  6. java基础(三):反射、反序列化破解单列模式和解决方式

    单例模式指的是一个类只有一个对象,通过一些措施达到达到这个目的.但是反射和反序列化可以获得多个不同的对象. 先简单的认识一下单例模式 一:单例模式 通过私有构造器,声明一个该类的静态对象成员,提供一个 ...

  7. Java基础三(Scanner键盘输入、Random随机数、流程控制语句)

    1.引用类型变量的创建及使用2.流程控制语句之选择语句3.流程控制语句之循环语句4.循环高级 ###01创建引用类型变量公式 * A: 创建引用类型变量公式 * a: 我们要学的Scanner类是属于 ...

  8. java基础(三) 加强型for循环与Iterator

    引言   从JDK1.5起,增加了加强型的for循环语法,也被称为 "for-Each 循环".加强型循环在操作数组与集合方面增加了很大的方便性.那么,加强型for循环是怎么解析的 ...

  9. java基础 三 概念和java程序的结构.

    一.java的一些概念: JRE(java  runtime environment):java程序运行环境,如果要运行java程序,需要jre支持.jre里包含jvm JDK(java  devel ...

随机推荐

  1. 现在,以编程方式在 Electron 中上传文件,是非常简单的!

    必要的上下文 想尽快熟悉上下文语境的,可以点这里: https://github.com/electron/electron/issues/749 这段讨论,其实本来是讨论如何自动设置 input 标 ...

  2. [luogu P3384] 【模板】树链剖分 [树链剖分]

    题目描述 如题,已知一棵包含N个结点的树(连通且无环),每个节点上包含一个数值,需要支持以下操作: 操作1: 格式: 1 x y z 表示将树从x到y结点最短路径上所有节点的值都加上z 操作2: 格式 ...

  3. jmeter断言:断言条件之间是“或”的关系

    有时,我们在做断言时,需要同时满足一系列条件,这在jmeter自带响应断言中已经实现: 有时,同一请求在不同时间,返回的响应是不同的,而这都是正确的响应,也就是说,我们判断的条件之间是或的关系,此时, ...

  4. Linux编译安装程序(使用configure、make、 make install)

    以安装vim为例. (vim 是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面). 1.获取源文件 首先进入/usr/local下(只是为了方便处理安装文件,位置随意) 用git ...

  5. innodb关键特性之double write

    # 脏页刷盘的风险 两次写的原理机制 1.解决问题 2.使用场景 3.doublewrite的工作流程 4.崩溃恢复 # doublewrite的副作用 1.监控doublewrite负载 2.关闭d ...

  6. Maven “Failed to execute goal org.apache.maven.plugins:maven-archetype-plugin:2.4:create...”问题总结

    今天学习Maven的过程中,一直遇到一个问题:用maven指令构建新项目时,一直报错,用的 Maven 3.2 , JDK 6. 构建的命令: 错误信息: 解决方案: 在StackOverFlow上找 ...

  7. Nlpir Parser智能语义平台全文搜索

    全文索引用于处理大文本集合,利用它人们可以在海量文本中快速获取需要的信息.全文检索系统是按照全文检索理论建立起来的用于提供全文检索服务的软件系统.一般来说,全文检索需要具备建立索引和提供查询的基本功能 ...

  8. [补档]从OI学麻将

    背景 作为一名川娃子,怎么能不懂麻将呢= = T1 さきなに~~ [咲 -Saki-] 天才麻将少女什么编 题目 二十一世纪,世界上的麻将竞技人数超过一亿,日本每年也有大规模的全国大赛来对麻将选手进行 ...

  9. git入门(3)git checkout 和git branch分支的创建和删除

    在一个项目中,需要多人同时开发,协同coding 要求: 开发时请用开发分支daily/0.0.1, 禁止直接使用master分支开发新建分支 git checkout -b daily/0.0.1 ...

  10. 剑指offer--二叉树的后序遍历

    思路:对于一个二叉树的后序遍历序列来说,最后一个数一定是根节点,然后前面的数中,从最开始到第一个大于根节点的数都是左子树中的数,而后面到倒数第二个数应该都是大于根节点的,是右子树,如果后面的数中有小于 ...