java(二):java的运算和流程控制

java中单引号和双引号区别和用法

区别1:java中的单引号表示字符,双引号表示字符串。

区别2:单引号引的数据一般是char类型的;双引号引的数据 是String类型的。

区别3:java中单引号里面只能放一个字母或数字或符号;java中的双引号里面是0到多个字符构成。所以字符可以直接转换成字符串。字符串需要使用charAt(n) 来获取第几个字符。

char定义时用单引号,只能有一个字母,数字。char c='c';而String用双引号,可以是一个,也可能是多个字母,汉字等。就是所谓的字符串。String s="adsaf";

char只是一个基本类型,而String 可以是一个类,可以直接引用。比如char c='c';不能直接对c调用方法。String s="abc"; 这时可以调用s.charAt(0);等方法,因为String是类,这是就是对象的调用了。

一.java 基本语法--运算符

java中常用的算术运算符是:+加、-减、*乘、/除、%取模

其实%运算可以得到两个数的余数。

一.算术运算符:++自加、--自减。

这两个运算符比较特殊,请大家思考一下:

int a=90;

a++;          等同于(a=a+1)

这时a等于?91


int b=89;

b--;          等同于(b=b-1)

这时b等于?88


inta=56;

intb=a++; 

System.out.println(b);56

System.out.println(a);57

int b=++a;相当于a=a+1再将b=a;

 int b=a++;相当于b=a再将a=a+1。

算术运算符:+=左加.-=左减./=左除.%=左取模

请大家看看几个案例,就明白了:

inta=90;

a+=90;           (相当于a=a+90)

请问,a现在等于多少?180

float b=89.7f;

b+=a;            (相当于b=b+a)

请问,b现在等于多少?269.7

int a=56;int b=90;

a-=34;b%=a;       (相当于a=a-34,b=b%a)

System.out.println(b);2

System.out.println(a);22

运算符

二.关系运算符

1、==等于;2、>大于;3、<小于;4、>=大于等于;5、<=小于等于;6、!=不等于

案例:

/*请编写一个程序,该程序可以接收两个数

(可以是整数,也可是小数)并判断两个数是大于?小于?还是等于? */

package day2;

import java.io.*;

import java.io.InputStreamReader;

public class shuru {

    public static void main(String []args){

        try{

            //输入流从键盘接收数

            InputStreamReader isr = new InputStreamReader(System.in);

            BufferedReader br = new BufferedReader(isr);

            //给出提示

            System.out.println("请输入第一个数");

            //从控制台读取一行数据

            String a1 = br.readLine();

            System.out.println("请输入第二个数");

            String a2 = br.readLine();

            //把String转float

            float num1 = Float.parseFloat(a1);

            float num2 = Float.parseFloat(a2);

            if(num1>num2){System.out.println("第一个大");}

            if(num1==num2){System.out.println("相等");}

            if(num1<num2){System.out.println("第二个大");}

        }catch(Exception e){

            e.printStackTrace();

        }

    }

}

三.运算符--逻辑运算符

用于判断逻辑关系的运算符

1、&&与;  2、||或;  3、!非

&&与的运算关系,真真为真,其它都为假。

||或的运算关系,假假为假,其它都为真。

!非的运算关系,真取假,假取真

二.java基本语法----三大流程控制

1顺序控制

听其名而知其意,让程序可以顺序的执行。

请大家看个案例[demo11.java]:

int a=7;

System.out.println("a="+a);

System.out.println("hello!");

a++;

System.out.println("a="+a);

System.out.println("0(∩_∩)0");

a++;

System.out.println("a="+a);


2分支控制

让程序有选择的执行,分支控制有三种:

1、 单分支;2、双分支;3、多分支a

1、单分支语法:

    if(条件表达式){

        语句;

    }


2、双分支语法:

    if(条件表达式){

        语句;

    }else{

        语句;

    }


3.1、多分支语法:

    if(条件表达式){

        语句;

    }else if(条件表达式){

        语句;

    }else if(条件表达式){

        语句;

    }else{

        语句;

    }

3.2、多分支语法:

    switch(条件表达式){ //***条件表达式数据类型,就和case常量表达式一致,否则就会报错。

    case常量1:

        语句1;

                 //语句1至break中相当于{}可以加入相应程序代码

        break;  //break,表示跳出switch语句

    case常量2:

        语句1;

        break;

        ...

    case常量n:

        语句n;

        break;

    default:

        语句;

        break;

    }

*****:switch中的可用数据类型主要是:允许byte,short,int,char,enum等


