Java面向对象程序设计案例教程(第二版) 课件全套1-12 Java语言概述 - JDBC数据库编程_第1页
Java面向对象程序设计案例教程(第二版) 课件全套1-12 Java语言概述 - JDBC数据库编程_第2页
Java面向对象程序设计案例教程(第二版) 课件全套1-12 Java语言概述 - JDBC数据库编程_第3页
Java面向对象程序设计案例教程(第二版) 课件全套1-12 Java语言概述 - JDBC数据库编程_第4页
Java面向对象程序设计案例教程(第二版) 课件全套1-12 Java语言概述 - JDBC数据库编程_第5页
已阅读5页,还剩443页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第1章Java语言概述《Java面向对象程序设计案例教程(第2版)》目录/Contents1.11.21.3Java语言简介JDK的使用Java程序的开发1.4

Java的运行机制1.5

Java开发工具Eclipse思政要点/Point科技创新精神

Java作为编程语言,体现了科技创新的力量,鼓励学生追求技术前沿。规范意识

Java语言有严格的语法规范,培养学生严谨的编程态度和规范意识。国际视野

Java的广泛应用和跨平台特性,引导学生具有国际视野,关注全球技术发展。职业规划意识

介绍Java语言在职业发展中的广阔前景,引导学生根据自己的兴趣和优势进行职业规划。Java语言简介1.1

Java是一种面向对象的、基于类的、通用型编程语言,最初由SunMicrosystems(现归属于Oracle公司)于1995年发布。Java的设计目标是实现“一次编写,到处运行”(WriteOnce,RunAnywhere),这意味着Java程序可以在任何支持Java虚拟机(JavaVirtualMachine,JVM)的设备上运行,无需对源代码进行修改或重新编译。Java语言不仅适用于企业级应用开发、移动应用开发,还广泛应用于大型网站后端服务、嵌入式系统以及桌面应用开发等领域。1.1.1

什么是JavaJavaSEJavaEEJavaMEJavaSE(JavaPlatform,StandardEdition)以前被称为J2SE。它允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的Java应用程序。JavaSE包含了支持JavaWeb服务开发的类,并为JavaEE(JavaPlatform,EnterpriseEdition)提供基础。1.1.1

什么是JavaJavaEE以前被称为J2EE。企业版本帮助开发和部署可移植、健壮、可伸缩且安全的服务器端Java应用程序。JavaEE是在JavaSE的基础上构建的,它提供Web服务、组件模型、管理和通信API,可以用来实现企业级的面向服务体系结构(Service-OrientedArchitecture,SOA)和Web2.0应用程序。1.1.1

什么是JavaJavaSEJavaEEJavaMEJavaME(JavaPlatform,MicroEdition)以前被称为J2ME。JavaME为在移动设备和嵌入式设备(比如手机、PDA、电视机顶盒和打印机)上运行的应用程序提供一个健壮且灵活的环境。JavaME包括灵活的用户界面、健壮的安全模型、许多内置的网络协议以及对可以动态下载的联网和离线应用程序的丰富支持。基于JavaME规范的应用程序只需编写一次,就可以用于许多设备,而且可以利用每个设备的本机功能。1.1.1

什么是JavaJavaSEJavaEEJavaME1.1.2

Java语言的特点Java语言是一种面向对象的语言,它通过提供最基本的方法来完成指定的任务简单性Java语言的设计集中于对象及其接口,它提供了简单的类机制以及动态的接口模型。面向对象通过提供的类库可以处理TCP/IP协议,用户可以通过URL地址在网络上很方便地访问其他对象。分布式Java语言具有动态调整库中方法和增加变量的能力。动态性Java语言内置了对多线程的支持。多线程Java语言具有强大的错误检查和异常处理机制鲁棒性Java字节码可以动态翻译成特定CPU的机器码,提高了执行速度。高性能Java不支持指针,一切对内存的访问都必须通过对象的实例变量来实现安全性Java语言具有“一次编写,到处运行”的特性立与可移植性平台独立与可移植性1234567891.1.3Java语言的发展历史JDK1.1

1997年2月19日JDK1.3(Java2SE1.3)2000年5月8日JDK5.0(JavaSE5,也称为JDK1.5)2004年9月30日JDK7(JavaSE7)2011年7月28日JDK9及以后版本JDK1.0

1996年1月23日JDK1.2(Java2)1998年12月8日JDK1.4(Java2SE1.4)2002年2月13日JDK6(JavaSE6)2006年12月11日JDK8(JavaSE8)2014年3月18日JDK17及以后版本(LTS版本)JDK的使用1.21.2JDK的使用JDK(JavaDevelopmentKit)是Sun公司对Java开发人员发布的免费软件开发工具包。JDK是整个Java的核心,包括Java运行环境、Java工具和Java基础类库。JDK提供了Java的开发编译环境,而JRE(JavaRuntimeEnvironment)提供了Java的解释运行环境。1.2.1安装JDK步骤1步骤2步骤3步骤4访问JDK网址下载JDK的网址为/java/technologies/downloads/,可以根据自己计算机的操作系统和硬件环境下载相对应的JDK版本。步骤2步骤1步骤3步骤4进入下载页面进入下载页面,在选择版本和下载之前用户首先需要接受协议,然后根据自己的电脑系统选择对应的版本,接着单击“下一步”按钮进行安装1.2.1安装JDK步骤3步骤1步骤2步骤4选择JDK安装路径用户在安装时可以选择要安装的功能,同时可以根据需要选择默认安装路径或者选择修改安装路径。如果需要修改安装路径,则单击“更改”按钮,在弹出的对话框中选择要安装的位置,然后单击“下一步”按钮进行安装。1.2.1安装JDK步骤3步骤1步骤2步骤4安装JDK安装完成的界面如图所示。1.2.1安装JDK步骤4步骤1步骤2步骤3配置系统环境变量右键单击“我的电脑”→“属性”→“高级系统设置”,就会看到如图所示的界面。1.2.1安装JDK步骤5步骤6步骤7步骤8配置环境变量单击“环境变量”按钮,开始配置环境变量。1.2.1安装JDK步骤6步骤5步骤7步骤8配置JAVA_HOME环境变量在系统变量选项区中单击“新建”按钮,变量名为“JAVA_HOME”(代表JDK安装路径),变量值为“C:\ProgramFiles\Java\jdk-17”,即JDK的安装路径。1.2.1安装JDK步骤7步骤5步骤6步骤8配置Path环境变量在系统变量中查找Path变量,如果存在,点击“编辑”按钮,点击“新建”按钮,将JDK安装目录下的bin文件夹的安装路径添加其中。1.2.1安装JDK步骤8步骤5步骤6步骤7验证配置是否成功在搜索框中输入cmd,单击“回车”按钮,打开命令行窗口。在命令行窗口中输入“java–version”命令,显示安装的Java版本信息,则表明JavaJDK安装成功1.2.1安装JDK

