Java程序设计基础教程(AI助学)(慕课版) 课件全套 方柯 单元1-13 程序设计语言入门 - AI辅助编程_第1页
Java程序设计基础教程(AI助学)(慕课版) 课件全套 方柯 单元1-13 程序设计语言入门 - AI辅助编程_第2页
Java程序设计基础教程(AI助学)(慕课版) 课件全套 方柯 单元1-13 程序设计语言入门 - AI辅助编程_第3页
Java程序设计基础教程(AI助学)(慕课版) 课件全套 方柯 单元1-13 程序设计语言入门 - AI辅助编程_第4页
Java程序设计基础教程(AI助学)(慕课版) 课件全套 方柯 单元1-13 程序设计语言入门 - AI辅助编程_第5页
已阅读5页,还剩683页未读 继续免费阅读

下载本文档

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

文档简介

单元1程序设计语言入门Java程序设计基础教程(AI助学)(慕课版)在当今数字化时代,编程不仅是一种技能,更是一把解锁无限可能的“钥匙”。在校园生活中可能会遇到日常课程表安排混乱、食堂排队等待时间过长、社团活动信息传递不畅等问题,这些琐碎的问题都可以通过编程来解决。例如,可以利用Java编写一款校园活动管理应用,实现活动信息的及时发布和参与者的有效管理,从而提高校园生活的便利性。本单元将介绍Java的发展和特点,讲解Java开发环境的搭建。通过系统学习和实践,读者将逐步掌握Java编程的基本技能,并能进行简单的应用开发。本章导读Thechapter’sintroduction目录导航1.1

Java概述1.2搭建开发环境1.3

Java应用程序开发工具1.4商业实例:“银行提款机”项目——开发环境准备1.5综合实训:使用记事本及PowerShell窗口输出“Helloworld”1.1.1Java的起源Java的起源可以追溯到20世纪90年代初,由Sun公司(现在是Oracle公司的一部分,以下仍称其为Sun公司)的工程师们共同开发。其最初的目标是创建一种能够在各种计算设备上运行的编程语言,以满足不断发展的信息技术需求。起初,这个项目被命名为“Oak”,这个名称来源于Sun公司附近的一棵橡树。然而,由于商标问题,Sun公司决定将这个项目更名为“Java”。Java的设计目标是使代码具有简单、可移植、高性能、安全和可靠性高等特点。为了实现这些目标,Java采用了面向对象的编程方式,并提供了一些实用的特性,使得开发者可以更加专注于业务逻辑的实现,而不必过多关注底层细节。Java正式发布于1995年,这一年被认为是Java的诞生元年。Java一经发布就受到了广泛的关注和认可。它的跨平台特性使得开发者只须编写一次代码,就可以在不同的操作系统和设备上运行,极大地促进了Java的普及和应用。1.1.2Java的发展詹姆斯·戈斯林(JamesGosling)带领团队开始开发Oak,这是Java的前身。1991年01Oak更名为Java,并于当年5月正式发布。这标志着Java的诞生。1995年02Java5发布,进行了Java的重大更新,引入了泛型、枚举、自动装箱/拆箱、可变参数和注解等。2004年03Java8发布,带来了Java历史上最重要的改变之一,引入了Lambda表达式、StreamAPI、新的日期和时间API,以及对默认方法(DefaultMethod)的支持。2014年04Java11发布,它在性能、安全性和稳定性方面进行了改进,并提供了一些新的功能。2018年9月05Java17发布,它引入了一些新的功能并对旧有功能进行了改进,包括SealedClasses的改进、PatternMatchingforSwitch的改进、新的垃圾回收器(ZGC的改进)等。2021年9月06Java21发布,这是一个非常重要的、里程碑式的版本。2023年9月07Java25发布,引入了模块导入声明,紧凑源文件等新特性。2025年9月081.1.3Java的特性跨平台性:Java具有“一次编写,到处运行”(WriteOnce,RunAnywhere)的特性面向对象:Java是一种面向对象的编程语言,支持封装、继承、多态等面向对象特性健壮性:Java在设计上强调安全性和可靠性,可以通过自动内存管理(垃圾回收机制)和异常处理有效防止内存泄漏和程序崩溃,提高程序的健壮性安全性:Java提供了一系列安全特性,如类加载器、安全管理器和沙箱模型,可以防止恶意代码对系统造成危害支持多线程:Java支持多线程编程,提供了丰富的线程操作应用程序接口高性能:JVM的即时编译(Just-In-TimeCompilation)技术和优化技术使得Java在性能上逐渐接近本地编译的语言,且具有较高的运行效率开源生态系统:自Java6开始,Java成为开源软件,Sun公司将Java发布为OpenJDK项目丰富的类库:Java拥有广泛的标准类库(JavaAPI),覆盖网络、数据库、图形用户界面(GraphicalUserInterface,GUI)、数据处理等方面,简化了开发过程,提高了开发效率可扩展性:Java支持模块化编程,可以根据项目的需求进行模块化开发,这使得程序更易扩展和维护社区支持:Java拥有庞大的开发者社区,提供了丰富的学习资源、文档和问题解答,这使得开发者能够更轻松地学习和应用Java技术目录导航1.1

Java概述1.2搭建开发环境1.3

