专栏首页upuptop的专栏【趣学程序】java基础知识(二)

【趣学程序】java基础知识(二)

表达式

表达式是由数字、运算符、数字分组符号(括号)等以能求得数值的有意义排列的序列

以下都是表达式:
a + b3.14 + a(x + y) * z + 100boolean b= i < 10 && (i%10 != 0)

表达式的类型和值:

  • 对表达式中操作数进行运算得到的结果是表达式的值。
  • 表达式值的数据类型即为表达式的类型。

表达式的运算顺序

  • 应按照运算符的优先级从高到低的顺序进行;
  • 优先级相同的运算符按照事先约定的结合方向进行;

运算符优先级如下图

三目运算符

语法格式:

x ? y : z;
其中x为boolean类型表达式,先计算x的值,若为true,则整个三目运算符的结果是表达式y的值,否则就是z的值。

代码实操:

public class Demo2 {    public static void main(String[] args) {        String  s = "lz";        s = (s == "lz" ? "正确" : "错误");        System.out.println(s);    }}

输出:正确

程序流程控制

  • 顺序结构

如果代码里没有流程控制,程序是至上而下一行一行执行的,一条语句执行完之后继续执行下一条语句,直到程序的最后。

  • 分支结构(条件结构)
if语句:    基本语法:
    if(表达式){
        方法体
    }else if(表达式){
        方法体
    }else{
        方法体    }

    几种形式:    三种格式:    if(条件表达式){        执行语句;    }
    if(条件表达式){        执行语句;    }else{        执行语句;    }    if(条件表达式){        执行语句;    }else if (条件表达式){        执行语句;    }
    …… //可以有多个  elseif
    else{        执行语句;}    }


    代码实操
    public class IfDemo {        public static void main(String args[]) {            int i = 3;            if (i > 5) {                System.out.println("变量i大于5");            } else if (i > 4) {                System.out.println("变量i小于4");            } else {                System.out.println("其他");            }
        }    }


