版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java程序设计第1章Java语言概述第1章Java语言概述.pptx第2章Java语法基础.pptx第3章程序流程控制.pptx第4章数组.pptx第5章Java面向对象编程.pptx第6章Java实用类库.pptx第7章异常与断言.pptx第8章Java文件操作.pptx第9章Swing程序设计.pptx第10章Applet程序设计.pptx第11章多线程程序设计.pptx第1章Java语言概述Java语言的发展和特点01理解JVM、JRE和JDK02Java程序的开发过程03Java程序的基本结构和规范04本讲提纲专题应用:为Java程序输入数据05课程介绍
课程学时64学时(1-16周),4学分
其中:理论教学32,上机32+课外上机课程性质程序设计语言类必修公共基础课,主要介绍Java语言的基本语法和面向对象编程思想和方法。教学安排共三个单元(基础篇、提高篇、进阶篇),基础部分需提交相应的基础实验报告,最后还有一个课程综合设计。考核方式课程成绩构成和比例考勤(10%)+作业与实践(15%)+阶段性测试(15%)+综合设计考核(20%)
+期末无纸化考试(40%)说明1、考勤缺课程学时1/3以上者,取消考试资格。2、不参加无纸化考试或不提交综合设计者,按缺考处理。时间-平台-教材上课时间和地点:时间1,地点1上机时间和地点:时间2,地点2教学平台:
教材:Java程序设计(微课版),人民邮电出版社,普运伟主编,2019Java程序设计习题与实践(微课版),人民邮电出版社,田春瑾主编,2019第1节初识Java技术Java语言的发展
Java技术是顺应时代发展的结果。1990年,Sun公司,JamesGosling(Java之父),Green计划1995年5月23日,发布Java语言和HotJava浏览器,1996.1JDK1.02010年,Sun被Oracle收购第1节初识Java技术Java技术平台Java是包括Java语言、Java运行环境、各种API、JavaServerPage、JavaServlet、JavaRMI、JavaBean等众多技术于一身的业界解决问题的平台。JavaSE(JavaStandardEdition)
标准版,是Java的基础和核心,可用于Java应用程序,GUI程序、Applet小程序、简单网络应用程序、数据库应用程序等传统桌面级应用程序。JavaEE(JavaEnterpriseEdition)
企业版,构建以组件和Web为基础的企业级应用解决方案。
JavaME(JavaMicroEdition)
微型版,开发智能手机等产品上使用的各类应用程序。第1节初识Java技术Java语言的特点
简单高效
面向对象
适于网络分布式计算
良好的跨平台特性
丰富、强大的API类库第2节理解JVM、JRE和JDKJava程序的运行机制
一次编译,到处运行(WriteOnce,RunAnywhere)源文件(*.java)--->字节码文件(*.class)
关键是Java虚拟机(JVM),负责为class文件提供统一的虚拟运行平台,并和底层实际平台进行沟通。第2节理解JVM、JRE和JDKJava程序的运行机制第2节理解JVM、JRE和JDKJava运行环境JRE是执行Java程序所必备的各种要素:JVM是JRE的基础和核心,API库是Java程序的重要支持,Deployment技术方便软件部署。第2节理解JVM、JRE和JDKJava开发环境JRE:运行Java程序的必备环境,执行class文件。JDK:开发Java程序的必备环境,编写和测试Java程序,包括JRE和许多实用工具。
javac.exe:编译器
java.exe:解释器
appletviewer:Applet小程序查看器
javadoc.exe:说明文档生成工具
jar.exe:打包发布工具第2节理解JVM、JRE和JDK1.JVM能执行的文件类型为()。Java源文件(*.java)Java字节码文件(*.class)可执行文件(*.exe)目标文件(*.obj)ABCD提交单选题1分第3节准备Java开发环境JDK的下载、安装和配置PATH变量:
告诉操作系统默认情况下到什么地方去寻找javac.exe和java.exe等工具。
CLASSPATH变量:
告诉Java虚拟机默认情况下到什么地方去寻找class文件。(1)在原PATH变量后添加“;C:\ProgramFiles\Java\jdk1.8.0_181\bin”(2)创建CLASSPATH变量,并设置值为“CLASSPATH=.;C:\ProgramFiles\Java\jdk1.8.0_181\lib\dt.jar;C:\ProgramFiles\Java\jdk1.8.0_181\lib\tools.jar”,这里的“.”表示当前目录。
详见上机实践教材第二部分
第3节准备Java开发环境常见的Java开发工具UltraEdit
源代码语法着色,利于熟悉程序结构,GUI操作,建议初学者使用,如学习本书1-4章时
NetBeansIDE
方便的项目管理,语法着色,代码完成与提示,代码折叠,代码错误提示等,后期使用
EclipseIDE
IBM最先主导的优秀开源工具,功能类似NetBeans第4节编写第一个Java程序编辑
打开UltraEdit,输入程序1-1(不包括行号),保存源文件为:
HelloJavaDemo.java。
编译
使用“高级→编译Java程序”命令编译源文件,得到字节码文件:HelloJavaDemo.class。相当于DOS命令:
javacHelloJavaDemo.java
运行
使用“高级→运行Java程序”命令执行class文件,得到程序运行结果:Hello,Java!。相当于DOS命令:
javaHelloJavaDemo第4节编写第一个Java程序2.若Java程序中定义的public类为HelloWorld,则Java源文件应命名为()。helloworld.javaHelloWorld.JavaHelloWorld.java可以任意命名ABCD提交单选题1分第4节编写第一个Java程序程序注释行,用于对程序或语句的功能进行说明。注释不会影响程序的执行效率,却有助于提高程序的可阅读性,建议读者养成良好的注释习惯。关键字public:公有的关键字class:正在定义一个“类”类名HelloJavaDemo:“类”的名称,后面的“{”表示类的定义开始Java语言规定,当一个类被声明为public类时,则对应的文件名必须和该类的名称一样main方法是程序执行的起点,这是其标准写法,修饰为public,static(静态的),void(无返回值),参数形式为String[]args第4节编写第一个Java程序main方法中的唯一一条语句,调用System类的out成员的println方法,输出字符串“Hello,Java!”左花括号“{”:类定义开始右花括号“}”:类定义结束第4节编写第一个Java程序3.下面有关Java程序的main方法的说法中,正确的是()。main方法是程序运行的起点,每个类中都必须包含一个main方法main方法定义在主类中,任何Java程序有且仅有一个主类main方法通常用public、static和void进行修饰,也可以不用一个Java程序必须包含一个main方法ABCD提交单选题1分第5节Java程序的结构和规范定义的类名为Rectangle,且修饰为public,故文件名为Rectangle.javaJava的书写很自由,没有严格的格式,也没有“行”的概念
以分号“;”作为语句结束标志“+”实现字符串拼接进一步认识Java程序【程序1-2】已知长方形的长和宽,编写程序求该长方形的周长和面积。第5节Java程序的结构和规范进一步认识Java程序程序1-3:设计一个类Calculator,包含用于计算3个实数平均值的方法getAverage,并在TestCaculator类中测试该方法。
设计了两个类,TestCaculator是主类
编译后生成Calculator和TestCaculator两个类文件main方法始终是执行起点,调用其他方法:
ave=Calculator.getAverage(a,b,c);
被调用方法通过return语句返回调用方法类除了方法外,还可包含属性(成员变量)第5节Java程序的结构和规范4.当一个Java程序中要使用到多个类时,错误的做法是()。可以将多个类放在同一个文件中,但只能有一个类定义为public可以将每个类放在单独的文件中,访问权限不定可以将多个类放在同一个文件中,访问权限不定每个文件中的类个数不定,但每个文件只能有一个public类ABCD提交单选题1分第5节Java程序的结构和规范标识符和关键字Java语言规定,标识符可由字母、数字、下划线(_)和美元符号($)组成,长度没有限制,但首字符不能为数字,且标识符不能为Java语言保留使用的关键字。合法的标识符
username,user_name,a1,b2,$username,_username
不合法的标识符
2sum//以数字开头
yourname//含有空格
#yourname//含有非法字符#通常,标识符取为一些有意义的名字
age,address,setAge,setAddress和getAddress
第5节Java程序的结构和规范标识符和关键字abstractcontinuefinallyinterfacepublictransientbooleandefaultfloatlongreturntruebreakdofornativeshorttrybytedoubleifnewstaticvoidcaseelseimplementsnullsynchronizedvolatilecatchextendsimportpackagesuperwhilecharfalseinstanceofprivatethisconst*classfinalintprotectedthrowgoto*
关键字是在程序中具有特殊含义和用途的词汇第5节Java程序的结构和规范程序注释单行注释
以双斜线“//”开始,直到本行结束,例如:
intwidth=5;//定义整型变量width,并为其赋初值为5
多行注释
以“/*”开始,直到遇到“*/”为止,例如:
/*该程序的功能是求一组数中的最大值
程序版本:Version1.0
程序编制者:王晓萌*/
文档注释
以“/**”开始,直到遇到“*/”为止。例如:
/**
该方法用于求一组数中的最大值
*/
publicintgetMax(int[]a)
第5节Java程序的结构和规范对Java程序的再次说明
Java源文件通常由一个或多个类组成,但在一个文件中最多只能定义一个public类,相应的文件名必须与该public类相同。
每一个Java类可以包含成员变量(尚未涉及)和成员方法,main方法是Java应用程序的执行起点,也是其执行终点。尽管一个Java源文件可以包含多个类,但只能有一个类(主类)中包含main方法。
Java语言严格区分大小写。只要大小写不同,都属于不同的标识符。Java程序书写较为自由,每条语句由分号“;”结束,每行可以写一条或多条语句。第5节Java程序的结构和规范对Java程序的再次说明
Java的类名一般采用名词形式,且每个单词的首字母习惯使用大写,这称为编程中的“驼峰”风格。变量名和方法名最好取一些有意义的名字,尽量做到见文知义,如:name,byPercent,setName,getScore等。
养成良好的注释习惯,以帮助理解程序,提高程序的可读性。
养成良好的代码缩进格式,以增强程序的清晰性。第5节Java程序的结构和规范对Java程序的再次说明package包名;
//包语句,只能1条import包名.类名;//导入语句,可以多条class类名1{//类定义,可以多个
类1的成员变量;//可以多个
类1的成员方法;//可以多个}publicclass主类名{//主类定义,只能1个主类的成员变量;
主类的成员方法;publicstaticvoidmain(String[]args){//main方法定义,只能1个
方法体;
}}第6节专题应用使用命令行参数为Java程序输入数据程序1-4:从键盘输入长方形的长和宽,求该长方形的周长和面积。
05 //采用Integer类的parseInt方法将字符串args[0]转换为int型数据06 length=Integer.parseInt(args[0]);07 width=Integer.parseInt(args[1]);第6节专题应用使用System.in为Java程序输入数据程序1-5:从键盘输入一个整数并计算它的平方值。“流”的概念readline方法封装类Integer的parseInt方法异常检查08BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in));09
data=Integer.parseInt(br.readLine());第6节专题应用使用Scanner类对象为Java程序输入数据程序1-6:利用Scanner类对象输入多个数据。java.util包中的Scanner类也可实现数据的输入。Scanner类采用扫描方式获取从键盘输入的多种数据,可以接受字符串、整型、单精度和双精度等多种类型。使用Scanner类对象输入数据时,可将输入流对象System.in封装为Scanner对象,然后调用读取相应数据类型的各种方法。06 Scannerscan=newScanner(is);//封装成Scanner对象07 System.out.println("请输入汽车名称:");08 Stringname=scan.next();//读取键盘输入的字符串
09 System.out.println("请输入价格(万元):");10 intage=scan.nextInt();//读取键盘输入的整数
第6节专题应用5.以下程序的输出结果是().
publicclassTest1{publicstaticvoidmain(String[]args){ intresult; result=1+1/2; System.out.println("result="+result); }}result=1result=1.0result=1.5result=2.0ABCD提交单选题1分实验与作业上机实验
完成实验1的内容
课后作业
完成习题与实践教材中第1章中的全部习题
感谢您的关注ThankYouforYourAttentionJava程序设计第2章Java语法基础第2章Java语法基础基本数据类型0102本讲提纲04变量与常量03基本数据类型变量的赋值0404表达式与运算符0405扩展表达式和类型转换06专题应用:数据的随机产生与高效计算第1节基本数据类型
程序设计语言使用变量来保存数据,每一个变量都属于一种数据类型。Java提供了整数型、浮点型、逻辑型和字符型等基本数据类型,如图2-1所示。基本数据类型的特点列于表2-1。①程序中的数据可分为常量和变量,无论常量还是变量,都有数据类型之分。②数据类型决定了数据的取值范围和数据可执行的操作。③Java采用固定长度的基本数据类型,其长度与机器平台无关。第1节基本数据类型在下列Java的基本数据类型中,所占字节数最少的是________。charbooleanshortfloatABCD提交单选题
第2节变量与常量
程序中的数据可分为常量和变量两种,程序运行过程中值可以改变的量,称为变量。变量实质就是一块取了名字的、用来存储Java数据的内存区域。Java是一种“强”类型语言,即任何数据类型的变量都必须先声明并且赋值后才能使用。变量声明变量的一般形式为:<类型名><变量列表>;<类型名>必须是有效的数据类型,如int、float等,也可以是后面介绍的引用类型。第2节变量与常量变量的命名必须符合Java标识符的命名规则,且不能使用Java关键字。 inti,number; floatmax,min,sum; doubleheight_value,total_weight,count; charch1;<变量列表>可以由一个或多个用逗号分隔的变量名构成,即在一条语句中可以声明一个或多个同种类型的变量。例如:
变量第2节变量与常量(1)声明变量的同时进行赋值,即初始化变量,例如: intnumber1=34,number2=-98;
//声明变量,并直接赋初值(2)声明变量后通过赋值语句赋值,例如: intnumb1,numb2,numb3,numb4,numb5; charch1; numb1=2;
numb2=numb3=numb4=numb5=5;
//为整型变量连续赋值 ch1=’a’;
//为字符型变量赋值
声明变量后,还需赋值后才能使用,可通过赋值运算符“=”来实现。变量若定义有变量floatf1,f2=8.0F,则下列说法正确的是________。变量f1,f2均被初始化为8.0变量f1没有被初始化,f2被初始化为8.0变量f1,f2均未被初始化变量f2没有被初始化,f1被初始化为8.0ABCD提交单选题第2节变量与常量
存储器的存取特点是:取之不尽、一存即变。也就是说,变量中的值可以反复读取,其值也不会改变。而把一个新值赋给变量后,变量中原来的值就被新值所替代。例如下面的程序片断:inta,b; a=8;b=9; a=b+1;
//a的值变为10,b的值保持不变,仍为9a=b;
//a的值变为9变量第2节变量与常量常量
常量是在程序运行期间值不能被修改的量。常量分为普通常量(即常数,如用于为变量赋值的数)和标识符常量。用标识符代表的常量实质上是“常值变量”,使用前需要先定义。定义标识符常量和变量的方式是一致的,但必须使用关键字final进行修饰,且定义时一般需要为其赋值。为了和变量区分,标识符常量名常采用大写字母,以示区别。
整型变量有byte、short、int和long共四种类型,其默认类型为整型(int)。因此,1、-9999、123456789都是int型的常量。
注意,赋值时必须确保所赋的值必须在相应类型变量的取值范围内,否则会造成损失。第3节基本数据类型变量的赋值【程序2-2】整型变量赋值错误范例。整型变量的赋值
整型变量可以赋值为以下形式的整型常量:十进制、八进制、十六进制,还可以将一个字符常量赋值给整型变量,例如:intnum=’A’;//num值为65,65为字符‘A’的Unicode码值04 bytenum1=130;05 shortnum2=32780;06 Intnum1=130;07 longnum3=31474836470;在以下整型常量的表示方法中,不正确的是________。600900x006060LABCD提交单选题第3节基本数据类型变量的赋值浮点型变量的赋值
浮点型变量有两种类型,即float和double。浮点型常量默认类型是双精度浮点型,因此,1.0、1/2.0和345.678都是double类型的常量。1.十进制数
由数字和小数点组成,如0.123、1.23、123.0F等。如果采用分数赋值,分子和分母至少有一项是带小数点的数值,如1.0/2、1/2.0、1.0f/2等。例如:
doubleb=1.0/2; //双精度变量b赋值为0.5 floata=1/2.0F; //单精度变量a赋值为0.5第3节基本数据类型变量的赋值2.科学计数法
在Java中,用十进制小数后跟E或e,之后再跟10的幂来表示,这种形式就是科学计数法。例如:
doubled=0.7E-3; //双精度变量d赋值为0.7E-3,即7×10-4
其中,e或E之前必须有数字,且e或E后面的指数必须为正整数或负整数,不能为小数,如果是正整数,“+”号可省略。浮点型变量的赋值下列哪个赋值语句是不正确的________。floatf=11.1;doubled=5.3E12;floatd=3.14f; doublef=11.1E10f;ABCD提交单选题第3节基本数据类型变量的赋值字符型变量的赋值
字符的普通常量是用单引号括起来的一个字符,如'P'、'&'、'g'、'5'等均为字符常量,且一个字符型变量只能接受一个字符。单引号只定界作用,并不代表字符。
在Java语言中,字符数据的内部表示采用16位的Unicode编码,而不是8位的ASCII码。Unicode(统一码、万国码、单一码)是一种在计算机上普遍使用的字符编码。部分字符的Unicode编码值见表2-2。
计算机在处理字符类型时,是把这些字符当成不同的整数来看待。字符类型在一定范围内可以当作整数类型来处理。第3节基本数据类型变量的赋值1.普通字符
能用键盘输入的字符均可以赋值给字符型变量,可以是普通字符常量,也可以是它的Unicode编码值。由于数字字符、字母是按顺序存放在Unicode码表中的,因此字符的Unicode码值可以像整数一样在程序中参与运算,例如: charch1='a';
//字符变量ch1赋值为普通字符'a'
charch2=65;
//字符变量ch2赋值为65,即'A’
int
x=ch1-32;
//ch1-32即97-32,即字符'A'的Unicode十进制编码值字符型变量的赋值第3节基本数据类型变量的赋值2.转义字符
无法用键盘输入的字符可以采用‘\u’方式或用转义字符进行赋值。Java中的常用转义字符见表2-3。字符型变量的赋值第3节基本数据类型变量的赋值
利用转义字符赋值的方法是以单引号包围表2-3中所列的转义字符。例如: charch1=‘\”’;//字符型变量ch1的值是一个双引号 charch2='\101';
//八进制101即65,变量ch2值是字符'A' charch3='\u006D';
//Unicode码值006D对应的字符为'm',变量ch3值是字符'm'【程序2-3】利用转义字符,输出一个4行的由”*”组成的等腰三角形。字符型变量的赋值04System.out.print("*\n***\n*****\n*******");第3节基本数据类型变量的赋值字符串变量的赋值
在Java语言中,字符串常量是用双引号括起来的一串字符,如“Thisisastring”。实际上,Java语言将字符串常量作为String类的一个对象来处理,而不是一个普通数据。
为了编程的方便,Java允许将String类型的常量像本章介绍的八种基本数据类型一样赋值给String类型的变量。例如: Stringstr="Hello,";//定义引用变量str为String类型,且赋初值为"Hello,"str=str+"Guys!";//引用变量str的值为"Hello,Guys!"第3节基本数据类型变量的赋值布尔型变量的赋值
布尔型变量只有两个值true(真)和false(假),且它们不对应于任何整数值。布尔型变量的赋值如下: booleanb=true;或booleanb=false;
注意:Java中的布尔值和数字之间不能来回转换,即false和true不对应于任何0或非0的整数值。第3节基本数据类型变量的赋值基本数据类型变量的默认值Java是一种强类型的语言,如果声明局部变量后,不进行赋值,编译器将提示错误,例如:
实际上,Java语言不会对方法内部定义的局部变量提供默认的初始值,因此局部变量必须赋值后才能使用;但Java会为对象的成员变量提供默认的初始值,以保证没有初值的对象存在,具体详见第5章。longl=0xfffL; //长整型变量用十六进制赋值charc;
//声明字符型变量,但没有赋值floatf=0.23F; //单精度变量赋值System.out.println("l="+l+"\tc="+c+"\tf="+f);下面正确的表达式是________。byte=128;longi=xfffL;chara=’\u0061’;double=0.9239d;ABCD提交单选题第4节表达式与运算符表达式doubled2;
//声明变量d2intd1=14,a,b,c=1; //声明变量d1,a,b和c,同时初始化d1和cd1=d1+3; //将d1+3的结果17重新存回变量d1中d2=(a+b)*c-(b-a)+(b%c)*a;//由于a和b没有值,将导致编译错误错误
程序由一序列语句组成,语句的基本单位是表达式,而表达式由运算符和操作数组成。操作数既可以用变量表示,也可以用常量表示;表达式根据运算符规定的操作顺序进行计算,并得到相应的结果。例如:
在程序设计中,对各种类型的数据进行加工的过程称为运算,表示各种不同运算的符号称为运算符。按功能划分,运算符可分为:算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符、条件运算符等。第4节表达式与运算符运算符
算术运算符主要用于完成变量(或常量)的算术运算,常用的算术运算符如表2-4所示。
如果参与除法运算的两个数据均为整型,则结果为整数(不进行四舍五入),否则结果为浮点型。第4节表达式与运算符例如:
1/2//结果为0 1.0/2//结果为0.5 16%3//结果是1 15.7%3 //结果是0.7 3%16//结果是3运算符第4节表达式与运算符x/10%10:即2865%10,得到十位数字5 【程序2-4】声明一个整型变量x,并任意赋一个5位数的值,编程逆序输出这个5位数的值。x%10:即28654%10,得到个位数字4x/100%10:即286%10,得到百位数字6 第11行“=”
号右侧表达式即(((4*10+5)*10+6)*10+8)*10+2,得到逆序数45682第4节表达式与运算符
自增(++)和自减(--)只对整型变量和浮点型变量有效,其作用是将变量加1或减1;都有前置和后置两种形式:++a和a++、--b和b--,两种形式将对表达式和变量将产生不同的影响。例如,若有语句intk,a=5;则:前置:k=++a;表示a变量先自加1后,再把整个表达式的值赋值给k,结果是:a=6,k=6。后置:k=a++;表示先使用a变量的值后,a再自加1,结果是:k=5,a=6。运算符下面程序的运行结果是________。publicclassEx50{publicstaticvoidmian(Stringargs[]){floatf=12.0f;inti=3;System.out.println((f--)/(++i));}}33.044.0ABCD提交单选题第4节表达式与运算符
关系运算符用来判断一个表达式成立与否或用于比较多个表达式的值,常用于if条件语句的条件表达式中。含有关系运算符的表达式称为关系表达式。关系表达式的运算结果是一个逻辑值,即true(真)或false(假)。关系运算符的优先级和含义如表2-5所示。运算符第4节表达式与运算符关系运算符的使用,有如下的程序片断:inta=3,b=2,c=1;booleand,f;d=a>b; //d值为truef=(a>b)==c; //类型boolean和int不能作比较d=b+c<a; //d值为falsef=a<c;
//f值为falsed=a>b>c; //a>b值为true,再和c比较时因类型不同不能比较运算符下面程序段的输出结果为__________。publicclassEx43{publicstaticvoidmain(Stringargs[]){booleana,b,c;a=(3<5);b=(a==true);System.out.println(“a=”+a+”b=”+b);c=(b==false);System.out.println(“b=”+b+”c=”+c);}}a=trueb=falseb=truec=truea=trueb=trueb=truec=falsea=trueb=falseb=truec=falsea=falseb=falseb=truec=falseABCD提交单选题第4节表达式与运算符关系运算符可以进行简单的关系比较,但若要构建复杂的判断条件,就需要“与”和“或”等运算符将几个关系表达式连接起来,这样的运算符称为逻辑运算符。逻辑运算符的含义和优先级如表2-6所示。运算符
逻辑表达式的结果与关系表达式相同,要么为true,要么为false。逻辑运算的基本运算规则如表2-7所示。第4节表达式与运算符
在复杂的逻辑表达式中,要特别注意“逻辑短路”的问题。例如:
inta=6,b=8,c=3;booleanf1,f2;f1=(a>b)&&(b>++c);
//a>b值为false,无需再判断b>++a,但系统会检查其语法错误
System.out.println("f1="+f1+”,c=”+c);
//输出:f1=false,c=3
f2=(a<b)||(--b>c);
//a<b值为true,无需再判断--b>c,但系统会检查其语法错误
System.out.println("f2="+f2+”,b=”+b);
//输出:f2=true,b=8运算符(year%400==0)(year%100!=0)(year%4==0)第4节表达式与运算符【程序2-6】给定一个年份,判断其是否为闰年。运算符分析:判断闰年的条件为“若年份能被400整除,或能被4整除但不能被100整除,该年份为闰年”。如果两个整数进行模运算(%),余数为零,那么前者能被后者整除。||&&该条件中的“但”即“并且”,可用逻辑与“&&”描述,“或”用逻辑或“||”描述。下列程序的运行结果是________。publicclassEx28{ publicstaticvoidmain(Stringargs[]){ inta=5,b=1; booleanc=(a<10)||(++b>=2); System.out.println("b="+b+”,c=”+c); }
}b=1,c=trueb=2,c=trueb=1,c=falseb=2,c=falseABCD提交单选题第4节表达式与运算符
条件运算符又称三目运算符,由“?”和“:”组成。“三目”指的是操作数的个数有三个。由三目运算符可以构成条件表达式,格式为:
表达式1?表达式2:表达式3
表达式1通常是关系表达式或逻辑表达式。条件表达式的运算规则为:若表达式1的值为true,则整个条件表达式的结果取表达式2的值;若表达式1为false,整个条件表达式的结果取表达式3的值。另外,条件表达式可以嵌套使用,例如:运算符
inty,x=-1; y=(x>0)?5:(x<0)?-8:0;第4节表达式与运算符
在对一个表达式进行计算时,如果表达式中含有多种运算符,则要按运算符的优先顺序依次从高到低进行计算,同级运算符则根据运算符的结合性进行计算。Java语言的运算符优先级和结合性如表2-8所示。运算符的优先级Java语言将运算符和赋值运算符组合,组成新的运算符,称为扩展运算符或自反赋值运算符。用这些运算符可以构建更为简洁的表达式,即扩展表达式,表2-9列出了这些运算符及其含义。第5节扩展表达式和类型转换程序中的表达式:y*=x+2;编译后为y=y*x+2还是
y=y*(x+2)?扩展表达式下面程序的运行结果是________。publicclassEx49{ publicstaticvoidmain(Stringargs[]){ floata=20.28f,b=5.0F; a%=b; b*=b+2; System.out.println("a="+a+",b="+b);
}
}
a=0,b=27a=0,b=27.00a=0.28,b=35a=0.28,b=35.00ABCD提交单选题
在Java语言中,允许同一个表达式中含有不同数据类型的常量和变量,但是表达式的结果只能是某一种数据类型。因此,就必须进行数据类型转换。第5节扩展表达式和类型转换(1)赋值时
Java语言规定,赋值时可以将位数少的类型赋值给位数多的类型,从而构成赋值时的自动类型转换。例如:
intx=’d’;
//char常量赋值给int变量,x值为100 longy=100;
//int常量赋值给long变量,y值为100L doublez=2;
//int常量赋值给double变量,z值为2.0自动转换数据类型第5节扩展表达式和类型转换(2)
混合型表达式
整型、实型和字符型数据可以组成混合型表达式进行运算。运算时,不同类型的数据需先转化为同一类型,然后才进行运算。
转换的基本原则是:以不丢失数据精度为前提,从占用字节少的类型转换到占用字节多的数据类型,按以下顺序进行自动类型转换:
(char,byte,short)→int→long→float→double自动转换数据类型第5节扩展表达式和类型转换(2)
混合型表达式
对于占用字节少的char、byte和short,计算时总是被转换为int类型,即Java混合表达式计算结果的最低类型为int。例如:bytea=2,b=3;intx=a+b;//赋值号右边的变量a和b先转换为int型后再相加doubley=x+2.5;//x被转换为double型后再参与计算floatz=1.0F/100;//100被转换为float型后再参与计算自动转换数据类型若定义有shorts;byteb;charc;则表达式s*b+c的类型为________。charbyteintshortABCD提交单选题程序代码: intr1=3,r2=2; doubleresult=1.5+r1/r2;
//r1/r2的结果为1,result为2.5第5节扩展表达式和类型转换
若想让r1/r2为1.5,result的值为3.0,就需要强制转换数据的类型,强制转换类型的一般形式为:(数据类型名)变量或表达式强制转换数据类型下面哪行代码,result的值为3.0?01 result=1.5+(double)r1/r2;02 result=1.5+(double)(r1/r2);第5节扩展表达式和类型转换
一般来说,从占用字节多的类型转换为占用字节少的类型,就必须使用强制转换数据类型。例如: inti; floatx=3.6f; byteb=(byte)i;
//把int型变量i的值强制转换为byte型 i=(int)x;
//把x的值强制转换为int型,变量i的值为3,变量x仍为float型强制转换数据类型把数值范围较大的类型转换成数值范围较小的类型就很有可能丢失数据信息。
随机数是由随机数种子根据一定的计算方法计算出来的数值,只要具有确定的计算方法和随机数种子,便可产生随机数。第6节专题应用
Java语言提供了两种生成随机数的方法:一是使用Random类,二是使用Math类的random方法。Random类是java.util包中的类,需要用import语句来导入,使用时要先调用构造方法构造对象,然后通过对象才能使用该类提供的方法。数据的随机产生Random类的构造方法主要有如下两种形式:(1)publicRandom()
该方法创建一个随机数生成器,并以系统当前时间作为随机数种子。因为每时每刻的时间都不尽相同,因此产生的随机数也不同,例如:Randomrnd=newRandom();//构造对象,创建随机数生成器rnd(2)publicRandom(longseed)
该方法使用一个long类型的种子seed创建一个新的随机数生成器。该种子是伪随机数生成器的内部状态的初始值。第6节专题应用数据的随机产生第6节专题应用
调用Random类的构造方法创建对象后,再通过对象调用表2-10中的各种方法便可以随机生成一个任意范围内的数据,例如:【程序2-7】随机出几道小学生四则运算题,要求加、减、乘、除法和参与运算的两个整数(0~100之间)均随机产生,显示题目,等待作答并判断答题是否正确。 Randomrnd=newRandom();//创建随机数生成器对象rnd inta=rnd.nextInt(10); //随机产生一个[0,10)之内的数 intb=rnd.nextInt(900)+100;//随机产生一个三位数 doublec=rnd.nextDouble()*10//随机产生一个0.0~10.0之间的浮点数数据的随机产生有下列语句序列,num的取值范围将是
。
Randomrd=newRandom(); intnum=rd.nextInt(50)+100;50≤x<100100≤x<150100≤x≤15050≤x≤100ABCD提交单选题第6节专题应用
程序中的基本数学运算,如圆周率π、初等指数、对数、平方根和三角函数等复杂的运算采用Java提供的Math类,可达到事半功倍的效果。
Math类是java.lang包中的类,所提供的成员变量为类变量(静态变量),提供的方法为类方法(静态方法),即使用Math类的成员时,不需要构造对象,便可通过类名进行调用,有关静态成员的相关知识详见第5章。
Math类提供了如下的成员变量和成员方法。高效计算
第6节专题应用(1)Math的类变量Math类提供了两个类变量,这两个变量可以直接使用。Math.E:自然对数,数据类型为double。Math.PI:圆周率π,数据类型为double。(2)Math的类方法
Math类提供了几十种类方法,常见的如表2-11所示,其余方法可参考JavaSEAPI文档。高效计算
第6节专题应用
使用上述Math类的成员变量和成员方法时,无需构造对象,可通过类名直接进行调用,例如:
Math.sin(Math.PI/2)
//计算sin(π/2)
Math.pow(Math.E,2)
//计算e的2次幂
Math.exp(2)
//计算e的2次幂
(int)(100*Math.random()+0.5)
//随机产生一个0~100之间的整数
(char)('a'+Math.random()*('z'-'a'+1))
//随机生成'a'~'z'之间的一个字母
Math.rint(9.99)
//取整,结果为10.0高效计算
第6节专题应用【程序2-8】求一元二次方程ax2+bx+c=0的根(a≠0),设b2-4ac>=0。高效计算系数a,b,c是随机生成的,生成随机数可以使用Random类,也可以使用Math类的random方法。下列表达式中,x的取值范围为0≤x≤100的表达式是________。x=(int)(Math.random()*100)x=(int)(Math.random()*100)+1x=(int)(Math.random()*100+1)x=(int)(Math.random()*100+0.5)ABCD提交单选题实验与作业上机实验
完成实验2和实验3的内容
课后作业
完成习题与实践教材中第2章中的全部习题
感谢您的关注ThankYouforYourAttentionJava程序设计第3章程序流程控制程序流程控制典型程序结构01选择结构02循环结构03控制跳转语句04本章内容专题应用:典型流程控制算法05第1节典型程序大家所见到的程序都是按照语句编写的先后顺序逐条地执行。例如:声明变量,给变量赋值,最后输出变量的值。然而,在日常生活中往往会遇到很多更复杂的情况。比如:要把某个数字显示100次?遇到一首你想反复听的曲子?走到丁字路口前,你该选择哪个方向?采用不同流程控制语句解决这些问题任何算法功能都可以通过程序模块的三种基本流程结构组成:顺序结构、选择结构和循环结构。第1节典型程序第2节选择结构相信大家都对各种手机套餐资费有所了解,现在假设有一种资费情况为:每月基本套餐使用费20元,其中包括主叫100分钟通话时间,超过100分钟后,主叫每分钟0.15元。给定一个主叫通话时间,试计算出所需要的电话费用?选择结构是指程序通过判断给定条件的结果来选择执行哪个流程分支。Java提供的两种选择语句:if语句和switch语句。第2节选择结构if语句if-else语句的基本形式:if(条件表达式)
语句块1;[else
语句块2;]语句的执行过程第2节选择结构说明:1.if语句中条件表达式的结果必须为逻辑型intx=0;if(x){…}2.语句块既可以是一条语句也可以是多条语句intx=5;if(x<=0)x=-x;System.out.println("x="+x);}结果有何变化?{第2节选择结构说明:3.嵌套的if语句intx=-5;if(x<=0)if(x==0)System.out.println("x是零");elseSystem.out.println("x为负数");在嵌套的if语句中,Java编译器总是将else与最近的还没有配对的if相配对,除非用花括号指定不同的匹配方式。}{程序3-1第2节选择结构如果程序3-1需要作进一步修改:通话时间超过500分钟后,主叫每分钟0.1元,超过1000分钟,主叫每分钟0.05元。多选择的if-else语句if(条件表达式1)
语句块1;elseif(条件表达式2)
语句块2;……[else
语句块n+1;]语句执行过程第2节选择结构intscore=80;chargrade='D';if(score>=90)grade='A';elseif(score>=80)grade=’B’;elsegrade='C';System.out.println("成绩等级为:"+grade);elseif(score>=80)grade='B';System.out.println("成绩等级为:"+grade);程序3-2{}例:给定一个成绩,输出对应的等级。(A、B、C)
关于选择结构下列说法正确的是()if语句和 else语句必须成对出现。if语句可以没有else语句对应。一个if语句只能有一个else if语句与之对应。else if结构中必须有default语句。ABCD提交单选题第2节选择结构语句的基本形式switch(表达式){case值1:语句块1;break;case值2:语句块2;break;…case值n:语句块n;break;[default:语句块n+1;]}Switch执行过程语句块n如果是多条顺序执行的语句可以不用大括号语句执行过程switch语句第2节选择结构说明1.switch语句的每个case不负责指明流程的出口,一旦遇到相等的值,执行完相应的语句块后,不再判断后面的case值,结构中通过break语句将流程转到程序的出口。chargrade='A';switch(grade){case'A':System.out.println("优秀");case'B':System.out.println("良好");case'C':System.out.println("中等");default:System.out.println("不及格");}优秀良好中等不及格第2节选择结构2.并非所有的case后面都必须有break语句。比如多个值有一个相同的结果时,只需要在最后一个case值后面填写相应的语句块。chargrade='B';switch(grade){case'A':case'B':case'C':System.out.println("及格");break;default:System.out.println("不及格");}第2节选择结构3.switch后的表达式可以是单个变量,也可以是带有各种操作符的表达式。但是,表达式的值必须是byte、short、int、char或String类型。
floatx=2.0;switch(x){case2.0:…}
inty=1;switch(y*5){…}
intx=3,y=1;switch(x){casey+2:…}x不能是浮点型数据
正确
case后面不能为带有变量的表达式
程序3-3下面程序段,当x=2时,运行结果是()switch(x){case1:System.out.println(1);case2:case3:System.out.println(3);case4:System.out.println(4);}没有输出任何结果 输出结果为3输出结果是3和4 输出结果是l、3和4ABCD提交单选题第3节循环结构先来讨论一个薪酬问题。甲对老板说每月(30天)给我3000-5000元。乙说你第1天给我1分钱,第2天给我2分钱,第3天给我4分钱…,你每天给我的钱是前一天的2倍。丙说我家境比较好,不缺钱,主要是锻炼一下自己的能力。酬金嘛,我每天给你10万,你只要付我乙所说的工资就行了。老板经过考虑聘用了丙,请问30天后双方各得到多少钱?循环结构是指程序在满足一定条件的情况下反复地执行某个程序块,这个程序块通常称为循环体。Java提供的三种循环语句:for循环、while循环和do-while循环。第3节循环结构for语句for语句的语法格式:for(初始语句;条件表达式;迭代语句)
循环体;
inti;for(i=1;i<=2;i++)
System.out.println(i+i);for语句的执行过程第3节循环结构说明:1.for语句小括号内是三条独立的Java语句,都可以为空。但易造成死循环。for(;;)System.out.println("循环能结束吗?");2.逻辑表达式也可以是包含逻辑运算符的表达式,初始化语句和迭代语句可以是用逗号分开的按照顺序执行的多条语句。for(inti=1,j=10;i<=3&&j<4;i++,j--){…}第3节循环结构3.若声明多个变量,可以用逗号将它们分开,但这些变量必须是同种数据类型。doublej;for(inti=1,j=1.0;i<=3;i++){…}4.在for语句体内声明的变量,其作用域只在循环体内有效,for循环结束,变量将不再起作用。intsum=0;for(inti=1;i<=100;i++)sum+=i;System.out.println(“i="+i);i的作用范围
程序有错误程序3-4第3节循环结构for语句常常用在循环执行的次数比较明确的情况下。当程序需用某种逻辑表达式来决定循环的执行与否时,使用for循环不是很方便。这时,可采用while或者do-while语句来实现。while语句while语句的一般语法格式为:while(条件表达式)
循环体;While语句的执行过程第3节循环结构说明1.循环体内要有能够改变逻辑表达式结果的语句,以保证逻辑表达的结果可以从true变为false,避免出现死循环。
inti=1while(i<=3){System.out.println(i+i);
i++;}第3节循环结构2.分号的误用for(inti=1;i<=3;i++);System.out.println("for语句后面可以接分号吗?");inti;While(i<=3);System.out.println("while语句后面可以接分号吗?");分号不会使程序造成死循环!分号会使程序造成死循环!程序3-5第3节循环结构do-while语句do-while语句的语法格式为:do
循环体;while(条件表达式);do-while语句执行过程
inti=10;do
i=i+1;while(i<5);System.out.println(i);第3节循环结构说明1.do-while语句的特点是先执行循环体,再判断条件。因此,循环体至少都会被执行一次。而while语句循环体可能一次都不执行。2.使用do-while语句时,注意在while语句的结尾处有分号。程序3-6:求e=1+1/1!+1/2!+1/3!+…+1/N!的近似值,要求累加到最后一项的值小于0.00000001为止。
关于 for循环和while循环的说法正确的是()while循环先判断后执行,for循环先执行后判断。 while循环判断条件一般是程序结果,for循环的判断条件一般是非程序结果。两种循环任何时候都不可以替换。两种循环结构中都必须有循环体,循环体不能为空。ABCD提交单选题第3节循环结构嵌套循环
如果在一个循环内又包含另外一个或者多个循环,那么就形成了嵌套循环。第3节循环结构for(inti=0;i<=2;i++){for(intj=0;j<=1;j++)System.out.println("i="+i+”,j=”+j);}程序段共执行3*2次,结果为:i=0,j=0i=0,j=1i=1,j=0i=1,j=1i=2,j=0i=2,j=1程序3-7第4节控制跳转语句标号语句格式:
标号:语句;说明:1.标号命名规则与一般的标识符命名规则相同,它只是用来
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030年虚拟现实农业体验企业制定与实施新质生产力战略分析研究报告
- 2025-2030年烘焙油脂行业跨境出海战略分析研究报告
- 2025-2030年气动葫芦企业制定与实施新质生产力战略分析研究报告
- 2025-2030年港口智能泊车系统行业深度调研及发展战略咨询报告
- 2025年广东广州市天河区美好居幼儿园招聘编外教辅人员1人笔试备考题库及答案解析
- 2026浙江台州市科创投资集团有限公司所属企业招聘10人笔试参考试题及答案详解
- 2025年太原市小店区幼儿园教师招聘考试试题及答案解析
- 2025年福州市马尾区幼儿园教师招聘笔试试题及答案解析
- 2025年临沧地区临翔区街道办人员招聘笔试试题及答案解析
- 成都湔江投资集团有限公司2026年春季第一批次招聘笔试参考试题及答案详解
- 2025年医院医务人员医药领域腐败问题集中整治廉洁从业承诺书
- DB51∕T 3199-2024 市(州)、县(市、区)标杆政务大厅建设规范
- 珠海市高新区华发开发工程涉输油管道迁改工程项目环境影响报告书
- 立体几何中的截面问题(附答案解析)-全国高考数学一轮复习(提高版)
- 服装面料图案搭配课件
- 2025至2030年中国电子雷管行业市场深度分析及投资策略咨询报告
- 医学教育中的人文关怀与伦理教育融合
- 国家民政部所属单位招聘笔试真题2024
- DB51 T1996-2015四川公路工程超声回弹综合法 检测结构混凝土强度技术规程
- 超龄员工用工协议书范本
- T-LXLY 29-2024 养老设施认知症照料单元设计导则
评论
0/150
提交评论