Java应用程序开发工具1.4商业实例:“银行提款机”项目——开发环境准备1.5综合实训:使用记事本及PowerShell窗口输出“Helloworld”1.2.1认识JDK与JRE在学习Java编程之前,需要了解Java开发工具包(JavaDevelopmentKit,JDK)和Java运行环境(JavaRuntimeEnvironment,JRE),其中JDK包含JRE和开发工具。JDK与JRE的关系如图1.1所示。图1.1JDK与JRE的关系1.2.1认识JDK与JRE1.JREJRE是Java应用程序运行所需的最小环境。它包含JVM和Java核心类库,用于执行Java应用程序。JRE并不包含用于开发Java应用程序的工具,仅提供Java应用程序的运行支持。当用户只需要运行Java应用程序或Java小程序(Applet)时,安装JRE即可。JRE的主要组件如下。①JVM:用于解释和执行Java字节码,并将其转换成特定操作系统的机器码。②Java核心类库:包含一系列Java标准类和方法,提供了Java应用程序所需的核心功能,如输入输出(Input/Output,I/O)、网络、数据结构、GUI等。1.2.1认识JDK与JRE2.JDKJDK是Java开发者用于开发、编译和调试Java应用程序的软件包。它是Java应用程序开发的完整工具集,包含JRE、编译器(javac)、调试器(jdb)、文档生成工具(javadoc)等。使用JDK,开发者可以编写Java代码、将Java代码编译成Java字节码,并在JRE上运行、测试Java应用程序。JDK的主要组件如下。①JRE:详细见本小节第1点。②javac:用于将Java代码编译成Java字节码。③jdb:用于在开发过程中对Java应用程序进行调试和故障排除。④javadoc:用于生成Java代码的文档,方便开发者创建和维护项目文档。1.2.2JDK安装和环境变量配置1.JDK安装从Oracle官网下载应用程序“jdk-8u381-windows-x64.exe”并双击,进入JDK安装界面。(1)下载JDK单击“下一步”按钮,进行定制安装,如图1.2所示。单击“下一步”按钮,修改安装路径,如图1.3所示。修改完成后,单击“下一步”按钮,完成安装,如图1.4所示,单击“关闭”按钮,关闭JDK安装界面。(2)安装图1.2进行定制安装图1.3修改安装路径图1.4完成安装1.2.2JDK安装和环境变量配置按Win+R组合键,打开“运行”对话框,输入命令“cmd”,按Enter键,在打开的命令提示符窗口中输入命令“java-version”并按Enter键,如果输出所安装的JDK版本,则代表安装成功,如图1.5所示。(3)验证图1.5输出所安装的JDK版本,安装成功1.2.2JDK安装和环境变量配置2.通过JDK配置环境变量从Oracle官网下载压缩包“jdk-8u381-windows-x64.zip”,并将其解压至固定目录。(1)下载JDK右击“此电脑”图标,选择“属性”选项,在打开的窗口中单击“高级系统设置”超链接,打开“系统属性”对话框,如图1.6所示,单击“环境变量”按钮,打开“环境变量”对话框。(2)配置环境变量:配置环境变量JAVA_HOME和Path图1.6“系统属性”对话框①配置JAVA_HOME1.2.2JDK安装和环境变量配置单击“系统变量”栏中的“新建”按钮,打开“新建系统变量”对话框,如图1.7所示,设置变量名为“JAVA_HOME”、变量值为JDK解压目录,单击“确定”按钮,JAVA_HOME配置完成。图1.7“新建系统变量”对话框在“环境变量”对话框的“系统变量”列表框中选择“Path”选项,如图1.8所示。单击“编辑”按钮,添加“%JAVA_HOME%\bin”,如图1.9所示,连续单击“确定”按钮至所有对话框关闭。②配置Path图1.8在“系统变量”列表框中选择“Path”选项图1.9添加“%JAVA_HOME%\bin”1.2.2JDK安装和环境变量配置按Win+R组合键,打开“运行”对话框,在对话框中输入命令“cmd”,按Enter键,在打开的命令提示符窗口中输入命令“java-version”并按Enter键,如果输出所安装的JDK版本,则代表环境变量配置成功。(3)验证1.2.3JDK的安装目录文件分析以JDK1.8为例,介绍安装目录中主要文件的作用。JDK的安装目录结构如图1.10所示。①

bin:该目录包含Java开发和运行的工具。其中常用的工具如下。

java:用于运行Java应用程序。

javac:Java编译器,用于将Java代码编译成Java字节码。

javadoc:用于生成Java代码的文档。

jar:用于创建和解压JAR文件(Java归档文件)。

jps:Java进程状态工具,用于查看当前正在运行的Java进程。

jstack:Java堆栈跟踪工具,用于分析Java应用程序的线程状态。②include:该目录包含用于开发本机代码的C/C++头文件。③jre:JDK中的JRE目录。它包含JVM和Java核心类库,用于运行Java应用程序。

图1.10JDK的安装目录结构1.2.3JDK的安装目录文件分析④lib:该目录包含Java开发和运行所需的库文件(JAR文件)。这些库文件包含Java标准类库、第三方库、扩展和插件等。⑤COPYRIGHT:该文件包含JDK的版权信息和使用条款。⑥javafx-src.zip:该文件包含JavaFX(Java的GUI工具)所有核心类库的源代码。⑦LICENSE:该文件包含JDK的许可协议和授权信息。⑧README.html:提供JDK的简要介绍和安装指南。⑨release:该文件是一个特定的文件,包含JDK的版本信息。⑩src.zip:该文件是一个压缩文件,包含Java标准类库的源代码。开发者可以解压该文件,查看Java标准类库的源代码,以便更好地了解Java标准类库的实现细节。目录导航1.1

Java概述1.2搭建开发环境1.3