eg:编写一个程序,可以输入人的年龄,如果该同志的年龄大于18岁,则输出“你年龄大于18,要对自己的行业负责,送入监狱”。如果该同志的年龄大于10岁并且小于等于18,则输出“你的年龄也不小了,把你送少管所”。其它情况,则输出“小孩子,下次注意”。

package day3;

import java.io.BufferedReader;

import java.io.InputStreamReader;

public class demo2 {

    public static void main(String[] args) {

        try{

        InputStreamReader isr =new InputStreamReader(System.in);

        BufferedReader br = new BufferedReader(isr);

        System.out.println("输入年龄");

        String a1 = br.readLine();

        float num1 = Float.parseFloat(a1);

        if(num1>18){

            System.out.println("你年龄大于18,要对自己的行业负责,送入监狱");

        }

        else if(num1>10 && num1<=18){

            System.out.println("你的年龄也不小了,把你送少管所");

        }else{

            System.out.println("小孩子,下次注意");

        }

        }catch(Exception e){

            e.printStackTrace();

        }

    }

}


对比switch与if语句在执行分支语句的区别。

***switch分支语句不支持判断类型即boolean类型,switch只支持byte,short,int,char,enum等数据类型

练习:

1、双分支控制作业.

编写一个程序,可以输入人的年龄,如果该同志的年龄大于18岁,则输出“你年龄大于18岁,要对自己的行为负责!”否则,输出“你的年龄不大这次放过你了”

package day3;

import java.io.*;

import java.io.BufferedReader;

public class demo01 {

    public static void main(String []args){

        try{

            //接收从键盘输入的数

            InputStreamReader isr = new InputStreamReader(System.in);

            BufferedReader br = new BufferedReader(isr);

            //提示

            System.out.println("请输入年龄");

            //从控制台读取一行数据

            String a1 = br.readLine();

            //将string转float

            float num1 = Float.parseFloat(a1);

            if(num1<18){

                System.out.println("你的年龄是"+num1);

            }else{

                System.out.println("你年龄大于18,要为自己的行为负责!");

            }

        }catch(Exception e){

            e.printStackTrace();

        }

    }

}

2.多分支控制:

编写一个程序,可以输入人的年龄,如果该同志的年龄大于18岁,则输出“你年龄大于18,要对自己的行业负责,送入监狱”。如果该同志的年龄大于10岁并且小于等于18,则输出“你的年龄也不小了,把你送少管所”。其它情况,则输出“小孩子,下次注意”。

package day3;

import java.io.BufferedReader;

import java.io.InputStreamReader;

public class demo2 {

    public static void main(String[] args) {

        try{

        InputStreamReader isr =new InputStreamReader(System.in);

        BufferedReader br = new BufferedReader(isr);

        System.out.println("输入年龄");

        String a1 = br.readLine();

        float num1 = Float.parseFloat(a1);

        if(num1>18){

            System.out.println("你年龄大于18,要对自己的行业负责,送入监狱");

        }

        else if(num1>10 && num1<=18){

            System.out.println("你的年龄也不小了,把你送少管所");

        }else{

            System.out.println("小孩子,下次注意");

        }

        }catch(Exception e){

            e.printStackTrace();

        }

    }

}

3.多分支控制:

请编写一个程序,该程序可以接收一个字符,比如:a,b,c,d,e,f,g

a表示星期一,b表示星期二...根据用户的输入显示相应的信息,要求使用switch语句完成。

package day3;

import java.io.*;

import java.util.Scanner;

public class demo3 {

    public static void main(String[] args){

        try{

            //根据用户输入判断今天星期几

            //请编写一个程序,该程序可以接收一个字符,比如:a,b,c,d,e,f,g

            //a表示星期一,b表示星期二 …

            //根据用户的输入显示相应的信息.要求使用 switch 语句完成

        /*思路分析

            1. 接收一个字符 , 创建Scanner对象

            2. 使用switch 来完成匹配,并输出对应信息

        代码*/

            Scanner myScanner = new Scanner(System.in);

            System.out.println("请输入一个字符(a-g)");

            char c1 = myScanner.next().charAt(0);

            switch(c1){

                case 'a':

                    System.out.println("周一");

                    break;

                case 'b':

                    System.out.println("周二");

                    break;

                case 'c':

                    System.out.println("周三");

                    break;

                case 'd':

                    System.out.println("周四");

                    break;

                case 'e':

                    System.out.println("周五");

                    break;

                case 'f':

                    System.out.println("周六");

                    break;

                case 'g':

                    System.out.println("周日");

                    break;

                default:

                    System.out.println("请输入a-g");

            }

        }catch(Exception e){

            e.printStackTrace();

        }

    }

}