bin目录1.2.2JDK目录介绍功能:存放Java的编译器、解释器等可执行文件。主要文件:java.exe:Java运行工具,用于启动Java应用程序。javac.exe:Java编译器,用于将Java源代码编译成字节码。jar.exe:打包工具,用于创建、查看和管理Java归档文件(JAR)。javadoc.exe:文档生成工具,用于从Java源代码生成HTML格式的API文档。javaw.exe:Java运行工具(窗口模式),与java.exe类似,但不会在命令行窗口中运行Java程序。

db目录1.2.2JDK目录介绍功能:JDK附带的轻量级数据库,名为Derby。用途:用于Java应用程序的数据库开发和测试。

include目录功能:存放调用系统资源的接口文件,主要是C语言的头文件。用途:这些头文件在Java程序通过JNI(JavaNativeInterface)调用本地代码时需要使用。

jre目录1.2.2JDK目录介绍功能:Java运行时环境的根目录。包含内容:Java虚拟机(JVM)、运行时的类包、Java运行启动器以及一个bin目录(包含Java运行工具和库文件)。用途:用于运行Java程序,但不包含开发环境中的开发工具。lib目录功能:存放Java的类库文件。包含内容:Java核心类库、支持JVM运行的函数库等。用途:这些类库在Java程序编译和运行时需要引用。

src.zip文件1.2.2JDK目录介绍功能:JDK提供的类的源代码压缩文件。用途:通过解压该文件,可以查看Java基础类的源代码,有助于学习和理解Java语言的实现原理。Java程序的开发1.3

利用记事本编写Java程序第一步,编写Java源程序由于JDK没有提供专门的编辑工具,所以可以通过任意文本编辑器编写Java源代码,例如记事本、notepad等。程序编辑完成后保存文件,然后将文件的扩展名改为“.java”1.3Java程序的开发图1-16

使用记事本编写程序

利用记事本编写Java程序第二步,编译程序生成字节码文件。使用Javac命令编译HelloWorld.java文件,并生成HelloWorld.class字节码文件。1.3Java程序的开发第三步,运行Java程序使用Java命令解释执行HelloWorld.class文件,在屏幕上显示“HelloWorld!”字符串,图1-17程序运行结果Java的运行机制1.4

1.编译阶段1.4Java的运行机制源代码:Java源代码是以.java为后缀的文件,其中包含了用Java语言编写的程序代码。Java编译器(javac):Java编译器用于将源代码编译成字节码(bytecode),这是Java程序的中间表示形式。字节码不依赖于特定的硬件或操作系统,因此具有跨平台性。编译后的字节码文件以.class为后缀。

2.运行阶段1.4Java的运行机制(1)Java虚拟机(JVM):JVM是Java程序的运行环境,负责执行Java字节码。JVM提供了平台独立性、安全性和自动内存管理等功能。(2)类加载器(ClassLoader):类加载器负责将字节码文件加载到JVM中。它按照父委托模型加载类,即先尝试从父类加载器中加载类,如果父类加载器无法加载,则再由子类加载器加载。(3)字节码验证器(BytecodeVerifier):在字节码被加载到JVM后,字节码验证器会验证其正确性和安全性,以确保不破坏Java语言的安全模型。(4)执行引擎(ExecutionEngine):执行引擎包括解释器和即时编译器(JITCompiler)。解释器逐行解释字节码并执行,而JIT编译器则将热点代码(经常执行的代码)编译成机器码,以提高运行时性能。(5)内存管理:JVM的内存管理包括堆(Heap)、栈(Stack)、方法区(MethodArea)和本地方法栈(NativeMethodStack)。

3.Java程序的执行流程1.4Java的运行机制(1)编写Java源代码:在Java开发环境中进行程序代码的编辑,生成.java文件。(2)编译Java源代码:使用Java编译器(javac)对.java文件进行编译,生成.class字节码文件。(3)运行Java程序:使用Java运行工具(java)运行.class文件。JVM加载字节码文件,并通过类加载器、字节码验证器、执行引擎等组件执行程序。(4)输出结果:程序执行完毕后,将结果输出到控制台或其他输出设备。Eclipse简介1.51.5.1Eclipse简介

Eclipse是一个基于Java的、开放源码的、可扩展的应用开发平台,它为编程人员提供了一流的Java集成开发环境(IDE),Eclipse最初由IBM公司开发,作为VisualAgeforJava的替代品,旨在提供一个更为灵活和可扩展的IDE。2001年11月,Eclipse被贡献给开源社区,并由非营利软件供应商联盟Eclipse基金会管理。Eclipse可以从网/downloads/上免费下载。该开发环境拥有多个下载版本,可以适用于Linux、MacOSX、Windows、Solaris操作系统,用户可以根据自身需要下载不同的版本。