Java应用程序开发工具1.4商业实例:“银行提款机”项目——开发环境准备1.5综合实训:使用记事本及PowerShell窗口输出“Helloworld”1.3.1使用记事本编写代码1.创建Java文件在记事本的菜单栏中选择“文件”→“新建”选项,新建一个文件,并以文件名“HelloWorld.java”保存到本地。2.编写Java代码双击打开“HelloWorld.java”文件,输入以下Java代码。publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,World!");}}1.3.1使用记事本编写代码3.保存文件选择“文件”→“保存”选项,保存并关闭文件。4.编译Java文件打开“HelloWorld.java”文件所在的文件夹,按住Shift键并在空白处右击,选择“在此处打开Powershell窗口”选项,如图1.11所示。使用“javac”命令编译Java文件,命令如下。javacHelloWorld.java图1.11打开PowerShell窗口1.3.1使用记事本编写代码如果编译成功,则当前目录下会生成一个名为“HelloWorld.class”的文件,如图1.12所示。图1.12编译成功1.3.1使用记事本编写代码5.执行.class文件继续在PowerShell窗口中输入以下命令来执行生成的.class文件。javaHelloWorld此时,输出“Hello,World!”,如图1.13所示。图1.13执行.class文件1.3.2Eclipse的安装与使用01OPTION02OPTION03OPTION04OPTIONEclipse的下载:打开Web浏览器,访问Eclipse官网,可以看到Eclipse的各种版本。Eclipse有多种不同的套件,适用于不同类型的开发,对于Java开发,应该选“EclipseIDEforJavaDevelopers”版本,这个版本预装了Java开发所需的核心功能。Eclipse的安装:下载完成后,解压下载的Eclipse安装文件(通常是一个压缩文件,如.zip文件或.tar.gz文件)。Eclipse的启动:进入Eclipse安装目录,找到“Eclipse.exe”(Windows)或“Eclipse”(Linux/macOS)可执行文件,双击或在终端中运行它,即可启动Eclipse。配置Eclipse的工作空间:在第一次启动Eclipse时,需要选择工作空间(Workspace),即保存项目和配置的位置。1.3.2Eclipse的安装与使用选择一个目录作为工作空间,并单击“Launch”按钮,如图1.14所示。完成配置后的Eclipse界面如图1.15所示,接下来就可以进行Java开发了。图1.14配置工作空间图1.15完成配置后的Eclipse界面1.3.3IntelliJIDEA的安装与使用IntelliJIDEA是由JetBrains开发的一款领先的集成开发环境(IntegratedDevelopmentEnvironment,IDE),专门用于Java、Kotlin和其他相关技术的开发。它是目前最受欢迎和广泛使用的Java开发工具之一。1.IntelliJIDEA概述打开Web浏览器,访问JetBrains官网,找到IntelliJIDEA,单击进入其下载页面,如图1.16所示,在下载页面中找到对应操作系统的下载选项,选择相应选项进行下载。2.IntelliJIDEA的下载与安装图1.16IntelliJIDEA下载页面下载完成后双击打开IntelliJIDEA安装文件。在Windows操作系统中,IntelliJIDEA安装文件是一个.exe文件,按照安装向导指引进行安装即可。1.3.3IntelliJIDEA的安装与使用在Windows操作系统中,可以在“开始”菜单中找到安装完成的IntelliJIDEA,单击即可启动它。3.启动IntelliJIDEA在第一次启动IntelliJIDEA时,需要选择UI主题、键盘布局等,用户可以根据个人喜好进行配置,然后单击“StartusingIntelliJIDEA”按钮。完成配置后的界面如图1.17所示。4.配置IntelliJIDEA图1.17完成配置后的界面目录导航1.1

Java概述1.2搭建开发环境1.3

Java应用程序开发工具1.4商业实例:“银行提款机”项目——开发环境准备1.5综合实训:使用记事本及PowerShell窗口输出“Helloworld”【商业实例】“银行提款机”项目——开发环境准备“银行提款机”项目是一个综合性的Java实践案例,旨在通过实现用户身份验证、查询余额、存款、取款、转账及交易记录管理等功能,全面覆盖面向对象程序设计、异常处理、文件操作及GUI设计等核心Java知识点。该项目不仅可以锻炼基本编程技能,还可以培养解决实际问题、设计模块化系统及提升用户体验的能力。【商业实例】“银行提款机”项目——开发环境准备任务1:正确安装JDK(1)从官网下载应用程序“jdk-8u381-windows-x64.exe”。(2)双击应用程序搭建开发环境。(3)配置环境变量。任务2:正确安装IntelliJIDEA(1)从官网下载社区版IntelliJIDEA的安装包。(2)双击安装包,或者解压文件至任意目录。(3)双击相应快捷方式,运行开发环境。【商业实例】“银行提款机”项目——开发环境准备任务3:使用IntelliJIDEA输出“Helloworld!”,确保环境正常运行(1)打开IntelliJIDEA。(2)单击“NewProject”按钮,新建项目并设置项目属性,如图1.18、图1.19所示。图1.18新建项目图1.19设置项目属性【商业实例】“银行提款机”项目——开发环境准备(3)单击“Create”按钮后进入项目,在项目中可以看到一个“Main.java”文件,具体项目结构如图1.20所示。图1.20项目结构(4)打开“Main.java”文件,可以看到输出“Helloworld!”的代码,如下所示。packageorg.example;publicclassMain{publicstaticvoidmain(String[]args){System.out.println("Helloworld!");}}【商业实例】“银行提款机”项目——开发环境准备(5)右击“Main.java”文件,选择“Run'Main.main()'”选项,运行程序,如图1.21所示,可以看到控制台输出了“Helloworld!”,如图1.22所示。图1.21运行程序图1.22输出“Helloworld!”目录导航1.1

