资源描述
单击此处编辑母版标题样式,编辑母版文本样式,第二级,第三级,第四级,第五级,Java面向对象程序设计,第一章 走进,Java,1,Java语言简介,3,编写HelloWorld程序,CONTENTS,目录,2,开发前准备,4,Java跨平台特性与JVM,1,Java故事编程环境编程工具技术应用,Java语言简介,Java故事,1.1.1,Java是SUN公司的产品,从1996年发布JDK1.0以来,经过多年的发展陆续发布了JDK1.1,JDK1.2,JDK1.3,JDK1.4,JDK1.5版本。2009年,甲骨文(Oracle)公司宣布收购SUN,甲骨文公司又陆续发布了JDK6.0,JDK7.0,2014年发布了JDK8.0版本。,JAVA是一个小岛产的咖啡的名字,味道独特。SUN公司使用JAVA这个名称寓意着做Java程序就像享受咖啡一样,享受生活。如图所示,用一杯热腾腾的咖啡作为Java的标志。,James Gosling(詹姆斯高斯林)出生于加拿大,是一位计算机编程天才。在卡内基梅隆大学攻读计算机博士学位时,他编写了多处理器版本的Unix操作系统,是JAVA编程语言的创始人,被称为Java之父。如图1.2是James Gosling的工作照片。,Java编程环境,1.1.2,(1)Java开发工具包,JDK(Java Development Kit)称为Java开发包,是一个编写Java应用程序的程序开发环境。JDK是整个Java的核心,包括了Java运行环境(Java Runtime Envirnment),一些Java工具和Java的核心类库(Java API)。可以把Java API类库中的Java SE API子集和Java虚拟机这两部分统称为JRE(JAVA Runtime Environment),JRE是支持Java程序运行的标准环境。,(2)Java运行时环境,JRE是个运行环境,JDK是个开发环境,如图所示是JDK结构图。因此写Java程序的时候需要JDK,而运行Java程序的时候就需要JRE。而JDK里面已经包含了JRE,因此只要安装了JDK,就可以编辑Java程序,也可以正常运行Java程序。,Java编程工具,1.1.3,Eclipse:一个开放源代码的、基于Java的可扩展开发平台。,NetBeans:开放源码的Java集成开发环境,适用于各种客户机和Web应用。,IntelliJ IDEA:在代码自动提示、代码分析等方面的具有很好的功能。,MyEclipse:由Genuitec公司开发的一款商业化软件,是应用比较广泛的Java应用程序集成开发环境。,EditPlus:如果正确配置Java的编译器“Javac”以及解释器“Java”后,可直接使用EditPlus编译执行Java程序。,Java技术应用,1.1.4,(1)Android应用,许多的 Android应用都是Java程序员开发者开发。虽然 Android运用了不同的JVM以及不同的封装方式,但是代码还是用Java语言所编写。相当一部分的手机中都支持JAVA游戏,这就使很多非编程人员都认识了JAVA。,(2)在金融业应用的服务器程序,Java在金融服务业的应用非常广泛,很多第三方交易系统、银行、金融机构都选择用Java开发,因为相对而言,Java较安全。,(3)网站,Java 在电子商务领域以及网站开发领域占据了一定的席位。开发人员可以运用许多不同的框架来创建web项目,SpringMVC,Struts2.0以及frameworks。,(4)嵌入式领域,Java在嵌入式领域发展空间很大。在这个平台上,只需130KB就能够使用Java技术(在智能卡或者传感器上)。,Java技术应用,1.1.4,(5)大数据技术,Java技术在大数据处理领域应用广泛。例如Hadoop是一个由美国Apache基金会所开发的分布式系统基础架构,以一种可靠、高效、可伸缩的方式进行大数据处理。Hadoop主要是基于Java进行开发的。,(6)高频交易,Java平台提高了高频交易的特性和即时编译,他同时也能够像C+一样传递数据。正是由于这个原因,Java成为的程序员编写交易平台的语言,因为虽然性能不比C+,但开发人员可以避开安全性,可移植性和可维护性等问题。,(7)科学应用,Java在科学应用中是很好选择,包括自然语言处理。最主要的原因是因为Java比C+或者其他语言相对其安全性、便携性、可维护性以及其他高级语言的并发性更好。,2,下载和安装JDK配置JDK的环境变量,开发前,准备,下载和安装JDK,1.2.1,在开发一个Java应用程序前,首先要确保计算机上安装有JDK,JDK可以从Oracle公司的网站上(Development Kit),即Java开发工具包,是Oracle公司提供的用于开发Java应用程序的标准开发工具包。一台电脑要想运行Java程序,必须安装JDK。JDK中包含JRE(Java Runtime Environment),JRE是Java运行时环境。JRE中包含了JVM(Java Virtual Machine)即Java虚拟机和JCL(Java Class Library)即Java类库。,从官方下载JDK后进行安装,默认安装到C:Program FilesJavajdk1.8.0_121目录下。如图1.5所示是JDK的根目录。JDK的目录中包含两个重要目录,它们是bin目录和lib目录。bin目录中存放JDK的命令,lib目录存放系统类库。,配置JDK的环境变量,1.2.2,JDK安装后要对JDK进行环境变量配置,环境变量需要配置3个属性,如表所示。,变量名,变量值,JAVA_HOME,JDK,的,安装,根目录,CLASSPATH,JAVA_HOME,下,lib,目录中的,所有,jar,文件,和当前目录,PATH,JAVA_HOME,下,bin,目录,中所有的文件,假设JDK的安装目录为C:Program FilesJavajdk1.8.0_121,环境变量配置如下:,JAVA_HOME环境变量的值是JDK的安装根目录,CLASSPATH环境变量的值是JAVA_HOME目录下的(lib)目录和点(.),PATH环境变量的值是JAVA_HOME目录下的bin目录。具体配置如表所示。,变量名,变量值,JAVA_HOME,C:Program FilesJavajdk1.8.0_121,CLASSPATH,%,JAVA_HOME,%,lib,;.,PATH,%,JAVA_HOME,%,bin,3,编写HelloWorld程序,编写HelloWorld程序,1.3,开发一个Java程序分3步,如下:,1.创建Java源程序。,2.将源程序编译为字节码文件。,3.执行字节码文件。,第一步:创建Java源程文件,Java源文件是以.java结尾的文本文件,是程序员创建和编写的。,新建一个记事本文件,将该文件命名为HelloWorld.java并保存到C盘根目录下。在HelloWorld.java文件中输入右面的代码。,/*,*HelloWorld程序,*/,public class HelloWorld,public static void main(String args),System.out.println(HelloWorld);,编写HelloWorld程序,1.3,第二步:将源文件编译为字节码文件,字节码文件是以.class结尾的文件,字节码文件通过Javac编译器编译出来的。,打开控制台,在控制台中使用Java编译器命令(javac)将java源文件编译成字节码文件,字节码文件是以.class为扩展名的文件。编译后会在C盘根目录下产生编译完的HelloWorld.class字节码文件,字节码文件是不允许修改的,只能修改源文件后重新生成字节码文件。,第三步:运行字节码文件,在控制台中使用java解释器命令(java)运行HelloWorld字节码文件,显示java程序运行结果。,4,Java跨平台编译和解释,开发前,准备,Java跨平台,1.4.1,我们以HelloWorld程序为例,分析Java程序执行过程和Java跨平台的特性。,Java是跨平台的语言,平台是指操作系统和CPU,每个平台能够运行与该平台匹配的机器码。Java跨平台就是让所有的平台都能运行Java代码。Java是如何做到的呢?Java是通过JVM(Java Virtual Machine),即Java虚拟机来实现的。,所有的Java源程序(Source.java)都可以编译成字节码(Source.class),字节码可以执行在任何一个JVM上,JVM可以运行在专用的平台上,例如JVM for DOS,JVM for windows,JVM for Unix等,如图1.14所示。所有的JVM都可以将字节码文件(Source.class)转换成平台对应的机器码。,Java跨平台,1.4.1,回顾Java程序执行的3个步骤。即从Java源文件到字节码文件到执行。Java程序的执行过程是首先通过java编译器命令javac,将Java源程序编译成字节码文件,字节码文件在虚拟机中使用java解释器命令java,将字节码文件转换成机器码,机器码运行在各自的平台上,以此实现java跨平台。,跨平台是Java最显著的特性,Java还有一些其他特性。例如:简单性,面向对象,分布性,编译和解释性,稳健性,安全性,可移植性,高性能,多线程性,动态性等,这些特性需要在后续的学习中体会。,1.在计算机上配置Java开发环境。,2.利用Java输出自我介绍,格式如下:,本章课后任务,【基本信息】姓名:张三性别:男年龄:,24,岁身高:,1.85cm,3.通过上机练习体会System.out.print()和System.out.println()的区别。,.,.,.,谢谢聆听,THANK YOU,Java面向对象程序设计,第二章 变量与表达式,北京科学出版社 主编:李恒杰,1,数据类型与变量,3,数据类型和转换,CONTENTS,目录,2,表达式和运算符,1,数据类型变量变量命名规则,数据类型与变量,数据类型,2.1.1,数据是描述客观事物的数字、字母以及能够输入到计算机中的符号。例如“武松”、“软件一班”、28、170等都是数据。数据可根据其特点进行分类,例如“武松”和“软件一班”可以归为字符串类,28和170可归为数字类。,在Java中数据类型分为两大类:基本数据类型和引用数据类型。基本类型包括八种,分别是byte,short,int,long,float,double,boolean,char,下表展示了八种基本数据类型。引用类型包括数组、接口、类等,除了基本类型以外的数据都是引用类型。,数据类型,2.1.1,数据类型,占用空间,保存范围内,使用举例,boolean,布尔型,1,字节,true,或,false,保存性别、婚否,byte,字节型,1,字节,-128127,对字节操作时使用,如文件读写,char,字符型,2,字节,065535,保存单个字母或汉字时使用,short,短整型,2,字节,-3276832767,保存较小的整数时使用,int,整型,4,字节,-21474836482147483647,保存一般的整数时使用,long,长整型,8,字节,-92233720368547758089223372036854775807,保存较长的整数时使用,float,浮点型(单精度),4,字节,3.402823e+381.401298e-45,保存小数时使用,double,浮点型(双精度),8,字节,1.797693e+3084.9000000e-324,保存精度较高的小数时使用,数据类型,2.1.2,变量是指在程序运行过程中其值可以改变的量。变量的使用必须先声明,然后初始化,最后才能使用变量。,变量的声明语法:,修饰符 数据类型 变量名称=值;,例如,int age=28;,int age;,int age,score;,float f=1.2F;,double d=2.0D;,long L=38L;,变量命名规则,2.1.3,Java语言是区分大小写的,变量的命名也有规范,,下表列举了变量命名规则。,规则,正确示例,错误示例,变量名不能以数字开头,a3,3a,除了,“,_,”,或,“,$,”,符号外,变量名中不能包含其他标点符号或运算符,my$,It,%,it,变量名不能使用,Java,语言中的关键字,Longer,long,void,class,每个公司在开发中都有自己定义变量的规范,无论各公司规范是否相同,都会遵循“见名知义”的原则。,2,表达式运算符,表达式和运算符,表达式,2.2.1,表达式是运算符和操作数的有效组合,操作数可以是变量、常量、方法调用的返回值。例如表达式 z=x+y中z、x、y是操作数,=、+是运算符。如图描述了表达式是由运算符和操作数组成的。,运算符,2.2.2,1:算术运算符。,算术运算符用来完成数学上的加、减、乘、除四则运算。如表展示了算术运算符。,运算符,示例,说明,+,3+2,加法运算符,求两个操作数的和。,-,3-2,减法运算符,求两个操作数的差。,*,3*2,乘法运算符,求两个操作数的积。,/,3/2,除法运算符,求两个操作数的商。,%,3%2,求余运算符,求两个整数的余数。,+,int a=3;+a,或者,a+,或者,a+,自增运算符,,a+,相当于,a=a+1,。相当于,a=a+1,。,-,int a=3;,-,a,或者,a,或者,a,-,自减运算符,,a-,相当于,a=a-1,相当于,a=a-1,。,运算符,2.2.2,代码示例,public class Task1,public static void main(String args),int width=30;,double height=10.5;,double result=(width+height)*2;,System.out.print(矩形的周长是:+result);,任务一:求矩形周长,该任务根据给定的宽和高求出矩形的周长。,运算符,2.2.2,老兵带你分析代码:,程序中定义了int类型的变量width,初始化为30,定义了double类型的变量height,初始化为10.5,定义了表达式(width+height)*2,并将表达式的结果赋值给double类型的变量result,最后向控制台输出矩形的周长。,运算符,2.2.2,public class Task2,public static void main(String args),int width=30;,int height=10;,double result=width*height/2;,System.out.print(三角形的面积是:+result);,任务二:求三角形面积,该任务根据给定的宽和高求出三角形的面积。,运算符,2.2.2,老兵带你分析代码:,程序中定义了int类型的变量width,初始化为30,定义了int类型的变量height,初始化为10,定义了表达式width*height/2,并将表达式的结果赋值给double类型的变量result,最后向控制台输出三角形的面积。,运算符,2.2.2,public class Task3,public static void main(String args),int i=5,x;,x=i+;,System.out.println(x=+x);,System.out.println(i=+i);,x=+i;,System.out.println(x=+x);,System.out.println(i=+i);,任务三:剖析自增和自减,该任务剖析自增和自减运算在赋值运算中的执行顺序。,运算符,2.2.2,老兵带你分析代码:,1.程序中定义了int类型的变量i,初始化为5,定义了int类型的变量x。定义了表达式x=i+,在该表达式中有两个运算,一是赋值运算,二是自增运算,由于+写在变量i的后面,因此+运算要后于赋值运算。即先将i的值赋给x后,i再自增。运行的结果是x的值是5,i的值是6。,2.程序中定义了表达式x=+i,在该表达式中有两个运算,一是赋值运算,二是自增运算,由于+写在变量i的前面,因此+运算要先于赋值运算。即先将i的值自增,然后再将自增后的i的值赋给x。运行的结果是x的值是7,i的值是7。,运算符,2.2.2,2:关系运算符,关系运算符用于操作数之间的比较。下表展示了关系运算符。,运算符,示例,说明,ab,如果,ab,成立,结果为,true,,否则结果为,falseab,成立,结果为,true,,否则结果为,false,=,a=b,如果,a=b,成立,结果为,true,,否则结果为,falsea=b,成立,结果为,true,,否则结果为,false,ab,如果,ab,成立,结果为,true,,否则结果为,falseab,成立,结果为,true,,否则结果为,false,=,a=b,如果,a=b,成立,结果为,true,,否则结果为,falseab,成立,结果为,true,,否则结果为,false=b,成立,结果为,true,,否则结果为,false,!=,a!=b,如果,a!=b,成立,结果为,true,,否则结果为,falsea!=b,成立,结果为,true,,否则结果为,false,运算符,2.2.2,3:逻辑运算符,逻辑运算符是对布尔类型的操作数进行与、或、非的运算。下表展示了逻辑运算符。,运算符,示例,说明,&,ab&ac,a,大于,b,,并且,a,大于,c,大于,b,,并且,a,大于,c,|,ab|ac,a,大于,b,,或者,a,大于,c,大于,b,,或者,a,大于,c,!,!(ab),a,大于,b,不成立大于,b,不成立,运算符,2.2.2,4:位运算,位运算是对整数类型的操作数进行的二进制运算,包括7个:分别是 (位反)、&(位与)、|(位或)、(位异或)、(右位移)、(无符号右位移)。,5:算术复合运算符,算术复合运算符是多个算术运算同时进行的计算。包括+=、-=、*=、/=、%=。下表展示了符合运算符。,表达式,等价的,Java,代码,运行的结果,a+=3,a=a+3,a,的结果是,13,a-=3,a=a 3,a,的结果是,7,a*=3,a=a*3,a,的结果是,30,a/=3,a=a/3,a,的结果是,3,a%=3,a=a%3,a,的结果是,1,运算符,2.2.2,6:运算符的优先级,当表达式中有多个运算符参与运算时,必须为每种运算符规定一个优先级,以决定运算符在表达式中的运算次序。优先级高的先运算,优先级低的后运算,优先级相同的由结合性确定计算次序。下表展示了运算符的优先级及结合性。,运算符,优先级,结合性,1,从左向右,!+-+(,一元运算,)-(,一元运算,),一元运算,)-(,一元运算,),2,从右向左,*/%,3,从左向右,+-,4,从左向右,5,从左向右,=,instanceof,6,从左向右,=,!=,7,从左向右,&,8,从左向右,9,从左向右,|,10,从左向右,&,11,从左向右,|,12,从左向右,?:,13,从右向左,=,+=,-=,*=,/=,%=,&=,|=,=,=,=,14,从右向左,运算符,2.2.2,该任务涉及了如何从键盘上输入数据。Java在JDK中提供了很多已经开发好的类库,在程序开发过程中可以直接使用。java.util.Scanner类提供了获取用户在控制台中输入的数据的功能。使用时分两步:,1、创建Scanner对象,该对象用于接收用户在控制台中输入的数据。,java.util.Scanner input=new java.util.Scanner(System.in);,2、使用Scanner对象提供的方法获取用户输入的数据:,int score=input.nextInt();,任务四:新兵老兵成绩大比拼,该任务是从键盘上输入新兵和老兵的java成绩和数据库成绩,然后比较成绩。,运算符,2.2.2,代码示例:,public class Task4,public static void main(String args),Scanner input=new Scanner(System.in);,int xb_java;,int xb_sql;,int lb_java;,int lb_sql;,System.out.println(请输入新兵的java成绩);,xb_java=input.nextInt();,System.out.println(请输入新兵的sql成绩);,xb_sql=input.nextInt();,运算符,2.2.2,代码示例:,System.out.println(请输入老兵的java成绩);,lb_java=input.nextInt();,System.out.println(请输入老兵的sql成绩);,lb_sql=input.nextInt();,System.out.println(新兵java成绩追上老兵了吗?+(xb_java lb_java);,System.out.println(新兵sql成绩追上老兵了吗?+(xb_sql lb_sql);,System.out.println(新兵每门课成绩都追上老兵了吗?+(xb_sql lb_java),运算符,2.2.2,运行结果:,请输入新兵的java成绩,78,请输入新兵的sql成绩,89,请输入老兵的java成绩,83,请输入老兵的sql成绩,92,新兵java成绩追上老兵了吗?false,新兵sql成绩追上老兵了吗?false,新兵每门课成绩都追上老兵了吗?false,运算符,2.2.2,Scanner对象中提供了多种方法用于输入不同类型的数据,下表展示了Scanner对象输入不同类型数据的方法。,方法,作用,next,输入字符串,nextInt,输入,int,类型整数,nextShort,输入,short,类型整数,nextLong,输入,long,类型整数,nextFloat,输入,float,类型浮点数,nextDouble,输入,double,类型浮点数,nextByte,输入,byte,类型数据,3,类型转换表达式的数据类型,数据类型转换,类型转换,2.3.1,当将一种数据类型的值赋给另一种数据类型的变量时,出现了数据类型的转换。在整数类型和浮点数类型中,可以将数据类型按照精度从“高”到“低”排列如下级别:,double float long int short byte,高级别-低级别,赋值运算中,数据类型转换规则如下:,1:当将低级别的值赋给高级别的变量时,系统会自动完成数据类型的转换。例如:,int i=52;,float x;,x=i;/自动转换,类型转换,2.3.1,2:当将高级别的值赋给低级别的变量时,必须进行强制类型转换。强制类型转换的形式如下:,(类型标识符)待转换的值;,例如:,float f=1.6F;,int i=(int)f;/将float类型的值转换成int类型的值后存储到int类型变量i中。,强制类型转换可能会造成数据丢失,如上例中f的值是1.6,转换成int类型后会丢失精度,i的值是1。,类型转换,2.3.1,public class Task5,public static void main(String args),int i=15,j=4,k;,float f1,f2;,k=i/j;,f1=i/j;,f2=(float)i/j;,System.out.println(k=+k);,System.out.println(f1=+f1);,System.out.println(f2=+f2);,任务五:整数相除,该任务通过整数相除研究数据类型转换。,类型转换,2.3.1,老兵带你分析代码:,1.程序中声明了3个int类型的变量i、j、k。并给i和j分别初始化为15和4,还声明了两个float类型的变量f1和f2。在“k=i/j”中,int类型值15与4进行整除运算,其结果是int类型值3,并将该值赋值给int类型变量k,所以k的值是3。通过“f1=i/j”,int类型值15与4进行整除运算,其结果是int类型值3,在将该值赋给float类型变量f1时,系统自动进行数据类型转换,将int类型值3转换成float类型值3.0,并将转换后的值赋给f1,所以f1的值是3.0。在“f2=(float)i/j”中,int类型值15被强制转换成float类型值15.0,该值与int类型值4进行除法运算时,系统自动将int类型值4转换成float类型值4.0,然后对15.0与4.0进行除法运算,其结果是float类型值3.75,最后将该值赋给float类型变量f2,所以f2的值是3.75。,表达式的数据类型,2.3.2,表达式的数据类型由运算结果的数据类型决定。例如:,public class Example1,public static void main(String args),int i=5;,float f=6f;,double d=7.8d;,double result=i+f+d;,表达式result=i+f+d中的操作数i是int类型,f是float类型,d是double类型,计算的结果result的类型是表达式中占用字节空间最大的类型,即double类型。,1.请描述变量声明规则与规范。,2.请写出Java中的8种基础数据类型的名称,以及占用的字节数量。,3.请描述发生自动类型转换的条件。,4.通过代码试验将较大的long类型的变量(值大于int型能够描述的最大数字)强制转换为int类型后的值是多少。,5.表达式123+456.58+”Im lucky”的值是多少?,本章课后任务,6.分析下面的程序运行结果,1:byte b=1;,2:short s=2;,3:short x=s+b;,第3行报错,因为,short类型+byte类型 =int类型,short类型+shrot类型 =int类型,byte类型 +byte类型 =int类型,7.分析下面的程序运行结果,short s=1;/1在short范围内,所以可以赋值,s=s+1;/1是int类型,运算后提升到int类型,不能赋值给short类型,本章课后任务,8.分析下面的程序运行结果,short s =1;/1在short范围内,所以可以赋值,s=18+1;/18+1在编译时确定了其值在short范围内,因此可以赋值,本章课后任务,.,.,.,谢谢聆听,THANK YOU,Java面向对象程序设计,第三章 分支结构,北京科学出版社 主编:李恒杰,1,if,分支结构,CONTENTS,目录,2,switch,分支结构,1,三元表达式嵌套的if语句并列的if语句,if分支结构,if分支结构,3.1,程序中有些程序段的执行是有条件的,当条件成立时,执行一些程序段,当条件不成立时执行另一些程序段或者不执行,这种结构称为分支结构,也叫选择结构。,if语句是最常用的分支结构,其中的条件用布尔表达式表示。如果布尔表达式的值为true,表示条件满足,执行某一语句。如果布尔表达式的值为false,表示条件不满足,执行另一语句。if语句是二分支的选择语句。,if分支结构,3.1,if语法格式:,if(布尔表达式),语句1;,else,语句2;,说明:,1.如果布尔表达式的值为true,执行语句1;否则执行语句2。,2.其中else子句是可选的。,3.如果没有else子句,在布尔表达式的值为false时,什么也不执行,形成单分支。,if分支结构,3.1,if语句执行流程如图3.1所示。,单分支 二分支,if分支结构,3.1,代码示例,public class Task1,public static void main(String args),Scanner input=new Scanner(System.in);,int likui,yanqing;,System.out.println(请输入新兵李逵的成绩);,likui=input.nextInt();,System.out.println(请输入新兵燕青的成绩);,yanqing=input.nextInt();,任务一:评选优秀标兵,从键盘上输入新兵李逵和燕青的成绩,成绩高者立为标兵。,if分支结构,3.1,代码示例:,if(likuiyanqing),System.out.println(新兵李逵被选为新兵标兵);,else,System.out.println(新兵燕青被选为新兵标兵);,if分支结构,3.1,老兵带你分析代码:,1.程序中的布尔表达式likuiyanqing成立时执行System.out.println(新兵李逵被选为新兵标兵);否则执行System.out.println(新兵燕青被选为新兵标兵);,运行结果:,请输入新兵李逵的成绩,78,请输入新兵燕青的成绩,87,新兵燕青被选为新兵标兵,三元表达式,3.1.1,新兵一班和二班进行了一场射击比赛,从键盘上输入一班和二班的比赛成绩,显示比赛成绩优先的班。这个问题我们可以使用if语句实现,参考代码如下:,public class Demo1,public static void main(String args),Scanner input=new Scanner(System.in);,int b1,b2,max;,System.out.println(请输入一班比赛成绩);,b1=input.nextInt();,System.out.println(请输入二班比赛成绩);,b2=input.nextInt();,三元表达式,3.1.1,新兵一班和二班进行了一场射击比赛,从键盘上输入一班和二班的比赛成绩,显示比赛成绩优先的班。这个问题我们可以使用if语句实现,参考代码如下:,public class Demo1,public static void main(String args),Scanner input=new Scanner(System.in);,int b1,b2,max;,System.out.println(请输入一班比赛成绩);,b1=input.nextInt();,System.out.println(请输入二班比赛成绩);,b2=input.nextInt();,三元表达式,3.1.1,if(b1b2),max=b1;,else,max=b2;,System.out.println(优胜班的成绩是+max);,运行结果:,请输入一班比赛成绩,88,请输入二班比赛成绩,99,优胜班的成绩是99,三元表达式,3.1.1,类似的像上面这段程序,如果条件成立时为变量max赋值b1,条件不成立时为max赋值b2,这里出现了三个操作数,分别是max,b1,b2。像这种运算可以使用三元运算符来实现。参考下面的代码,import java.util.Scanner;,public class Demo2,public static void main(String args),Scanner input=new Scanner(System.in);,int b1,b2,max;,System.out.println(请输入一班比赛成绩);,b1=input.nextInt();,三元表达式,3.1.1,System.out.println(请输入二班比赛成绩);,max=b1b2?b1:b2;,System.out.println(优胜班的成绩是+max);,上面的代码中max=b1b2?b1:b2;就是一个三元表达式。三元表达式的语法规则是:关系或者逻辑表达式?成立时返回值:不成立时返回值,当b1b2成立时,将“:”前面的变量b1赋值给max;当b1b2不成立时,将“:”后面的变量b2赋值给max;,运行结果:,请输入一班比赛成绩,88,请输入二班比赛成绩,99,优胜班的成绩是99,三元表达式,3.1.1,相比于if语句,三元表达式的代码看上去更优雅。下表是if语句与三元表达式编码形式的比较。,if,三元表达式,int,b1,=5,b,2,=10,max;if(,b1,b,2,)max=,b1,;,else max=b,2,;,int,b1,=5,b,2,=10,max;max=(,b1,b,2,)?,b1,:b,2,;,嵌套的if语句,3.1.2,if语句中包含了另外一个if语句就形成了if语句的嵌套。嵌套if语句的形式如下:,if(布尔表达式),if(布尔表达式),任务二:判断闰年,从键盘上输入一个年份,判断是否是闰年。,嵌套的if语句,3.1.2,闰年的规律为:四年一闰,百年不闰,四百年再闰,其简单计算方法要满足如下两个条件:,1.能被4整除而不能被100整除(如2004年就是闰年,1800年就不是闰年);,2.能被400整除,如2000年是闰年;,代码示例:,import java.util.Scanner;,public class Task2,public static void main(String args),Scanner scanner=new Scanner(System.in);,System.out.println(请输入年份);,int year=scanner.nextInt();,嵌套的if语句,3.1.2,if(year%4=0),if(year%100=0),if(year%400=0),System.out.println(是闰年);,else,System.out.println(不是闰年);,else,System.out.println(是闰年);,else,System.out.println(不是闰年);,嵌套的if语句,3.1.2,老兵带你分析代码:,1.上例代码中的3个if语句是嵌套关系,当外层if语句成立时,才能进入内层的if语句执行。,运行结果:,请输入年份,2018,不是闰年,并列的if语句,3.1.3,任务三:根据分数给出成绩级别,从键盘上输入新兵考试成绩,成绩规则如下:,90 100,之间 成绩为,A80 90,之间 成绩为,B70 80,之间 成绩为,C60 70,之间 成绩为,D0 60,之间 成绩为,E,并列的if语句,3.1.3,代码示例:,import java.util.Scanner;,public class Task3,public static void main(String args),Scanner scanner=new Scanner(System.in);,System.out.println(请输入成绩);,int score=scanner.nextInt();,if(score=90),System.out.println(成绩为:A);,else if(score=80),System.out.println(成绩为:B);,else if(score=70),System.out.println(成绩为:C);,else if(score=60),System.out.println(成绩为:D);,else,System.out.println(成绩为:E);,并列的if语句,3.1.3,老兵带你分析代码:,1.上例代码中的4个if语句是并列关系,并列的多个if语句只能执行其中一个分支。,运行结果:,请输入成绩,78,成绩为:C,2,表达式运算符,switch分支结构,switch分支结构,3.2,当要从多个分支中选择一个分支去执行时,虽然可以使用并列的if语句,但是代码的可读性比较查。为此java提供了多分支选择语句switch语句。switch语句能够根据给定的表达式的值,从多个分支中选择一个分支来执行。,switch语句的格式如下:,s
展开阅读全文