3循环控制

听其名而知其意,就是让你的代码可以循环的执行。

循环控制有三种

1、for循环语法:

    for(循环初值;循环条件;步长){

        语句; //循环体

    }

2、while循环语法:

    while(循环条件){

        语句; //循环体

    }

特别说明:while循环是先判断在执行语句。


3、do

while循环 语法:

    do{

        语句; //循环体

    }while(循环条件);

特别说明:do while循环是先执行,再判断。


eg:写一个三角形

package day3;

//请编写一个程序,可以接收一个整数,表示层数,打印出金字塔一半

public class demo4 {

    public static void main(String []args){

        int lay =4;

        //lay表示层数

        for(int i=1;i<=lay;i++){

            //print

            for(int j=1;j<=i;j++){

                System.out.print("*");

            }

            System.out.println("\n");

        }

    }

}

注意System.out.print()和System.out.println()的区别


eg:金字塔

package day3;

public class demo5 {

    public static void main(String []args){

        int lay = 4;

        for(int i=1;i<=lay;i++){

            //规律  

            //1=>3 2=>2 3=>1 4=>0 空格的规律

            for(int k=1;k<=lay-i;k++){

                System.out.print(" ");

            }

            //print *

            //1=>1 2=>3 3=>5  4=>7*的规律

            for(int j=1;j<=(i-1)*2+1;j++){

                System.out.print("*");

            }

            System.out.println();

        }

    }

}


eg:镂空金字塔

public class demo6{

    public static void main(String []args){

        int lay=10;//表示有多少层

        for(int i=1;i<=lay;i++){

            //找出规律

            //1->32->2 3->1 4->0找出空格

            for(int k=1;k<=lay-i;k++){

            System.out.print("");

            }

            //打印*

            //1->12->3 3->5 4->7找出星的规律

            for(int j=1;j<=(i-1)*2+1;j++){

                //判断该层是否是顶层或者是底层

                if(i==1||i==lay){

                System.out.print("*");

                }else{

                    //如果是第一个*

                    if(j==1 || j==(i-1)*2+1){

                    System.out.print("*");

                    }else{

                        System.out.print("");

                    }

                }

            }

            System.out.println();//换行

        }

    }

}


eg:空心菱形

public class Demo7{

    public static void main(String []args){

        int lay=4;//菱形上半部行数

        for(int i=1;i<=lay-1;i++){//判断循环上半部分

            for(int k=1;k<=lay-i;k++){//找行内*号前输出空格

                System.out.print("");

            }

            for(int j=1;j<=(i-1)*2+1;j++){//找行内输出星的位置

                if(j==1||j==(i-1)*2+1){  //判断行最小长度和最大长度,并在最小长度和最大长度上输出*号,行内输入出空格。

                    System.out.print("*");

                }else{

                    System.out.print("");

                 }

            }

            System.out.println();//换行

        }

        for(int i=1;i<=lay;i++){ //判断循环菱形下半部分

            for(int k=1;k<=i-1;k++){//判断循环找*号前要输出空格处

                System.out.print(" ");

            }

            for(int j=1;j<=(lay-i)*2+1;j++){//判断循环行长度

                if(j==1||j==(lay-i)*2+1){//判断行最小长度和最大长度,并在最小长度和最大长度上输出*号,行内输入出空格。

                    System.out.print("*");

                }else{

                    System.out.print("");

                 }

            }

            System.out.println();//输出换行

        }

    }

}


eg:实心菱形

public class Demo104{

    publicstatic void main(String []args){

        intlay=4;//菱形上半部行数

        for(inti=1;i<=lay-1;i++){ //判断循环上半部分

            for(intk=1;k<=lay-i;k++){//找行内*号前输出空格

                System.out.print("");

            }

            for(intj=1;j<=(i-1)*2+1;j++){//找行内输出星的位置

                System.out.print("*");

            }

            System.out.println();//换行

        }

        for(inti=1;i<=lay;i++){  //判断循环菱形下半部分

            for(intk=1;k<=i-1;k++){//判断循环找*号前要输出空格处

                System.out.print("");

            }

            for(intj=1;j<=(lay-i)*2+1;j++){//判断循环行长度

                System.out.print("*");

            }

            System.out.println();//输出换行

        }

    }

}


©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,383评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,522评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,852评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,621评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,741评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,929评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,076评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,803评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,265评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,582评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,716评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,395评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,039评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,027评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,488评论 2 361
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,612评论 2 350

推荐阅读更多精彩内容