Java概述1.2搭建开发环境1.3

Java应用程序开发工具1.4商业实例:“银行提款机”项目——开发环境准备1.5综合实训:使用记事本及PowerShell窗口输出“Helloworld”【综合实训】使用记事本及PowerShell窗口输出“Helloworld”(1)通过实际编写、编译和运行一个简单的Java程序(如“Helloworld”程序),深入了解从编写代码到最终输出结果的各个阶段,包括代码编写、编译成字节码,以及字节码在JVM上运行等。(2)加深对语言运行过程的认识,以便在未来编程实践中更好地优化代码性能、解决运行错误和调试程序。(1)创建一个记事本文件,将其扩展名改为.java。(2)打开此文件,在文件中编写输出“Helloworld”的代码。(3)打开PowerShell窗口,进入该文件所在目录。(4)使用“javac”命令编译文件,使用“java”命令运行编译好的文件。1.实训目的2.实训内容小结briefsummary本单元对Java进行了全面介绍,涵盖其历史背景、开发环境的搭建,以及常用开发工具的选择。通过学习,读者可以深入了解Java的特点(如跨平台性、面向对象等),以及其在商业应用中的重要价值。同时,读者可以根据实际情况挑选合适的开发工具(如Eclipse、IntelliJIDEA等),以提高开发效率。本单元打开了Java世界的大门,为读者后续深入学习奠定了坚实的基础。单元2Java编程基础Java程序设计基础教程(AI助学)(慕课版)人民邮电出版社本单元将探索Java编程的基础知识,从理论走向实践,主要介绍Java基础语法、变量、函数、运算符、流程控制及数组等内容。本单元开始介绍如何编写Java代码,使用Java编程来解决生活中的实际问题。例如,在商店里购买一些商品时,可以使用Java来模拟结账过程,其中,商品数量使用int类型,商品价格使用double类型等。通过深入学习这些内容,读者可以打下坚实的编程基础,更轻松地应对复杂的编程任务。本章导读Thechapter’sintroduction目录导航2.1基础语法2.2变量2.3函数2.4运算符2.5流程控制2.6数组2.7

【商业实例】“银行提款机”项目——余额操作2.8

【综合实训】计算指定日期是当年的第几天2.1.1注释1.单行注释单行注释用于简单说明,可以使用简短的语言表达出代码的含义。单行注释使用“//”来表示,此标志右侧的内容全部属于注释,举例如下。//定义年龄intage=15;2.多行注释如果要表达的内容比较多,单行注释不足以满足需求,则可以使用多行注释。多行注释以“/*”开始,以“*/”结束,开始标志与结束标志中间的内容都属于注释,举例如下。/*计算两个数的平均数:把两个数加起来除以2即可*/2.1.1注释3.文档注释文档注释一般用于表达代码的编写时间、作者、版本等信息。文档注释以“/**”开始,以“*/”结束,并且每行都以“*”开始,举例如下。/***@Author:作者姓名*@Date:编写时间*@Version:1.0*/2.1.2标识符Java代码是由变量、常量、方法等组成的,这些内容都需要用一个唯一的名称(即标识符)来表示。Java有一组保留的关键字,这组关键字不能用作标识符,因为它们具有特殊的含义和用途标识符应具有描述性,并且能够清晰地反映其用途Java中常用的命名规则是驼峰命名规则Java是字母大小写敏感的,因此大写字母和小写字母被视为不同的字符标识符的首字符必须是字母(大写或小写)、下画线或美元符号,不能是数字标识符只能由大写字母(A~Z)、小写字母(a~z)、数字(0~9)、下画线(_)、美元符号($)组成2.1.3关键字关键字是在设计编程语言时定义的具有特殊含义的单词,这些单词已经被编程语言使用,在开发时不能再作为标识符使用。Java中的关键字如表2.1所示。基本数据类型关键字intlongbooleanbytecharshortfloatdouble

修饰符关键字abstractfinalstaticsynchronizedtransientvolatile访问控制关键字publicprivateprotected

声明关键字classinterfaceextendsimplementsnewthissuper

流程控制关键字ifelseswitchcasedefaultwhiledoforbreakcontinuereturn

异常处理关键字trycatchthrowthrowsfinally

特殊直接量truefalsenull

保留关键字gotoconst

其他关键字enumassertpackageimportinstanceofnativestrictfpvoid

表2.1Java中的关键字2.1.4常量常量是指值固定不变的量。在开发过程中,有些数据是不会改变的,如π=3.14159…,这个值永远不会改变,可以把它定义为一个常量。常量使用final关键字修饰。常量一般使用大写字母表示,这样方便识别,可以提高代码的可读性。如果单个单词无法表示要表达的含义,则可以使用下画线隔开的多个单词。常量声明格式如下。final常量数据类型常量名=值;声明常量举例如下。finaldoublePI=3.14;finalintUSER_HEIGHT=170;目录导航2.1基础语法2.2变量2.3函数2.4运算符2.5流程控制2.6数组2.7

【商业实例】“银行提款机”项目——余额操作2.8