switch控制语句
    格式:    switch(表达式)    {        case 表达式可能的结果值1:                执行语句;        break;        case 表达式可能的结果值2:                执行语句;        break;            ...        default:                执行语句;        break;//最后这个一般不写    }
    备注:    case之间与default没有顺序。先执行第一个case,    都没有匹配的case值执行default。    结束switch语句的两种情况:遇到break,switch语句执行结束。    如果匹配的case或者default没有对应的break,    那么程序会从第一次匹配的case语句开始继续向下执行,    运行可以执行的语句,直到遇到break或者switch结束为止。

    public class SwitchDemo {        public static void main(String[] args) {            int a = 7, b = 5;            switch (a - b) {                case 3://表达式可能的值;                {                    System.out.println("33!");                }                break;
                case 4: {                    System.out.println("44!");                }                break;                default://都没有执行则 执行该语句!                    System.out.println("其它的");            }        }    }


    注意:switch语句只能使用byte、char、short、int        四种基本类型以及它们的包装类和枚举.        JDK1.7版本之后,switch语句可以使用字符串变量。
  • 循环结构
三大循环结构:    用于处理需要重复执行的操作,(例如:计算从1+2+3+4+...+1000的值);    根据判断条件的成立与否,决定程序段落的执行次数,而这个程序段落我们称为循环体;    while:事先不需要知道循环执行多少次;    do  while:同上,只是至少要执行一次(先做,后判断);    for:需要知道循环次数;

循环结构(while & do while)while语句格式:
while(条件表达式值为true){    执行语句;}
do while语句格式:
do{    执行语句;}while(条件表达式值为true);
do while特点是无论条件是否满足,循环体至少被执行一次

循环结构(for)格式:
for(初始化表达式(1);循环条件表达式(2);循环后的操作表达式(3)){        执行语句;(4)}执行顺序:(1) → (2) → (4) → (3) → (2) → (4) → (3)

注意

  1. for里面的3个表达式运行的顺序,初始化表达式只读一次,判断循环条件,为真就执行循环体,然后再执行循环后的操作表达式,接着继续判断循环条件,重复整个过程,直到条件不满足为止。
  2. while与for可以互换,区别在于for为了循环而定义的变量在for循环结束就在内存中释放。而while循环使用的变量在循环结束后还可以继续使用。
  3. 最简单无限循环格式:while(true) , for(;;),无限循环存在的原因是并不知道循环多少次,而是根据某些条件,来控制循环。

代码练习

使用三种循环计算 1+2+3+4+5+...+100的结果
public class ForDemo {
    public static void main(String[] args) {        int sum = 0;        for (int i = 1; i <= 100; i++) {            sum += i;        }
        System.out.println(sum);    }
}


public class WhileDemo {
    public static void main(String[] args) {        int sum = 0;        int i = 1;        while (i <= 100) {            sum += i;            i++;        }
        System.out.println(sum);    }
}

public class DoWhileDemo {
    public static void main(String[] args) {        int sum = 0;        int i = 1;        do {            sum += i;            i++;        } while (i <= 100);
        System.out.println(sum);    }
}

if条件语句与循环语句结合使用。
输出100以内可以被33整除数字,文中使用for循环实现,请尝试使用其他循环实现。
public class ForAndIfDemo {    public static void main(String[] args) {        for (int i = 1; i < 100; i++) {            if (i % 33 == 0) {                System.out.println(i);            }        }    }
}
//结果:33 66 99

嵌套循环与流程控制

嵌套循环:循环里套循环 假设外循环的循环次数是m次,内循环的循环次数是n次,那么内层循环的循环次数需要 m * n次。

需求:利用for循环语句的嵌套打印出乘法口诀表
public class ForForDemo {    public static void main(String[] args) {        for (int i = 1; i <= 9; i++) {            for (int j = 1; j <= i; j++) {                //注意这里 使用的System.out.print   输出不换行                System.out.print(j + " * " + i + " = " + (i * j) + "\t");            }
            //打印换行符            System.out.println();        }    }
}
打印结果:1 * 1 = 1    1 * 2 = 2    2 * 2 = 4   1 * 3 = 3    2 * 3 = 6   3 * 3 = 9   1 * 4 = 4    2 * 4 = 8   3 * 4 = 12  4 * 4 = 16  1 * 5 = 5    2 * 5 = 10  3 * 5 = 15  4 * 5 = 20  5 * 5 = 25  1 * 6 = 6    2 * 6 = 12  3 * 6 = 18  4 * 6 = 24  5 * 6 = 30  6 * 6 = 36  1 * 7 = 7    2 * 7 = 14  3 * 7 = 21  4 * 7 = 28  5 * 7 = 35  6 * 7 = 42  7 * 7 = 49  1 * 8 = 8    2 * 8 = 16  3 * 8 = 24  4 * 8 = 32  5 * 8 = 40  6 * 8 = 48  7 * 8 = 56  8 * 8 = 64  1 * 9 = 9    2 * 9 = 18  3 * 9 = 27  4 * 9 = 36  5 * 9 = 45  6 * 9 = 54  7 * 9 = 63  8 * 9 = 72  9 * 9 = 81  

流程控制语句 ,在循环中我们可以通过break跳出循环,可以通过continue跳过这次循环。

  • break:终止该层循环;
  • continue:跳过该层循环 注:
  1. 若这两个语句离开应用范围,存在是没有意义的。
  2. 这个两个语句后面都不能有语句,因为执行不到。
  3. continue语句是跳过本次循环,继续下次循环。
  4. 标签的出现,可以让这两个语句作用于指定的循环。
输出1-10前4位数字与 2 的乘积,且第2位数字不参与运算输出其本身即可


public class BreakDemo {
    public static void main(String[] args) {        //    输出1-10前4位数字与 2 的乘积,且第2位数字不参与运算输出其本身即可
        for (int i = 1; i <= 10; i++) {
            if (i == 2) {                //    第二位数字仅仅输出  不参与运算                System.out.println(i);                //遇到continue 程序不会向下走                continue;            }

            if (i > 4) {                //    仅仅输出前4位 大于4 即跳出循环                // 遇到break直接结束循环                break;            }

            int temp = i * 2;
            System.out.println(temp);        }    }
}
//输出结果 2 2 6 8

使用标签跳出指定循环

程序遇到break 会跳出与之最近的循环。如果是两层循环,break在最内层,则退出内层循环。如何让break在最内层,跳出外层循环?
public class ForTipDemo {
    public static void main(String[] args) {        WC:        for (int i = 1; i < 10; i++) {            NC:            for (int j = 1; j < 10; j++) {                System.out.println(j + " * " + i + " = " + (j * i));                if (j == 4) {                    break WC;                }            }        }    }
    /*    输出结果    1 * 1 = 1    2 * 1 = 2    3 * 1 = 3    4 * 1 = 4     */
}

本文分享自微信公众号 - 趣学程序(quxuechengxu),作者:upuptop

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-07-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【趣学程序】java常用类(一)

    String表示字符串,所谓字符串,就是一连串的字符,是java中最常用的类之一。 String是不可变类,一旦String对象被创建,包含在对象中的字符序列(...

    趣学程序-shaofeer
  • 五个刁钻的String面试问题及解答

    先看第一个打印语句,在Java中==这个符号是比较运算符,它可以基本数据类型和引用数据类型是否相等,如果是基本数据类型,==比较的是值是否相等,如果是引用数据类...

    趣学程序-shaofeer
  • MySql 锁等待该如何处理?

    这个问题我相信大家对它并不陌生,但是有很多人对它产生的原因以及处理吃的不是特别透,很多情况都是交给DBA去定位和处理问题,接下来我们就针对这个问题来展开讨论。

    趣学程序-shaofeer
  • ElasticSearch高版本API的使用姿势

    ElasticSearch之前我没有深入去学过,在上家公司也是简单用了一下,本来是想用来做千万级ip库数据缓存的,后面查询耗时就弃用了,也就没有深入去学习。之前...

    黄泽杰
  • 设计模式之设计原则

    单一职责原则:类的职责单一,不能将太多的职责放在一个类中,该原则是实现高内聚、低耦合的指导方针

    路行的亚洲
  • Android中网络框架简单封装的实例方法

    Android作为一款主要应用在移动终端的操作系统,访问网络是必不可少的功能。访问网络,最基本的接口有:HttpUrlConnection,HttpClient...

    砸漏
  • 【一起学系列】之剩下的设计模式们

    【BOSS】:没呢,还有好几个设计模式没说过呢,今天再传授你三个吧,分别是建造者模式,责任链模式,备忘录模式,如何?

    Kerwin
  • 【译】浅谈SOLID原则

    SOLID原则是一种编码的标准,为了避免不良设计,所有的软件开发人员都应该清楚这些原则。SOLID原则是由Robert C Martin推广并被广泛引用于面向对...

    Jackeyzhe
  • JavaSE学习总结(五)——封装,继承,多态很简单

    java面向对象的三大特性是:封装、继承与多态,是面向对象编程的核心。 一、封装 简单说封装就是将同一类事物的特性与功能包装在一起,对外暴露调用的接口。 封装:...

    张果
  • 访问者模式

    静态绑定,是重写的时候就断定要绑定那个,例如定义年轻演员的时候,重写的act方法,此时为静态绑定了KungFuRole,

    mySoul

扫码关注云+社区

领取腾讯云代金券