主要功能与特点1.5.1Eclipse简介强大的插件机制Eclipse的插件机制使得它可以轻松地扩展和定制化,适应各种不同的开发需求。用户可以根据需要添加或删除插件,扩展IDE的功能。1多语言支持Eclipse支持其他多种编程语言,如C/C++、PHP、Python、JavaScript等。通过安装不同的插件,Eclipse可以支持不同的编程语言,为程序员提供了一个统一的开发环境。2集成开发环境Eclipse是一个集成了编辑、调试、测试等功能的IDE,使得程序员可以在一个环境中完成整个开发流程。它提供了丰富的工具和功能,如代码编辑器、调试器、性能分析器、代码质量检查工具、版本控制工具等,可以提高开发效率和代码质量。3跨平台性Eclipse可以在多个操作系统上运行,包括Windows、Linux、macOS等。这意味着用户可以在不同平台上使用相同的IDE进行软件开发,而不必担心兼容性问题。4开源免费Eclipse是开源免费软件,用户可以自由下载、使用和修改,没有任何费用和限制。51.5.2Eclipse的安装与启动步骤1步骤2步骤3步骤4访问Eclipse网址输入网址/downloads/,进入下载页面,单击DownloadePackages按钮步骤2步骤1步骤3步骤4进入下载页面根据电脑配置,选择相应版本进行下载1.5.2Eclipse的安装与启动步骤3步骤1步骤2步骤4下载Eclipse单击DOWNLOAD按钮1.5.2Eclipse的安装与启动步骤3步骤1步骤2步骤4选择安装路径用户可以根据需要选择要安装的路径,单击“下载”按钮1.5.2Eclipse的安装与启动步骤4步骤1步骤2步骤3安装完成Eclipse下载完成后无需安装直接运行,将该文件直接解压缩到指定的安装目录下即完成了安装工作,双击eclipse.exe文件即可运行1.5.2Eclipse的安装与启动1.5.3Eclipse编写Java程序的流程打开文件安装目录,运行eclipse.exe时需要选择工作区Workspace,即保存程序源码和字节码文件的目录。用户可以使用默认路径,也可以根据需要自行修改。

运行Eclipse1.5.3Eclipse编写Java程序的流程步骤1步骤2步骤3步骤4新建Java项目(1)启动Eclipse,选择项目存储的路径,进入主界面后,从菜单选择File→New→Project。(2)从对话框中选择JavaProject,然后单击Next按钮。步骤2步骤1步骤3步骤4新建Java项目在新弹出的对话框中,在ProjectName文本框的位置输入类名HelloWorld,单击Finish按钮。1.5.3Eclipse编写Java程序的流程步骤3步骤1步骤2步骤4新建Java程序在创建的项目HelloWorld上单击右键,选择New→Class,新建Java类1.5.3Eclipse编写Java程序的流程步骤4步骤1步骤2步骤3新建Java程序在新弹出的对话框中,在Package文本框的位置输入包名,Java包的名字都是由小写单词组成的。在Name文本框中输入类名HelloWorld,首字母大写(多词的都是首字母大写)。选中加入Main方法的复选框。1.5.3Eclipse编写Java程序的流程步骤5步骤6步骤7步骤8新建Java程序单击Finish按钮,在HelloWorld项目中生成HelloWorld.java文件1.5.3Eclipse编写Java程序的流程步骤6步骤8步骤5步骤7运行Java程序在代码编辑器中写入如下代码:1.5.3Eclipse编写Java程序的流程packagecom.hello;publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("HelloWorld!");}}步骤7步骤5步骤6步骤8运行Java程序在项目资源管理器中右键单击HelloWorld项目,在弹出的快捷菜单中选择RunAs→JavaApplication,或者单击工具栏上的快捷图标1.5.3Eclipse编写Java程序的流程步骤8步骤5步骤6步骤7设置允许远程连接程序运行结果如图所示。1.5.3Eclipse编写Java程序的流程

Eclipse程序编写界面1.5.3Eclipse编写Java程序的流程感

听《Java面向对象程序设计案例教程(第2版)》第2章Java编程基础《Java面向对象程序设计案例教程(第2版)》目录/Contents2.12.22.3Java基本语法Java中的常量与变量数据类型2.4

数组思政要点/Point守规则与纪律

遵守编程规则,培养严谨细致的逻辑思维和规则意识。稳定性与灵活性

理解稳定与变化的辩证关系,能够适应环境的变化,灵活应对各种挑战。分类与规划

Java中的数据类型丰富多样,引导学生认识到,在生活中也需要进行分类和规划,以便更好地管理自己的时间和资源。团队协作与分工

引导学生体会团队协作与分工的重要性,培养有序规范的工作习惯,提高整体效率。Java基本语法2.1Unicode字符集是一个国际标准,旨在统一世界上所有的书写系统,使计算机能够处理和存储各种语言的文本。Java语言从设计之初就采用了Unicode字符集,这使得Java程序能够跨平台、跨语言地运行,无需担心字符编码问题。2.1.1Unicode字符集Unicode字符集是不断扩展的,能够容纳新的字符和符号。3.扩展性Unicode支持几乎所有语言的字符,使得Java程序能够处理多语言文本,满足全球化需求。1.全球化支持使用Unicode字符集,可以确保在不同平台和设备上显示的文本内容一致。2.一致性0201Unicode的优势032.1.2Java程序的基本格式

Java程序结构Java程序的基本结构包括类定义、方法定义和语句。每个Java程序都至少包含一个类,而类中可以包含多个方法和变量。

类定义类(Class)是Java程序的基本单位。一个类定义了对象的属性和行为。类定义通常包括类名、修饰符(如public)、继承的父类(如果有)以及实现的接口(如果有)。