【综合实训】计算指定日期是当年的第几天2.2.1变量的声明与初始化在程序运行之初,需要声明变量,告诉程序这个变量的信息,包括变量名、变量类型和作用域等,其声明格式如下。变量类型变量名=变量值;声明变量举例如下。Stringname="张三";intage=15;name="李四";变量还可以直接参与表达式计算,举例如下。finaldoublePI=3.14;doublediameter=2,perimeter;perimeter=diameter*PI;变量主要用来记录程序运行过程中产生的一些数据,程序会把这些数据存储在内存单元中,一旦程序关闭或者触发特定的条件,这些变量就会被清除,内存单元将会存放新的数据。需要注意的是,变量的声明和初始化是两个不同的操作,可以分开执行,举例如下。inti;//声明变量ii=3;//给该变量赋初始值2.2.2变量的数据类型1.基本数据类型基本数据类型是Java中预定义的、不可分解的数据类型,用于存储基本的数值、字符和布尔值。基本数据类型可以分为byte、short、int、long、float、double、char、boolean这8种,每种数据类型所占用的字节长度都不同(每个字节为8位)。名称关键字占用字节长度取值范围数值型整数型字节型byte1-27~27-1短整型short2-215~215-1整型int4-231~231-1长整型long8-263~263-1浮点型单精度浮点型float4约-3.4×1038~3.4×1038双精度浮点型double8约-1.79×10308~1.79×10308字符型char20~216或者\u0000~\uFFFF布尔型boolean1true或者false2.2.2变量的数据类型2.引用数据类型引用数据类型是Java中用来引用对象的类型,存储的是对象的引用而不是对象本身的值,使用方法大致与基本数据类型一致,只不过引用数据类型需要自定义,举例如下。//定义引用数据类型UserstaticclassUser{//姓名

privateStringname;//年龄

privateintage;//身高

privatedoubleheight;publicUser(Stringname,intage,doubleheight){=name;this.age=age;this.height=height;}

/***格式化输出User对象字符串*/@OverridepublicStringtoString(){return"User{"+"name='"+name+'\''+",age="+age+",height="+height+'}';}}/**

*启动函数

*/publicstaticvoidmain(String[]args){//初始化引用数据类型变量

Useruser=newUser("张三",20,170);//输出引用数据类型变量指向的对象

System.out.println(user);}2.2.3数据类型转换数据类型转换是指将一种数据类型的值转换为另一种数据类型。在程序运行过程中,整数型与浮点型的数据进行相加运算,得到的结果必然是浮点型,因为如果是整数型,会引起数据精度的丢失。数据类型转换可以分为两种。自动数据类型转换强制数据类型转换02.2.3数据类型转换1.自动数据类型转换自动数据类型转换(隐式转换)是指将取值范围较小的数据类型的值转换为取值范围较大的数据类型的过程,Java编译器会自动执行此类转换以保证数据不会丢失,举例如下。bytea=10;//给byte类型的a赋10shortb=a;//byte类型可以隐式转换为shortintc=b;//short类型可以隐式转换为intlongd=c;//int类型可以隐式转换为longfloate=d;//long类型可以隐式转换为floatdoublef=e;//float类型可以隐式转换为double这8种基本数据类型存在数据类型转换优先级,如图2.1所示,低优先级数据类型可以隐式转换(在不需要明确指定的情况下,编程语言自动进行的数据类型转换)为高优先级数据类型。图2.1数据类型转换优先级2.2.3数据类型转换优先级中的自动数据类型转换如下。publicstaticvoidmain(String[]args){//将int类型的值赋给double类型的变量

intnum=10;doubleresult=num;//将char类型的值赋给int类型的变量

charletter='A';intasciiValue=letter;//将byte类型的值赋给int类型的变量

bytesmallNum=100;intlargeNum=smallNum;}2.2.3数据类型转换2.强制数据类型转换强制数据类型转换是指将一种数据类型的值强制转换为另一种数据类型,需要显式地指定转换操作,可能导致数据精度丢失或溢出,其格式如下。低优先级数据类型类型名称=(低优先级数据类型)高优先级数据类型值;低优先级数据类型类型名称=(低优先级数据类型)高优先级数据类型表达式;强制数据类型转换举例如下。doublea=3.14D; //初始化为double类型floatb=(float)a; //double类型强制转换为float类型longc=(long)b; //float类型强制转换为long类型intd=(int)c; //long类型强制转换为int类型shorte=(short)d; //int类型强制转换为short类型bytef=(byte)e; //short类型强制转换为byte类型2.2.3数据类型转换在实际转换中,不是任意两种类型都可以强制转换,强制转换需要满足两个条件,具体如下。①参与强制数据类型转换的数据必须兼容,如把int类型转换为boolean类型。②强制转换目标数据类型优先级低于被转换的数据类型。如果把float类型强制转换为int类型,而int类型不包含小数部分,那么就会造成数据的精度丢失,举例如下。floatf=3.14F;inti=(int)f;System.out.println(i);//输出32.2.4变量的作用域1.局部变量在方法或者代码块中定义的变量称为局部变量,该变量的作用域为该方法或者该代码块范围内,在方法以外或者代码块以外无法使用该变量。当程序执行完该方法或者代码块的时候,该变量所占用的内存空间会被释放。声明局部变量的举例如下。publicclassMainClass{publicstaticvoidmain(String[]args){//方法中的局部变量

intmethodVariable=10;System.out.println("Themethodvariableis"+methodVariable);

//代码块中的局部变量

{intblockVariable=20;System.out.println("Theblockvariableis"+blockVariable);}

//下面的代码会触发错误,因为blockVariable在代码块外部是无法访问的

//System.out.println(blockVariable);}}2.2.4变量的作用域2.成员变量相对于局部变量,成员变量的生命周期与程序的生命周期一致,程序启动时,该变量被创建,直到程序关闭时该变量才会被释放。成员变量的作用域扩大到整个类甚至整个程序。声明成员变量的举例如下。publicclassDemo{//成员变量,本类、其他类(受修饰符的限制)都可以访问

intvar1;publicstaticvoidmain(String[]args){//局部变量,只能在方法中访问

intvar2;}}这两种变量的对比如表2.3所示。表2.3局部变量与成员变量的对比名称作用域生命周期修饰符默认值局部变量本方法与方法一致不能使用没有成员变量本类或整个程序与程序一致可以使用只要被初始化就会有初始值目录导航2.1基础语法2.2变量2.3函数2.4运算符2.5流程控制2.6数组2.7

【商业实例】“银行提款机”项目——余额操作2.8

【综合实训】计算指定日期是当年的第几天2.3.1函数语法函数可以减少冗余代码,提高代码的可重用性、可读性和可维护性,其语法格式如下。publicstatic返回类型函数名(形式参数列表){函数体}定义一个求和函数,函数名为sum,形式参数为a和b,返回两个数的和,示例代码如下。publicstaticintsum(inta,intb){

intsum=a+b;

returnsum;}(1)函数名:函数的唯一标识符,用于调用函数。其采用驼峰命名规则,第一个单词首字母小写,其余单词首字母大写。(2)返回类型:函数返回给调用者的数据类型。如果函数没有返回值,则不需要return语句。返回值可以是基本数据类型、对象类型或void(表示无返回值)。return语句用于返回函数的结果给调用者,结束当前函数的执行。(3)形式参数列表:定义了函数接收的参数,包括参数类型和参数名,是函数和调用者之间交互的数据约定。形式参数相当于函数内部的局部变量。2.3.2函数调用函数调用是执行已经定义的函数的行为。使用某个函数时,需要“调用”它,也就是执行它的代码块。在Java中,函数调用通常通过函数名和传递给它的参数(如果有)来完成。01知道要调用的函数的名称确定函数名03当函数被调用时,Java解释器会跳转到函数定义的代码块并执行它执行函数体02按照函数定义时指定的顺序和类型提供必要的参数提供参数(如果函数需要)04函数执行完毕后会返回一个值(如果它有返回值),需要使用变量或其他适当的方式接收这个值处理返回值(如果函数有返回值)2.3.2函数调用以下是一个简单的Java程序,它定义了一个函数addNumbers(),并在main()函数中调用了它。publicclassFunctionCall{//定义一个函数,接收两个整型参数,并返回它们的和

publicstaticintaddNumbers(inta,intb){returna+b;}//main()函数,程序入口

publicstaticvoidmain(String[]args){//声明变量来存储函数的返回值

intsum=0;//调用addNumbers()函数,并将结果存储在sum变量中

sum=addNumbers(5,3);//输出结果

System.out.println("Thesumis:"+sum);}}2.3.3函数分类1.无参数函数无参数函数是指在调用时不需要传递任何参数的函数。在Java中,这种函数被声明为不带参数列表的形式。下面定义一个名为sayHello的无参数函数,该函数被调用时会在控制台输出“Hello,World!”。publicclassNoParameter{publicstaticvoidsayHello(){//无参数函数

System.out.println("Hello,World!");}publicstaticvoidmain(String[]args){sayHello();//调用无参数函数

}}2.3.3函数分类2.有参数函数有参数函数是需要在调用时传递参数的函数。在Java中,参数列表位于函数名后面的圆括号中。下面定义一个名为add的函数,该函数接收两个整型参数并返回它们的和。publicclassParameter{publicstaticintadd(inta,intb){//有两个参数的函数

returna+b;}publicstaticvoidmain(String[]args){intsum=add(5,3);//调用有参数函数,并传递实际参数

System.out.println("Thesumis:"+sum);}}2.3.3函数分类3.有返回值函数有返回值函数是指执行完毕后返回一个值给调用者的函数。在Java中,返回类型位于函数名之前。下面定义一个multiply()函数,该函数接收两个整型参数并返回它们的乘积。publicclassReturnValue{publicstaticintmultiply(inta,intb){//有返回值函数

returna*b;}publicstaticvoidmain(String[]args){intproduct=multiply(5,3);//调用有返回值函数,并将返回值存储在变量中

System.out.println("Theproductis:"+product);}}2.3.3函数分类4.无返回值函数无返回值函数(在Java中通常称为void函数)是指执行完毕后不返回任何值给调用者的函数。在Java中,使用void关键字来声明没有返回值的函数。下面定义一个printMessage()函数,该函数接收一个字符串参数并在控制台上输出该字符串,但不返回任何值。publicclassVoidMethod{publicstaticvoidprintMessage(Stringmessage){//void函数,不返回任何值

System.out.println(message);}publicstaticvoidmain(String[]args){printMessage("Hello,World!");//调用void函数

}}目录导航2.1基础语法2.2变量2.3函数2.4运算符2.5流程控制2.6数组2.7

【商业实例】“银行提款机”项目——余额操作2.8