方法定义方法(Method)是类中的函数,用于执行特定的操作。方法定义包括方法名、返回类型、参数列表以及方法体。方法体是包含实际代码的块,用花括号({})括起来。2.1.2Java程序的基本格式publicclassHelloWorld{//main方法是Java程序的入口点publicstaticvoidmain(String[]args){//打印输出Hello,World!到控制台System.out.println("Hello,World!");}}语句语句(Statement)是Java程序中的基本执行单元。每条语句都以分号(;)结尾。常见的语句包括赋值语句、条件语句、循环语句等。2.1.2Java程序的基本格式1.Java程序是大小写敏感的,因此类名、方法名和变量名在书写时应保持一致。2.每个Java程序都至少包含一个main方法,作为程序的入口点。3.在编写Java程序时,应遵循良好的编程规范,如使用有意义的变量名、注释代码等。语句注意事项:2.1.3Java中的注释注释1.单行注释符//单行注释是最常用的注释,通常用于注释可以显示在一行内的文本,注释内容从//开始到本行结尾。2.多行注释符 

/*…*/多行注释以“ /* ”为开头,以“ */ ”为结尾,中间内容为注释的内容。该注释符既可以用于多行注释,也可以用于单行注释。System.out.println("HelloWorld!");//输出打印HelloWorld字符串/*这是多行注释这是多行注释*/2.1.3Java中的注释注释3.文档注释符

 /**…*/文档注释以“/** ”开头以“ */ ”结尾,注释中包含一些说明性的文字及一些JavaDoc标签,后期可以用来自动生成文档。/***这个类演示了文档注释*@authorXXX*@version1.2*/2.1.4Java中的标识符(1)标识符可以由字母、数字、下划线( _ )和美元符( $ )组成,但是不能包含@、%、空格等其他的特殊符号,不能以数字开头。例如:123name就是不合法的标识符。(2)标识符不能是Java关键字和保留字(Java预留的关键字,或者以后升级版本中有可能作为关键字),但可以包含关键字和保留字。例如:不可以使用void作为标识符,但是可以使用Myvoid。(3)标识符严格区分大小写,所以number和Number是两个不同的标识符。(4)标识符的命名最好能反映出其作用,做到见名知意。标识符就是用于Java程序中常量、变量、类、方法等命名的符号。使用标识符时,需要遵守以下几条规则:2.1.5Java中的关键字Java语言中有一些具有特殊用途的词被称为关键字,但不能当作一般的标识符使用。Java关键字均用小写字母表示。abstractbooleanbreakbytecasecatchcharclasscontinuedefaultdodoubleelseextendsfalsefinalfinallyfloatforifimplementsimportinstanceofintinterfacelongnativenewnullpackageprivateprotectedpublicreturnshortstaticsuperswitchsynchronizedthisthrowthrowstransienttruetryvoidvolatilewhileJava中的常量与变量2.2常量是指在程序上始终保持不变的量。也就是说,一旦被赋值,就不能再更改了。习惯上,常量名使用大写字母,用关键字final修饰。声明常量的语法格式如下:final数据类型常量名=值2.2.1常量的定义例如:

finaldoublePI=3.1415;

finalStringCOURSE="Java"在程序中,如果某个值需要被重复使用多次,就可以将其设置为常量。一方面可以省去重复输入同一个数值的麻烦,另一方面当这个值需要修改时,只需要修改一次。变量是Java程序中的基本存储单元,是内存中的一块空间,能够存放数据和信息。它的定义包括变量名、变量类型和作用域几个部分。2.2.2变量变量名可以由字母、数字、下划线( _ )、美元符( $ )组成,但是不能以数字开头变量的命名规范2.2.2变量(1)驼峰法,即第一个单词首字母小写,其后单词首字母大写,如myName。(2)尽量简短且清楚,见名知意,如stuName“学生姓名”。(3)长度没有限制,但区分大小写,如price和Price是两个不同的变量。变量的命名习惯2.2.2变量变量的初始化Java语言规定,变量在使用前必须先声明,包括声明变量的类型、名称,还可以为其赋初值。声明变量的语法格式如下:类型变量名[=初始值]例如:

inti;chara='A';doublenumber=15;如果声明的几个变量属于同一类型,那么可以一起声明,变量之间用逗号“ , ”隔开。例如:inta,b,c;数据类型2.32.3数据类型Java是一种强类型的语言,也就是说,必须为每一个变量声明一种类型。Java的数据类型可以分为基本数据类型和引用数据类型,本节主要介绍这些数据类型。2.3.1

基本数据类型整型数据表示没有小数部分的数值,可以用十进制、八进制和十六进制表示,一般情况下使用十进制表示,并且它允许是负数。整数类型类

型存储需求取值范围byte1字节-27~27-1short2字节-215~215-1int4字节-231~231-1long8字节-263~263-12.3.1

基本数据类型浮点型数据表示有小数部分的数值。在Java中有两种浮点类型,其中float表示单精度,double表示双精度。浮点类型类

型存储需求取值范围float1字节-27~27-1double2字节-215~215-1double表示的数值精度是float类型的两倍,大部分应用程序都采用double类型。float类型的数值需要在尾部加后缀f或F,例如1.23f。没有后缀的浮点数值(如1.23)默认为double类型,当然也可以在数值尾部加后缀D(如1.23D)。2.3.1

基本数据类型整型数据表示没有小数部分的数值,可以用十进制、八进制和十六进制表示,一般情况下使用十进制表示,并且它允许是负数。整数类型类

型存储需求取值范围byte1字节-27~27-1short2字节-215~215-1int4字节-231~231-1long8字节-263~263-12.3.1

基本数据类型Java语言中,char用来表示单个字符,字符型数据必须用单引号括起来,例如 'a'、'A'等。Java中还有一些用于表示特殊字符的转义字符,如表所示。字符类型转义字符名

称转义字符名

称\b退格\"双引号\t制表\'单引号\n换行\\反斜杠\r回车

2.3.1

基本数据类型布尔型(boolean)包括两个值,即false(假)和true(真),常用于程序的比较和流程控制。基本数据类型在Java中是不可变的,即一旦赋值,其值就不能改变(除非重新赋值)。布尔类型2.3.2

引用数据类型类(Class)在Java中是通过引用指向对象的实例,这些对象存储在堆内存中。引用数据类型包括类(Class)、接口(Interface)、数组(Array)以及枚举(Enum)。当创建一个引用数据类型的变量时,实际上是创建了一个引用,该引用指向存储实际数据的内存位置。用户自定义的类,如String、ArrayList等,以及用户自己定义的类。类的实例通过new关键字创建,存储在堆内存中,而引用(即对象的地址)存储在栈内存中。接口(Interface)接口是一种特殊的引用类型,定义了一组方法,但不实现它们。类可以实现接口,从而提供接口中定义的方法的具体实现。2.3.2

引用数据类型数组(Array)数组是固定大小的、同类型元素的集合。数组通过索引访问,索引从0开始。字符串(String)String类就是一种引用数据类型,用于表示字符串。2.3.3

基本类型与引用类型的区别1.

存储位置基本类型存储在栈内存中。引用类型存储的是对象的引用(即对象的地址),对象本身存储在堆内存中。5.

传递方式基本类型在方法调用时是按值传递的。引用类型在方法调用时是按引用传递的,但传递的是引用的副本,这意味着方法内部对引用的改变(如指向新的对象)不会影响外部引用,但对对象本身的修改(如修改对象的属性)是可见的。4.

可变性基本类型的值是不可变的(除非重新赋值)。引用类型的对象是可变的(对象的属性可以修改)。3.

默认值基本类型有默认值(如int的默认值为0)。引用类型的默认值为null,表示没有指向任何对象。2.

内存分配基本类型在声明时自动分配内存。引用类型在创建对象时分配内存(使用new关键字)。2.3.4

数据类型转换自动类型转换在运行程序时,经常需要将一种类型的数据转换为另一种类型的数据,Java语言提供了这种数据类型相互转换的机制。数据类型的转换分为两种:自动类型转换和强制类型转换。数据类型可以由低字节向高字节进行自动转换,不会损失数据精度。

例如:inta=5;doubleb=16.5;doublec=a+b;在上述代码中,在运行时首先把a自动转换为double类型,然后与b相加,最后赋值给c。2.3.4

数据类型转换强制类型转换当高字节数据转换为低字节数据时,就需要用到强制类型转换,转换后可能导致数据丢失精度。强制类型转换的语法格式是在括号中给出将要转换的目标类型,后面紧跟待转换的变量名。强制类型转换的语法格式如下:

(数据类型)变量名在上述代码中,a是double类型,赋值给b的时候必须强制转换为int类型。doublea=15.5;intb=(int)a;System.out.println(a);System.out.println(b);例如:

数组2.42.4.1数组的声明数组是一种数据结构,用于存储相同类型的数据元素的集合。数组中的每个元素都可以通过索引进行访问。数组在使用之前必须先声明,也就是定义数组元素的类型、数组的名称和维数。数组的声明格式有两种,分别是:

数据类型[]数组名;

数据类型数组名[];注意:数组声明时,并没有在内存中为数组分配存储空间,因此方括号中不能有数组元素的个数。必须先使用new关键字创建数组对象,才能够访问数组中的元素。int[]scores; //定义存储分数的数组,类型为整型doubleheight[]; //定义存储身高的数组,类型为浮点型String[]names; //定义存储姓名的数组,类型为字符串其中,数组名可以是任意合法的变量名,数据类型可以是基本数据类型或者引用数据类型。例如:

2.4.2数组的创建创建数组,需要使用new关键字为数组分配存储空间,语法格式如下:

数组名=new数据类型[数组长度]也可以将以上两步进行合并,在声明数组的同时创建数组,例如:int[]scores; //声明一个整型数组scoresscores=newint[5]; //定义数组scores能够存放5个整型元素Stringnames[]; //声明一个字符串数组namesnames=newString[3]; //定义数组names能够存放3个字符串元素数组长度也就是数组中能存放元素的个数,例如:

intint[]scores=newint[5];Stringnames[]=newString[3];2.4.3数组的初始化数组的初始化可以在声明时直接进行,也可以单独进行。在创建数组后,就可以为每个数组元素进行赋值,例如:int[]scores; scores=newint[5];scores[0]=95;scores[1]=93;scores[2]=80;scores[3]=86;scores[4]=79;2.4.3数组的初始化也可以用以下方式为数组元素赋值,数组长度由“{}”中的元素个数决定。例如://声明并初始化整型数组int[]scores={95,93,80,86,79}//声明并初始化字符串数组String[]stringArray={"Hello","World","Java"};2.4.4数组的长度数组的长度即数组中可以存储的元素数量。可以通过其length属性获取,例如:int[]array={1,2,3,4,5};System.out.println("数组的长度是:"+array.length);//输出:数组的长度是:52.4.5数组元素的使用创建数组后,数组中的元素可以通过索引进行访问和修改,格式为:

数组名[下标]可以对赋值后的数组元素进行操作和处理,如获取并输出数组中元素的值:

int[]scores={95,93,80,86,79}System.out.print("scores数组中第1个元素的值:"+scores[0]);2.4.5数组元素的使用运行时会报错,如图所示。注意:数组下标是从0开始的,也就是说,scores[0]代表数组中的第一个元素,最后一个数组元素的下标为“数组长度-1”。使用数组时要注意下标不能超出范围,如果超出范围,在程序运行时,系统就会抛出数组下标越界异常。例如:

int[]scores=newint[2];

scores[2]=85;2.4.5数组元素的使用【例3-1】循环打印输出数组中的数字。publicclassTest{publicstaticvoidmain(String[]args){//定义一个长度为4的数组int[]scores={78,91,85,88};//循环打印输出数组中的元素,数组最大长度为scores.lengthfor(inti=0;i<scores.length;i++){System.out.println("数组中第"+(i+1)+"个元素的值是"+scores[i]);}}}2.4.5数组元素的使用程序运行结果如图所示其中,数组名具有一个属性length,用于获取数组的长度,其用法为:

数组名.length如上述代码中的scores.length的值为4。2.4.5数组元素的使用【例3-2】定义一个数组hobbys,其值为music、sports、game,循环打印输出。publicclassTest{publicstaticvoidmain(String[]args){//定义一个长度为3的数组String[]hobbys=newString[3];hobbys[0]="music";hobbys[1]="sports";hobbys[2]="game";//循环打印输出数组中的元素for(inti=0;i<hobbys.length;i++){System.out.println(hobbys[i]);}}}程序运行结果如图所示2.4.6二维数组二维数组是数组的数组。其实Java只有一维数组,但是由于数组可以存放任意类型的数据,当数组中的每个元素类型也是数组时,这个数组就被称为多维数组。最常见的是二维数组,可以把二维数组看作一个矩阵。

数据类型[][]数组名=new数据类型[行的个数][列的个数];数据类型[][]数组名;数组名 = new数据类型[行的个数][列的个数];二维数组的创建格式为:二维数组的创建或者:2.4.6二维数组二维数组的赋值和一维数组类似,可以通过下标来逐个赋值,索引从0开始。语法格式如下:

数值类型[][]数组名={{值1,值2…},{值11,值22…},{值21,值22…}};int[][]number=newint[2][3];number[0][0]=11;number[0][1]=32;number[0][2]=15;例如:也可以在声明数组的同时直接赋值。语法格式如下:

数组名[行的索引][列的索引]=值;

例如:

int[][]number={{1,2,3},{4,5,6}};2.4.6二维数组二维数组的访问和输出同一维数组一样,只是多了一个下标而已。二维数组的索引也是从0开始,第一个索引表示行,第二个索引表示列。例如:int[][]number={{1,2,3},{4,5,6}};//访问二维数组元素System.out.println("第一行第二个元素是:"+number[0][1]);//输出:第一行第二个元素是:2在循环输出时,需要里面再内嵌一个循环,即使用二重循环来输出二维数组中的每一个元素。二维数组的访问2.4.5数组元素的使用【例3-2】定义一个数组hobbys,其值为music、sports、game,循环打印输出。publicclassTest{publicstaticvoidmain(String[]args){//定义一个长度为3的数组String[]hobbys=newString[3];hobbys[0]="music";hobbys[1]="sports";hobbys[2]="game";//循环打印输出数组中的元素for(inti=0;i<hobbys.length;i++){System.out.println(hobbys[i]);}}}程序运行结果如图所示2.4.5数组元素的使用【例3-2】定义一个数组hobbys,其值为music、sports、game,循环打印输出。publicclassTest{publicstaticvoidmain(String[]args){//定义一个两行三列的二维数组并赋值int[][]num={{1,2,3},{4,5,6}};//定位行for(inti=0;i<num.length;i++){//定位每行的元素for(intj=0;j<num[i].length;j++){//依次输出每个元素System.out.print(num[i][j]);}//实现换行System.out.println();}}}程序运行结果如图所示感

听《Java面向对象程序设计案例教程(第2版)》第3章运算符与流程控制语句《Java面向对象程序设计案例教程(第2版)》目录/Contents3.13.23.3Java中的运算符选择结构语句循环结构语句3.4

跳转语句思政要点/Point实践能力

通过Java编程实践,培养学生的动手能力和解决问题的能力。持续学习

编程技术日新月异,鼓励学生保持持续学习的态度,不断提升自我。团队协作

编程往往需要团队合作,培养学生团队协作精神和沟通能力。创新思维

鼓励学生尝试不同的编程方法,培养创新思维和解决问题的能力。Java中的运算符3.1算术运算符主要用于进行基本的算术运算,如加法、减法、乘法、除法等。Java中常用的算术运算符如表2-5所示。3.1.1算术运算符算术运算符名

称举

例+加15+7=22-减、取反15-7=8*乘15*7=105/除15/7=2%取余15%7=1++自增1inti=7;i++--自减1inti=7;i--【例3-1】算术运算符的程序实例。publicclassTest{publicstaticvoidmain(String[]args){intage1=24;intage2=18;intage3=36;intage4=27;intsum=age1+age2+age3+age4;doubleavg=sum/4;intminus=age1-age2;intnewAge=--age1;System.out.println("年龄总和:"+sum);System.out.println("平均年龄:"+avg);System.out.println("年龄差值:"+minus);System.out.println("自减后的年龄:"+newAge);}}程序运行结果如图所示3.1.1算术运算符【例3-2】“++”在操作数左边的程序实例。publicclassTest{publicstaticvoidmain(String[]args){inta=7;intb=++a;//++出现在左边System.out.println("a:"+a); //a先自增,再赋值给变量bSystem.out.println("b:"+b);}}程序运行结果如图所示3.1.1算术运算符【例3-3】“++”在操作数右边的程序实例。publicclassTest{publicstaticvoidmain(String[]args){inta=7;intb=a++; //++出现在右边System.out.println("a:"+a); //a先赋值给变量b,然后再自增System.out.println("b:"+b);}}程序运行结果如图所示3.1.1算术运算符3.1.2赋值运算符赋值运算符是指为变量或常量指定数值的符号。比如说可以使用“=”将右边的表达式结果赋值给左边的操作数。Java支持的常用赋值运算符如表2-8所示。赋值运算符名

称举

例=赋值a=7是把7赋值给a+=加等于a+=b等价于a=a+b-=减等于a-=b等价于a=a-b*=乘等于a*=b等价于a=a*b/=除等于a/=b等价于a=a/b%=模等于a%=b等价于a=a%b【例3-4】赋值运算符的程序实例。publicclassTest{publicstaticvoidmain(String[]args){

inta=10;

intb=5;

//基本赋值运算符

a=b;

System.out.println("a=b;a="+a);//输出:a=5

//复合赋值运算符

a+=b;//相当于a=a+b;

System.out.println("a+=b;a="+a);//输出:a=103.1.2赋值运算符【例3-4】赋值运算符的程序实例。a-=b;//相当于a=a-b;System.out.println("a-=b;a="+a);//输出:a=5

a*=b;//相当于a=a*b;System.out.println("a*=b;a="+a);//输出:a=25

a/=b;//相当于a=a/b;System.out.println("a/=b;a="+a);//输出:a=5

//注意:当使用/=运算符时,如果b为0,将抛出ArithmeticException异常//为了避免异常,可以在这里添加异常处理或使用条件语句检查b的值//但为了演示目的,我们在这里直接进行除法运算,假设b不为03.1.2赋值运算符【例3-4】赋值运算符的程序实例。

a=20;//重新赋值给a以进行模运算演示a%=b;//相当于a=a%b;System.out.println("a%=b;a="+a);//输出:a=0(因为20除以5的余数是0)}}3.1.2赋值运算符程序运行结果如图所示3.1.3比较运算符比较运算符用于判断两个数据的大小。例如:大于、等于、不等于的比较结果是一个布尔值(true或false)。Java中常用的关系运算符如表2-6所示。关系运算符名

称举

例结

果>大于a=7;b=5;a>b;true<小于a=7;b=5;a<b;false>=大于等于a=7;a>=5;true<=小于等于a=7;b=5;a<=b;false==等于a=7;b=5;a==b;false!=不等于a=7;b=5;a!=b;true注意:(1)

“>”、“<”、“>=”、“<=”只支持左右两边的操作数为数值类型。(2)

“==”、“!=”两边的操作数既可以是数值类型,也可以是引用类型。【例3-5】关系运算符的程序实例。publicclassTest{publicstaticvoidmain(String[]args){inta=16;doubleb=9.5;Stringstr1="hello";Stringstr2="world";System.out.println("a等于b:"+(a==b));System.out.println("a大于b:"+(a>b));System.out.println("a小于等于b:"+(a<=b));System.out.println("str1等于str2:"+(str1==str2));}}程序运行结果如图所示3.1.3比较运算符3.1.4逻辑运算符逻辑运算符主要用于进行逻辑运算,Java中常用的逻辑运算符如表2-7所示。注意:“&”和“&&”都执行的是“与”运算,“|”和“||”都执行的是“或”操作。不同之处在于“&”和“|”在执行操作时,运算符左右两边的表达式首先被执行,然后再对结果进行与、或的运算。“&&”和“||”在执行操作时,如果从左边的表达式中得到的操作数能确定运算结果,则不再对右边的表达式进行运算,从而提高运算速度。逻辑运算符名

称举

例结

果&或

&&与a&b或a&&b如果a与b都为true,则返回true|或

||或a|b或a||b如果a与b任一为true,则返回true!非!a如果a为false,则返回true,即取反^异或a^b如果a与b有且只有一个为true,则返回true【例3-6】a、b、c、d四个人投票,根据代码分析运行结果。publicclassTest{publicstaticvoidmain(String[]args){booleana=true; //a同意booleanb=false; //b反对booleanc=false; //c反对booleand=true; //d同意System.out.println("a&&b:"+(a&&b));System.out.println("a||b:"+(a||b));System.out.println("!a:"+(!a));System.out.println("c^d:"+(c^d));}}程序运行结果如图所示3.1.4逻辑运算符3.1.5运算符的优先级在一个表达式中可能同时含有多个运算符,运算符的优先级决定了运算的先后次序,优先级高的先进行运算,然后执行优先级较低的。在优先级相同的情况下,按照结合性来决定运算的顺序,运算符的结合性决定运算是从左到右执行,还是从右到左执行。优先级运

符结合性1()[]

.从左到右2!

+ (正)

– (负)~++--从右到左3*

/

%从左到右4+ (加)

– (减)从左到右5<<

>>

>>>从左到右6<

<=

>

>=

instanceof从左到右7==

!=从左到右8&从左到右9^从左到右10|从左到右11&&从左到右12||从左到右13?:从右到左14=

+=

-=

*=

/=

%=

&=

|=

^=~=

<

<=

>

>=

>>>=从右到左【例3-7】运算符的优先级运行实例。publicclassTest{publicstaticvoidmain(String[]args){intm=5;intn=7;intx=(m*8/(n+2))%m;System.out.println("m:"+m);System.out.println("n:"+n);System.out.println("x:"+x);}}程序运行结果如图所示3.1.5运算符的优先级选择结构语句3.23.2.1if条件语句1.单if语句当条件成立时,执行代码块中的内容,否则程序结束。if(条件){条件成立时执行的代码}这里注意,如果if条件成立时的执行语句只有一条,则可以省略大括号。但如果执行语句有多条,那么大括号就是不可或缺的。语法:

程序执行过程:

【例3-8】判断变量age的值,如果大于18,则提示“成年”。publicclassTest{ publicstaticvoidmain(String[]args){ intage=25; if(age>=18){ System.out.println("成年"); }}}程序运行结果如图所示3.2.1if条件语句3.2.1if条件语句2.if-else语句该语句的操作比if语句多了一步。当条件成立时,则执行if部分的代码块1;当条件不成立时,则进入else部分,执行代码块2。if(条件){代码块1;}else{代码块2;}语

法:

程序执行过程:

【例3-9】判断变量age的值,如果大于18,则提示“成年”,否则提示“未成年”。publicclassTest{publicstaticvoidmain(String[]args){intage=15;if(age>=18){System.out.println("成年");}else{System.out.println("未成年");}}}程序运行结果如图所示3.2.1if条件语句3.2.1if条件语句3.多重if语句在条件1不满足的情况下,会进行条件2的判断;当前面的条件均不成立时,才会执行else块内的代码。if(条件1){代码块1;}elseif(条件2){代码块2;}else{代码块3;}语法:

程序执行过程:

【例3-10】应用多重if语句实现如下代码。功能:如果年龄大于60岁,则提示“老年”;如果年龄介于40岁至60岁之间,则提示“中年”;如果年龄介于18岁至40岁之间,则提示“少年”;18岁以下则提示“童年”。publicclassTest{publicstaticvoidmain(String[]args){intage=25;if(age>60){System.out.println("老年");}elseif(age>40){System.out.println("中年");}elseif(age>18){System.out.println("少年");}else{System.out.println("童年");}}}3.2.1if条件语句程序运行结果如图所示3.2.1if条件语句4.嵌套if语句只有当外层if的条件成立时,才会判断内层if的条件。if(条件1){if(条件2){代码块1;}else{代码块2;}}else{代码块3;}语

法:

程序执行过程:

【例3-11】应用嵌套if语句实现如下代码。功能:判断一个数字是正数、负数还是零,并对于正数,将进一步判断它是奇数还是偶数。publicclassTest{publicstaticvoidmain(String[]args){intnumber=5;

//首先判断数字是正数、负数还是零if(number>0){System.out.println(number+"是正数");//对于正数,进一步判断是奇数还是偶数if(number%2==0){System.out.println(number+"是偶数");}else{System.out.println(number+"是奇数");}}elseif(number<0){System.out.println(number+"是负数");}else{System.out.println(number+"是零");}}程序运行结果如图所示3.2.1if条件语句3.2.2三元运算符在Java中,三元运算符(也称为条件运算符)是一种简洁的写法,用于根据一个布尔表达式的值来选择两个值中的一个。它的语法格式如下:布尔表达式?表达式1:表达式2运算过程:如果布尔表达式的值为true,则返回“表达式1”的值;如果值为false,则返回“表达式2”的值。例如:Stringexample=(7>9)?"7大于9":"7不大于9"System.out.println(example);在上述例子中,表达式7 > 9的值显然为false,所以返回表达式2的值,即“7不大于9”。【例3-12】三元运算符的程序实例。publicclassTest{publicstaticvoidmain(String[]args){inta=10;intb=20;

//使用三元运算符判断a和b的大小,并返回较大的值intmax=(a>b)?a:b;

System.out.println("较大的值是:"+max);}}程序运行结果如图所示3.2.2三元运算符3.2.3switch条件语句当面对多分支结构问题时,可以使用嵌套if语句,但是当嵌套的层数太多,结构比较复杂时,使用switch语句更加简洁明了。switch(表达式){case值1:执行代码块1break;case值2:执行代码块2break;… case值n:执行代码块nbreak; default:默认执行的代码}语

法:

程序执行过程:

switch语句的执行过程是,当switch后表达式的值和case语句后的值相同时,从该位置开始向下执行,直到遇到break语句或者switch语句块结束。如果没有匹配的case语句则执行default块的代码。3.2.3switch条件语句注意:(1) switch后面小括号中表达式的值必须是整型或字符型。(2)在同一个switch语句中没有两个相同的case常量。(3)  case后面的值可以是常量数值,如1、2;也可以是一个常量表达式,如2+2;但不能是变量或带有变量的表达式,如a*2。(4)  case匹配后,执行匹配块里的程序代码,如果没有遇见break会继续执行下一个case块的内容,直到遇到break语句或者switch语句块结束。

(5)可以把功能相同的case语句合并起来,如:case1:

case2:System.out.println("春天");(6) default块可以出现在任意位置,也可以省略。语

法:

【例3-13】编写程序,判断季节。其中3~5月是春天,6~8月是夏天,9~11月是秋天,12、1、2月是冬天。importjava.util.Scanner;publicclassTest{publicstaticvoidmain(String[]args){Scannerscan=newScanner(System.in);System.out.println("输入月份:");intmonth=scan.nextInt();switch(month){case3:case4:case5:System.out.println("春天");break;case6:case7:case8:System.out.println("夏天");break;

程序运行结果如图所示

case9:case10:case11:System.out.println("秋天");break;default:System.out.println("冬天");}}}3.2.3switch条件语句循环结构语句3.33.3.1while语句Java的循环语句有while循环、do-while循环和for循环。一般情况下,while和do-while循环用于处理循环次数不确定的情况,for循环用于处理循环次数确定的情况。while(判断条件){循环体;}语

法:

程序执行过程:

第1步,判断while后面的条件是否成立。第 2 步,当条件成立时,执行循环内的操作代码,然后重复执行第1、2步,直到循环条件不成立。特点:先判断,后执行。【例3-14】顺序输出数字1~10。publicclassTest{publicstaticvoidmain(String[]args){inti=1; //初始化变量 while(i<11){ //设置循环条件,当变量小于等于11时执行循环System.out.println(i); //输出变量的值i++; //对变量加1,以便于进行下次循环条件判断}}}程序运行结果如图所示3.3.1while语句3.3.2do-while语句[初始化]do{循环体;循环变量控制;}while(判断条件);语

法:

程序执行过程:

第1步,先执行一遍循环操作,然后判断循环条件是否成立。第2步,如果条件成立,则重复执行第1、2步,直到循环条件不成立。特点:先执行,后判断。由此可见,do-while语句保证循环至少被执行一

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论