【综合实训】计算指定日期是当年的第几天2.4.1算术运算符算术运算符是用于执行基本数学运算的符号,在常规的数学运算中经常用到。算术运算符包括5种基本运算符(+、-、*、/、%)与2种进阶运算符(++、--),具体如表2.4所示。运算符运算含义用法示例运算结果+相加inti=2+3;5-相减inti=3–2;1负号-2;-2*相乘inti=2*3;6/除inti=4/2;2inti=5/2;2%取模inti=5%2;1++自增inti=2;i++;2inti=2;++i;3--自减inti=2;i--;2inti=2;--i;1表2.4算术运算符及其用法2.4.1算术运算符inta=3; //将3赋给变量aa++; //相当于执行a=a+1intb=a++; //相当于先执行b=a,再执行a++,b的值为3intc=++a; //相当于先执行a++,再执行c=a,c的值为4 (1)对于除运算,如5/2,参与运算的5、2都是整数,计算出的结果也是整数,这里的运算没有“四舍五入”,会向下取整,得到的结果是2。(2)取模运算就是除法的取余数运算,使用5除以2得到的结果是2余1,最后的结果是1。(3)在算术运算符中,基本运算符比较容易理解,“++”“--”复杂一些,接下来举例说明。“--”运算与“++”运算原理一致。2.4.2赋值运算符赋值运算就是将一个值或者一个结果赋给一个变量。赋值运算符及其用法如表2.5所示。表2.5赋值运算符及其用法运算符运算含义用法示例运算结果=赋值inti=25,j=10;i=25,j=10;+=加等于inti=25,j=10;i+=ji=35,j=10;-=减等于inti=25,j=10;i-=ji=15,j=10;/=除等于inti=25,j=10;i/=ji=2,j=10;%=模等于inti=25,j=10;i%=ji=5,j=10;2.4.3关系运算符关系运算就是比对两个值得到一个结果,这个结果要么为true,要么为false,从而决定程序的执行逻辑。关系运算符及其用法如表2.6所示。表2.6关系运算符及其用法运算符运算含义用法示例运算结果>大于3>3false>=大于或等于3>=3true<小于3<3false<=小于或等于3<=3true=

=等于3=

=3true!=不等于3!=3false这里使用常规数学运算符号的一个或者两个来表示相同的含义,如“>=”用来表示大于或等于,而“!=”用来表示不等于。2.4.4逻辑运算符逻辑运算符在Java中发挥着关键作用,用于连接和操作布尔值,以便进行更复杂的条件判断。逻辑运算符及其用法如表2.7所示。表2.7逻辑运算符及其用法逻辑运算符通常与关系运算符(如等于、大于、小于等)一起使用,以构建复杂的条件表达式。它们是控制程序流程和决策的重要工具。在编写复杂的条件逻辑时,正确使用逻辑运算符以及正确理解它们的优先级至关重要。运算符运算含义用法示例运算结果&&短路与true&&falsefalse||短路或true||falsetrue!逻辑非!truefalse2.4.4逻辑运算符1.短路与在使用短路与的时候,只有所有参与运算的表达式结果都为true,输出结果才为true。为了提高执行效率,如果先执行的表达式结果为false,则Java会直接停止后边的判断,立即返回false。短路与用法如表2.8所示。表2.8短路与用法短路与表达式输出结果false&&truefalseinti=2,j=3;(i<j)&&(i++>=j)false,i=3,j=3inti=2,j=3;(i>j)&&(i++>=j)false,i=2,j=32.4.4逻辑运算符2.短路或短路或与短路与相似,只是短路或在参与运算的任意表达式结果为true时立即返回true,后边的表达式不再执行。短路或用法如表2.9所示。表2.9短路或用法短路或表达式输出结果true||falsetrueinti=2,j=3;(i<j)||(i++>=j)true,i=2,j=3inti=2,j=3;(i>j)||(i++>=j)false,i=3,j=32.4.4逻辑运算符3.逻辑非逻辑非运算符(!)用于对一个布尔值取反。如果操作数的结果为true,则结果为false;如果操作数的结果为false,则结果为true。逻辑非用法如表2.10所示。表2.10逻辑非用法逻辑非表达式运算结果!truefalse!falsetrueinti=2;!(i=

=2)false(因为i=

=2为true,所以取反为false)intj=3;!(j>5)true(因为j>5为false,所以取反为true)2.4.5位运算符相较于其他几个运算符,位运算符涉及的功能比较底层。位运算符是直接操作二进制位的运算符,允许直接对整数的二进制表示进行位级别的操作。位运算符及其用法如表2.11所示。表2.11位运算符及其用法运算符运算含义示例结果&与运算3&22|或运算3|23^异或运算3^21~非运算~2-3<<位左移3<<212>>位右移4>>21-3>>2-1>>>无符号右移-3>>>21073741823无符号右移运算符(>>>)用于将操作数的二进制表示向右移动指定数量的位,同时在左侧插入0。与普通右移运算符(>>)不同的是,无符号右移运算符不考虑符号位,即最高位也插入0。在表2.11中,分别使用无符号右移运算符(>>>)和有符号右移运算符(>>)对-3进行了右移操作,结果显示,无符号右移运算符(>>>)不考虑符号位,因此插入的位都是0,而有符号右移运算符(>>)会根据符号位来决定插入的位。这就是它们的主要区别。2.4.6其他运算符1.三目运算符三目运算符是非常常用的一种运算符,用于根据条件判断的结果进行赋值。三目运算表达式由3个部分组成,如“a?b:c”,此表达式的含义是如果a成立(即返回true),那么执行b,否则执行c。三目运算符用法如表2.12所示。表2.12三目运算符用法表达式输出结果3>2?3:233<2?3:223<2?3:3>2?3:232.4.6其他运算符2.字符串拼接运算符当需要将两个字符串合并起来时,可以使用拼接运算符“+”。拼接类型及其用法如表2.13所示。表2.13拼接类型及其用法拼接类型表达式结果字符串与字符串拼接“我的姓名是:”+“张三”“我的姓名是:张三”字符串与int拼接“我的年龄是:”+21“我的年龄是:21”字符串与double拼接“我的体重是:”+60.3“我的体重是:60.3”2.4.7运算符的优先级如果一个复杂的运算公式中使用了多种运算符,那么程序在执行时是否存在优先级(就像普通的四则运算中先计算乘除、再计算加减)呢?答案是肯定的,运算符优先级及其运算规则如表2.14所示。表2.14运算符优先级及其运算规则优先级运算符运算规则1()、[]从左到右2!、+(正)、-(负)、~、++、--从右到左3*(乘)、/(除)、%(取模)从左到右4+(加)、-(减)从左到右5<<、>>、>>>从左到右6<、<=、>、>=从左到右7=

=、!=从左到右8&(与运算)从左到右9^(异或运算)从左到右10|(或运算)从左到右11&&从左到右12||从左到右13?从左到右14=、+=、-=、*=、/=、%=、&=、|=、^=、~=、<<=、>>=从右到左目录导航2.1基础语法2.2变量2.3函数2.4运算符2.5流程控制2.6数组2.7

【商业实例】“银行提款机”项目——余额操作2.8

【综合实训】计算指定日期是当年的第几天2.5.1顺序结构顺序结构是最简单的一种结构,它表示程序将按照代码的书写顺序逐行执行,不涉及条件判断、循环和跳转。在顺序结构中,每条语句按照它们在源代码中的顺序依次执行,不会跳过或重复执行任何语句,举例如下。//语句1intx=5;//语句2inty=10;//语句3intresult=x+y;//语句4System.out.println("结果是:"+result);//语句5System.out.println("顺序结构示例执行完毕");顺序结构是编程的基础,确保程序按照一定的顺序执行。在构建更复杂的程序时,顺序结构通常会与选择结构、循环结构和其他流程控制结构组合使用,以丰富程序行为。2.5.2选择结构1.三目运算符条件语句用于根据条件的真假执行不同的代码块。如果条件为真,则执行if代码块中的代码,否则执行else代码块中的代码(可选)。if(条件){//当条件为真时执行此处代码}else{//当条件为假时执行此处代码}示例代码如下。publicstaticvoidmain(String[]args){intnumber=10;//单个条件语句

if(number>5){System.out.println("Thenumberisgreaterthan5");}else{System.out.println("Thenumberislessthanorequalto5");}2.5.2选择结构以上代码的主要功能是判断整型变量number是否大于5,并根据判断结果输出相应的信息。首先,在main()函数中定义一个整型变量number,并赋值为10。其次,使用if-else条件语句对number进行判断:如果number大于5,则输出“Thenumberisgreaterthan5”;否则,输出“Thenumberislessthanorequalto5”。因为number的值为10,满足大于5的条件,所以程序会输出“Thenumberisgreaterthan5”。条件语句执行流程如图2.4所示。图2.4条件语句执行流程2.5.2选择结构2.多重条件语句多重条件语句允许根据多个条件执行不同的代码块,可以使用多个elseif分支,最后可以有一个可选的else分支,用于处理未匹配任何条件的情况。if(条件1){//当条件1为真时执行此处代码}elseif(条件2){//当条件2为真时执行此处代码}else{//如果前面的条件都不满足,则执行此处代码}示例代码如下。publicstaticvoidmain(String[]args){intnumber=10;//多重条件语句

if(number>10){System.out.println("Thenumberisgreaterthan10");}elseif(number>5){System.out.println("Thenumberisgreaterthan5butlessthanorequalto10");}else{System.out.println("Thenumberislessthanorequalto5");}}2.5.2选择结构以上代码的主要功能是根据给定的整型变量number的值输出相应的信息,根据不同的条件执行不同的代码块如果number大于10,则输出“Thenumberisgreaterthan10”;如果number大于5但小于或等于10,则输出“Thenumberisgreaterthan5butlessthanorequalto10”;如果number小于或等于5,则输出“Thenumberislessthanorequalto5”。由于number的值为10,满足第二个条件,因此程序会输出“Thenumberisgreaterthan5butlessthanorequalto10”。多重条件语句执行流程如图2.5所示。图2.5多重条件语句执行流程(三重条件)2.5.2选择结构3.switch语句switch语句允许根据表达式的不同取值来执行不同的代码块。它是一种更适用于多个条件分支的替代方案,特别是在需要根据一个表达式的值进行选择时。switch(表达式){case值1://当表达式的值等于值1时执行此处代码

break;case值2://当表达式的值等于值2时执行此处代码

break;default://当表达式的值与所有case都不匹配时执行此处代码}publicclassMainClass{publicstaticvoidmain(String[]args){intnumber=2;switch(number){case1:System.out.println("Thenumberis1");break;case2:System.out.println("Thenumberis2");break;case3:System.out.println("Thenumberis3");break;default:System.out.println("Thenumberisnot1,2or3");}}}2.5.3循环结构1.for循环for循环是一种在已知循环次数的情况下重复执行代码块的循环结构。它通常包括3个部分:初始化、条件和步进。for(初始化;条件;步进){//循环体,重复执行的代码块}初始化部分在循环开始前执行一次,用于初始化循环控制变量初始化部分条件部分在每次迭代前检查,如果条件为真,则继续执行循环体,否则退出循环条件部分步进部分在每次迭代结束后执行,通常用于递增或递减循环控制变量步进部分2.5.3循环结构示例代码如下。publicclassMainClass{publicstaticvo

温馨提示

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

评论

0/150

提交评论