1。1Java语言发展史 语言:人与人交流沟通的表达方式 计算机语言:人与计算机之间进行信息交流沟通的一种特殊语言 Java语言是美国Sun公司(StanfordUniversityNetwork)在1995年推出的计算机语言 Java之父:詹姆斯高斯林(JamesGosling) 2009年,Sun公司被甲骨文公司收购,所以我们现在访问oracle官网即可:https:www。oracle。com 当前,我们课程使用的JDK版本:11。0 1。2Java语言跨平台原理 Java程序并非是直接运行的,Java编译器将Java源程序编译成与平台无关的字节码文件(class文件),然后由Java虚拟机(JVM)对字节码文件解释执行。所以在不同的操作系统下,只需安装不同的Java虚拟机即可实现java程序的跨平台。 1。3JRE和JDK JVM(JavaVirtualMachine),Java虚拟机 JRE(JavaRuntimeEnvironment),Java运行环境,包含了JVM和Java的核心类库(JavaAPI)JDK(JavaDevelopmentKit)称为Java开发工具,包含了JRE和开发工具 总结:我们只需安装JDK即可,它包含了java的运行环境和虚拟机。 1。4JDK的下载和安装1。4。1下载 通过官方网站获取JDK http:www。oracle。com注意:针对不同的操作系统,需要下载对应版本的JDK。1。4。2安装 傻瓜式安装,下一步即可。但默认的安装路径是在C:ProgramFiles下,为方便统一管理建议修改安装路径,将与开发相关的软件都安装到一个目录下,例如:E:develop。 注意:安装路径不要包含中文或者空格等特殊字符(使用纯英文目录)。1。4。3JDK的安装目录介绍 目录名称 说明 bin 该路径下存放了JDK的各种工具命令。javac和java就放在这个目录。 conf 该路径下存放了JDK的相关配置文件。 include 该路径下存放了一些平台特定的头文件。 jmods 该路径下存放了JDK的各种模块。 legal 该路径下存放了JDK各模块的授权文档。 lib 该路径下存放了JDK工具的一些补充JAR包。2。第一个演示程序2。1常用DOS命令 在接触集成开发环境之前,我们需要使用命令行窗口对java程序进行编译和运行,所以需要知道一些常用DOS命令。 1、打开命令行窗口的方式:winr打开运行窗口,输入cmd,回车。 2、常用命令及其作用 操作 说明 盘符名称: 盘符切换。E:回车,表示切换到E盘。 dir 查看当前路径下的内容。 cd目录 进入单级目录。cditterence cd。。 回退到上一级目录。 cd目录1目录2 进入多级目录。cditterenceJavaSE cd 回退到盘符目录。 cls 清屏。 exit 退出命令提示符窗口。2。2Path环境变量的配置2。2。1为什么配置环境变量 开发Java程序,需要使用JDK提供的开发工具(比如javac。exe、java。exe等命令),而这些工具在JDK的安装目录的bin目录下,如果不配置环境变量,那么这些命令只可以在该目录下执行。我们不可能把所有的java文件都放到JDK的bin目录下,所以配置环境变量的作用就是可以使bin目录下的java相关命令可以在任意目录下使用。2。2。2配置环境变量步骤 如果命令提示符窗口是配合环境变量前打开的,需要关闭该窗口,重新打开一个窗口测试2。3HelloWorld案例 HelloWorld案例是指在计算机屏幕上输出HelloWorld这行文字。各种计算机语言都习惯使用该案例作为第一个演示案例。2。3。1Java程序开发运行流程 开发Java程序,需要三个步骤:编写程序,编译程序,运行程序。2。3。2HelloWorld案例的编写 1、新建文本文档文件,修改名称为HelloWorld。java。 2、用记事本打开HelloWorld。java文件,输写程序内容。2。3。3HelloWorld案例的编译和运行 存文件,打开命令行窗口,将目录切换至java文件所在目录,编译java文件生成class文件,运行class文件。 编译:javac文件名。java 范例:javacHelloWorld。java 执行:java类名 范例:javaHelloWorld2。4HelloWorld案例常见问题(理解)2。4。1BUG 在电脑系统或程序中,隐藏着的一些未被发现的缺陷或问题统称为bug(漏洞)。2。4。2BUG的解决 1、具备识别BUG的能力:多看 2、具备分析BUG的能力:多思考,多查资料 3、具备解决BUG的能力:多尝试,多总结2。4。3HelloWorld案例常见问题 1、非法字符问题。Java中的符号都是英文格式的。 2、大小写问题。Java语言对大小写敏感(区分大小写)。 3、在系统中显示文件的扩展名,避免出现HelloWorld。java。txt文件。 4、编译命令后的java文件名需要带文件后缀。java 5、运行命令后的class文件名(类名)不带文件后缀。class2。5Notepad软件的安装和使用2。5。1什么要使用Notepad软件 Notepad功能比windows中的自带记事本功能强大,除了可以用来制作一般的纯文字说明文件,也十分适合编写计算机程序代码。Notepad有行号,能够快速定位问题位置,还有语法高亮度显示、代码折叠等功能。而且它是免费的。2。5。2Notepad软件安装 安装:傻瓜式安装,一直下一步即可。建议也安装到统一的开发软件目录下,比如E:develop。2。5。3Notepad软件配置 安装完毕之后,为了使用方便,做一个简单的配置:修改默认语言和编码。 3。java基础语法3。1注释 注释是对代码的解释和说明文字,可以提高程序的可读性,因此在程序中添加必要的注释文字十分重要。Java中的注释分为三种: 单行注释。单行注释的格式是使用,从开始至本行结尾的文字将作为注释文字。 多行注释。多行注释的格式是使用和将一段较长的注释括起来。 注意:多行注释不能嵌套使用。 文档注释。文档注释以开始,以结束。(以后讲)3。2关键字 关键字是指被java语言赋予了特殊含义的单词。 关键字的特点:关键字的字母全部小写。 常用的代码编辑器对关键字都有高亮显示,比如现在我们能看到的public、class、static等。3。3常量 常量:在程序运行过程中,其值不可以发生改变的量。 Java中的常量分类: 字符串常量用双引号括起来的多个字符(可以包含0个、一个或多个),例如a、abc、中国等 整数常量整数,例如:10、0、88等 小数常量小数,例如:5。5、1。0、88。88等 字符常量用单引号括起来的一个字符,例如:‘a’、‘5’、‘B’、中’等 布尔常量布尔值,表示真假,只有两个值true和false 空常量一个特殊的值,空值,值为null 除空常量外,其他常量均可使用输出语句直接输出。3。4数据类型3。4。1计算机存储单元 我们知道计算机是可以用来存储数据的,但是无论是内存还是硬盘,计算机存储设备的最小信息单元叫位(bit),我们又称之为比特位,通常用小写的字母b表示。而计算机中最基本的存储单元叫字节(byte), 通常用大写字母B表示,字节是由连续的8个位组成。 除了字节外还有一些常用的存储单位,其换算单位如下: 1B(字节)8bit 1KB1024B 1MB1024KB 1GB1024MB 1TB1024GB3。4。2Java中的数据类型 Java是一个强类型语言,Java中的数据必须明确数据类型。在Java中的数据类型包括基本数据类型和引用数据类型两种。 Java中的基本数据类型: 数据类型 关键字 内存占用 取值范围 整数类型 byte 1hr128127 short 2hr3276832767 int(默认) 4hr2的31次方到2的31次方1 long 8hr2的63次方到2的63次方1 浮点类型 float 4hr负数:3。402823E38到1。401298E45正数:1。401298E45到3。402823E38 double(默认) 8hr负数:1。797693E308到4。9000000E324正数:4。9000000E324到1。797693E308 字符类型 char 2hr065535 布尔类型 boolean 1hrtrue,false 说明:e38表示是乘以10的38次方,同样,e45表示乘以10的负45次方。在java中整数默认是int类型,浮点数默认是double类型。 3。5变量3。5。1变量的定义 变量:在程序运行过程中,其值可以发生改变的量。 从本质上讲,变量是内存中的一小块区域,其值可以在一定范围内变化。 变量的定义格式: 数据类型变量名初始化值;声明变量并赋值 intage18; System。out。println(age); 或者 先声明,后赋值(使用前赋值即可)数据类型变量名; 变量名初始化值; doublemoney; money55。5; System。out。println(money); 还可以在同一行定义多个同一种数据类型的变量,中间使用逗号隔开。但不建议使用这种方式,降低程序的可读性。 变量的使用:通过变量名访问即可。3。5。2使用变量时的注意事项在同一对花括号中,变量名不能重复。变量在使用之前,必须初始化(赋值)。定义long类型的变量时,需要在整数的后面加L(大小写均可,建议大写)。因为整数默认是int类型,整数太大可能超出int范围。定义float类型的变量时,需要在小数的后面加F(大小写均可,建议大写)。因为浮点数的默认类型是double,double的取值范围是大于float的,类型不兼容。3。6标识符 标识符是用户编程时使用的名字,用于给类、方法、变量、常量等命名。 Java中标识符的组成规则: 由字母、数字、下划线、美元符号组成,第一个字符不能是数字。 不能使用java中的关键字作为标识符。 标识符对大小写敏感(区分大小写)。 Java中标识符的命名约定: 小驼峰式命名:变量名、方法名 首字母小写,从第二个单词开始每个单词的首字母大写。 大驼峰式命名:类名 每个单词的首字母都大写。 另外,标识符的命名最好可以做到见名知意 例如:username、studentNumber等。3。7类型转换 在Java中,一些数据类型之间是可以相互转换的。分为两种情况:自动类型转换和强制类型转换。自动类型转换: 把一个表示数据范围小的数值或者变量赋值给另一个表示数据范围大的变量。这种转换方式是自动的,直接书写即可。例如: 强制类型转换: 把一个表示数据范围大的数值或者变量赋值给另一个表示数据范围小的变量。 强制类型转换格式:目标数据类型变量名(目标数据类型)值或者变量; 例如: 说明:char类型的数据转换为int类型是按照码表中对应的int值进行计算的。比如在ASCII码表中,a’对应97。整数默认是int类型,byte、short和char类型数据参与运算均会自动转换为int类型。boolean类型不能与其他基本数据类型相互转换。4。运算符4。1算术运算符4。1。1运算符和表达式 运算符:对常量或者变量进行操作的符号 表达式:用运算符把常量或者变量连接起来符合java语法的式子就可以称为表达式。 不同运算符连接的表达式体现的是不同类型的表达式。 举例说明: :是运算符,并且是算术运算符。 ab:是表达式,由于是算术运算符,所以这个表达式叫算术表达式。4。1。2算术运算符 符号 作用 说明 加 参看小学一年级 减 参看小学一年级 乘 参看小学二年级,与相同 除 参看小学二年级,与相同 取余 获取的是两个数据做除法的余数 注意:和的区别:两个数据做除法,取结果的商,取结果的余数。 整数操作只能得到整数,要想得到小数,必须有浮点数参与运算。4。1。3字符的操作 char类型参与算术运算,使用的是计算机底层对应的十进制数值。需要我们记住三个字符对应的数值: ‘a’97az是连续的,所以’b’对应的数值是98,c’是99,依次递加 ‘A’65AZ是连续的,所以’B’对应的数值是66,C’是67,依次递加 ‘0’4809是连续的,所以’1’对应的数值是49,2’是50,依次递加 算术表达式中包含不同的基本数据类型的值的时候,整个算术表达式的类型会自动进行提升。 提升规则: byte类型,short类型和char类型将被提升到int类型,不管是否有其他类型参与运算。 整个表达式的类型自动提升到与表达式中最高等级的操作数相同的类型 等级顺序:byte,short,charintlongfloatdouble 例如: tips:正是由于上述原因,所以在程序开发中我们很少使用byte或者short类型定义整数。也很少会使用char类型定义字符,而使用字符串类型,更不会使用char类型做算术运算。4。1。4字符串的操作 当操作中出现字符串时,这个是字符串连接符,而不是算术运算。System。out。println(itheima666);输出:itheima6661。 在操作中,如果出现了字符串,就是连接运算符,否则就是算术运算。当连续进行操作时,从左到右逐个执行。4。2赋值运算符(应用) 赋值运算符的作用是将一个表达式的值赋给左边,左边必须是可修改的,不能是常量。 符号 作用 说明 赋值 a10,将10赋值给变量a 加后赋值 ab,将ab的值给a 减后赋值 ab,将ab的值给a 乘后赋值 ab,将ab的值给a 除后赋值 ab,将ab的商给a 取余后赋值 ab,将ab的余数给a 注意: 扩展的赋值运算符隐含了强制类型转换。 4。3自增自减运算符 符号 作用 说明 自增 变量的值加1 自减 变量的值减1 注意事项: 和既可以放在变量的后边,也可以放在变量的前边。 单独使用的时候,和无论是放在变量的前边还是后边,结果是一样的。 参与操作的时候,如果放在变量的后边,先拿变量参与操作,后拿变量做或者。 参与操作的时候,如果放在变量的前边,先拿变量做或者,后拿变量参与操作。 最常见的用法:单独使用。 练习: 注意:通过此练习深刻理解自增和自减的规律,但实际开发中强烈建议不要写这样的代码!小心挨打!4。4关系运算符 关系运算符有6种关系,分别为小于、小于等于、大于、等于、大于等于、不等于。 符号 说明 ab,判断a和b的值是否相等,成立为true,不成立为false ! a!b,判断a和b的值是否不相等,成立为true,不成立为false ab,判断a是否大于b,成立为true,不成立为false ab,判断a是否大于等于b,成立为true,不成立为false ab,判断a是否小于b,成立为true,不成立为false ab,判断a是否小于等于b,成立为true,不成立为false 注意事项: 关系运算符的结果都是boolean类型,要么是true,要么是false。 千万不要把误写成,是判断是否相等的关系,是赋值。 4。5逻辑运算符 逻辑运算符把各个运算的关系表达式连接起来组成一个复杂的逻辑表达式,以判断程序中的表达式是否成立,判断的结果是true或false。 符号 作用 说明 逻辑与 ab,a和b都是true,结果为true,否则为false 逻辑或 ab,a和b都是false,结果为false,否则为true 逻辑异或 ab,a和b结果不同为true,相同为false ! 逻辑非 !a,结果和a的结果正好相反 短路逻辑运算符 符号 作用 说明 短路与 作用和相同,但是有短路效果 短路或 作用和 在逻辑与运算中,只要有一个表达式的值为false,那么结果就可以判定为false了,没有必要将所有表达式的值都计算出来,短路与操作就有这样的效果,可以提高效率。同理在逻辑或运算中,一旦发现值为true,右边的表达式将不再参与运算。 逻辑与,无论左边真假,右边都要执行。短路与,如果左边为真,右边执行;如果左边为假,右边不执行。逻辑或,无论左边真假,右边都要执行。短路或,如果左边为假,右边执行;如果左边为真,右边不执行。4。6三元运算符 三元运算符语法格式: 关系表达式?表达式1:表达式2; 解释:问号前面的位置是判断的条件,判断结果为boolean型,为true时调用表达式1,为false时调用表达式2。其逻辑为:如果条件表达式成立或者满足则执行表达式1,否则执行第二个。 举例: 三元运算符案例: 1、需求:动物园里有两只老虎,已知两只老虎的体重分别为180kg、200kg,请用程序实现判断两只老虎的体重是否相同。 2、需求:一座寺庙里住着三个和尚,已知他们的身高分别为150cm、210cm、165cm,请用程序实现获取这三个和尚的最高身高。5。数据输入 我们可以通过Scanner类来获取用户的输入。使用步骤如下: 1、导包。Scanner类在java。util包下,所以需要将该类导入。导包的语句需要定义在类的上面。 importjava。util。Scanner; 2、创建Scanner对象。 ScannerscnewScanner(System。in);创建Scanner对象,sc表示变量名,其他均不可变 3、接收数据 intisc。nextInt();表示将键盘录入的值作为int数返回。 示例: 改写三个和尚案例,数据使用键盘录入。6。流程控制语句 在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的。所以,我们必须清楚每条语句的执行流程。而且,很多时候要通过控制语句的执行顺序来实现我们想要的功能。6。1流程控制语句分类 顺序结构 分支结构(if,switch) 循环结构(for,while,dowhile)6。2顺序结构 顺序结构是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的。 顺序结构执行流程图: 6。3分支结构之if语句6。3。1if语句格式1 格式: if(关系表达式){ 语句体; } 执行流程: 1首先计算关系表达式的值 2如果关系表达式的值为true就执行语句体 3如果关系表达式的值为false就不执行语句体 4继续执行后面的语句内容 示例:6。3。2if语句格式2 格式: if(关系表达式){ 语句体1; }else{ 语句体2; } 执行流程:首先计算关系表达式的值如果关系表达式的值为true就执行语句体1如果关系表达式的值为false就执行语句体2继续执行后面的语句内容 示例: if语句案例:奇偶数 需求:任意给出一个整数,请用程序实现判断该整数是奇数还是偶数,并在控制台输出该整数是奇数还是偶数。 分析:为了体现任意给出一个整数,采用键盘录入一个数据判断整数是偶数还是奇数要分两种情况进行判断,使用ifelse结构判断是否偶数需要使用取余运算符实现该功能number20根据判定情况,在控制台输出对应的内容6。3。3if语句格式3 格式: if(关系表达式1){ 语句体1; }elseif(关系表达式2){ 语句体2; } else{ 语句体n1; } 执行流程:首先计算关系表达式1的值如果值为true就执行语句体1;如果值为false就计算关系表达式2的值如果值为true就执行语句体2;如果值为false就计算关系表达式3的值如果没有任何关系表达式为true,就执行语句体n1。 示例: 键盘录入一个星期数(1,2,7),输出对应的星期一,星期二,星期日 if语句格式3案例: 需求:小明快要期末考试了,小明爸爸对他说,会根据他不同的考试成绩,送他不同的礼物,假如你可以控制小明的得分,请用程序实现小明到底该获得什么样的礼物,并在控制台输出。 分析:小明的考试成绩未知,可以使用键盘录入的方式获取值由于奖励种类较多,属于多种判断,采用ifelseif格式实现为每种判断设置对应的条件为每种判断设置对应的奖励7。switch语句7。1switch语句结构 格式 格式说明:表达式:取值为byte、short、int、char,JDK5以后可以是枚举,JDK7以后可以是String。case:后面跟的是要和表达式进行比较的值。break:表示中断,结束的意思,用来结束switch语句。default:表示所有情况都不匹配的时候,就执行该处的内容,和if语句的else相似。 执行流程:首先计算出表达式的值其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束。最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。7。2switch语句练习春夏秋冬(应用)需求:一年有12个月,分属于春夏秋冬4个季节,键盘录入一个月份,请用程序实现判断该月份属于哪个季节,并输出。运行结果:示例代码:注意:如果switch中得case,没有对应break的话,则会出现case穿透的现象。8。for循环8。1for循环结构(掌握)循环: 循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句,当反复执行这个循环体时,需要在合适的时候把循环判断条件修改为false,从而结束循环,否则循环将一直执行下去,形成死循环。for循环格式:格式解释:初始化语句:用于表示循环开启时的起始状态,简单说就是循环开始的时候什么样条件判断语句:用于表示循环反复执行的条件,简单说就是判断循环是否能一直执行下去循环体语句:用于表示循环反复执行的内容,简单说就是循环反复执行的事情条件控制语句:用于表示循环执行中每次变化的内容,简单说就是控制循环是否能执行下去执行流程: 执行初始化语句 执行条件判断语句,看其结果是true还是false 如果是false,循环结束 如果是true,继续执行 执行循环体语句 执行条件控制语句 回到继续8。2for循环练习输出数据(应用)需求:在控制台输出15和51的数据示例代码:8。3for循环练习求和需求:求15之间的数据和,并把求和结果在控制台输出示例代码: 本题要点:今后遇到的需求中,如果带有求和二字,请立即联想到求和变量求和变量的定义位置,必须在循环外部,如果在循环内部则计算出的数据将是错误的8。4for循环练习求偶数和需求:求1100之间的偶数和,并把求和结果在控制台输出}示例代码:8。5for循环练习水仙花需求:在控制台输出所有的水仙花数 解释:什么是水仙花数? 水仙花数,指的是一个三位数,个位、十位、百位的数字立方和等于原数例如153333555111153 思路:获取所有的三位数,准备进行筛选,最小的三位数为100,最大的三位数为999,使用for循环获取获取每一个三位数的个位,十位,百位,做if语句判断是否是水仙花数示例代码8。6for循环练习统计水仙花数个数需求:统计水仙花数一共有多少个,并在控制台输出个数示例代码: 本题要点:今后如果需求带有统计xxx,请先想到计数器变量计数器变量定义的位置,必须在循环外部9。while循环9。1while结构while循环完整格式:while循环执行流程: 执行初始化语句 执行条件判断语句,看其结果是true还是false 如果是false,循环结束 如果是true,继续执行 执行循环体语句 执行条件控制语句 回到继续示例代码:9。2while循环练习珠穆朗玛峰需求:世界最高山峰是珠穆朗玛峰(8844。43米8844430毫米),假如我有一张足够大的纸,它的厚度是0。1毫米。请问,我折叠多少次,可以折成珠穆朗玛峰的高度?示例代码:10。循环细节10。1dowhile循环结构完整格式:执行流程: 执行初始化语句 执行循环体语句 执行条件控制语句 执行条件判断语句,看其结果是true还是false 如果是false,循环结束 如果是true,继续执行 回到继续示例代码:10。2三种循环的区别 三种循环的区别for循环和while循环先判断条件是否成立,然后决定是否执行循环体(先判断后执行)dowhile循环先执行一次循环体,然后判断条件是否成立,是否继续执行循环体(先执行后判断) for循环和while的区别条件控制语句所控制的自增变量,因为归属for循环的语法结构中,在for循环结束后,就不能再次被访问到了条件控制语句所控制的自增变量,对于while循环来说不归属其语法结构中,在while循环结束后,该变量还可以继续使用 死循环(无限循环)的三种格式for(;;){}while(true){}do{}while(true);10。3跳转控制语句 跳转控制语句(break)跳出循环,结束循环 跳转控制语句(continue)跳过本次循环,继续下次循环注意:continue只能在循环中进行使用!10。4循环嵌套循环嵌套概述:在循环中,继续定义循环示例代码:理解:请反复理解这句话(整个内循环,就是外循环的一个循环体,内部循环体没有执行完毕,外循环是不会继续向下执行的)结论:外循环执行一次,内循环执行一圈11。Random11。1Random产生随机数概述: Random类似Scanner,也是Java提供好的API,内部提供了产生随机数的功能API后续课程详细讲解,现在可以简单理解为Java已经写好的代码使用步骤:导入包 importjava。util。Random;创建对象 RandomrnewRandom();产生随机数 intnumr。nextInt(10); 解释:10代表的是一个范围,如果括号写10,产生的随机数就是09,括号写20,参数的随机数则是019示例代码:11。2Random练习猜数字需求: 程序自动生成一个1100之间的数字,使用程序实现猜出这个数字是多少? 当猜错的时候根据不同情况给出相应的提示 A。如果猜的数字比真实数字大,提示你猜的数据大了 B。如果猜的数字比真实数字小,提示你猜的数据小了 C。如果猜的数字与真实数字相等,提示恭喜你猜中了示例代码:12。IDEA开发工具 参见:IDEA工具安装详解。pdf IDEA工具安装详解。pdf13。数组13。1什么是数组 数组(array)是一种用于存储多个相同类型数据的存储模型13。2数组定义格式13。2。1第一种 数据类型〔〕数组名 示例: 定义了一个int类型的数组,数组名是arr13。2。2第二种(不推荐) 数据类型数组名〔〕 示例: 定义了一个int类型的变量,变量名是arr数组13。3数组动态初始化13。3。1什么是动态初始化 数组动态初始化就是只给定数组的长度,由系统给出默认初始化值13。3。2动态初始化格式数据类型〔〕数组名new数据类型〔数组长度〕;1。int〔〕arrnewint〔3〕;1。13。3。3动态初始化格式详解等号左边:int:数组的数据类型〔〕:代表这是一个数组arr:代表数组的名称等号右边:new:为数组开辟内存空间int:数组的数据类型〔〕:代表这是一个数组3:代表数组的长度13。4数组元素访问13。4。1什么是索引 每一个存储到数组的元素,都会自动的拥有一个编号,从0开始。 这个自动编号称为数组索引(index),可以通过数组的索引访问到数组中的元素。13。4。2访问数组元素格式13。4。3示例代码13。5内存分配13。5。1内存概述 内存是计算机中的重要原件,临时存储区域,作用是运行程序。 我们编写的程序是存放在硬盘中的,在硬盘中的程序是不会运行的。 必须放进内存中才能运行,运行完毕后会清空内存。 Java虚拟机要运行程序,必须要对内存进行空间的分配和管理。13。5。2java中的内存分配目前我们只需要记住两个内存,分别是:栈内存和堆内存 区域名称 作用 寄存器 给CPU使用,和我们开发无关。 本地方法栈 JVM在使用操作系统功能的时候使用,和我们开发无关。 方法区 存储可以运行的class文件。 堆内存 存储对象或者数组,new来创建的,都存储在堆内存。 方法栈 方法运行时使用的内存,比如main方法运行,进入方法栈中执行。13。6单个数组的内存图 13。7多个数组的内存图 13。8多个数组指向相同内存图 13。9数组静态初始化13。9。1什么是静态初始化 在创建数组时,直接将元素确定13。9。2静态初始化格式完整版格式数据类型〔〕数组名new数据类型〔〕{元素1,元素2,。。。};1。简化版格式数据类型〔〕数组名{元素1,元素2,。。。};1。13。9。3示例代码13。10数组操作的两个常见小问题13。10。1索引越界异常出现原因 数组长度为3,索引范围是02,但是我们却访问了一个3的索引。 程序运行后,将会抛出ArrayIndexOutOfBoundsException数组越界异常。在开发中,数组的越界异常是不能出现的,一旦出现了,就必须要修改我们编写的代码。解决方案 将错误的索引修改为正确的索引范围即可!13。10。2空指针异常出现原因 arrnull这行代码,意味着变量arr将不会在保存数组的内存地址,也就不允许再操作数组了,因此运行的时候会抛出NullPointerException空指针异常。在开发中,数组的越界异常是不能出现的,一旦出现了,就必须要修改我们编写的代码。解决方案 给数组一个真正的堆内存空间引用即可!13。11数组遍历数组遍历:就是将数组中的每个元素分别获取出来,就是遍历。遍历也是数组操作中的基石。以上代码是可以将数组中每个元素全部遍历出来,但是如果数组元素非常多,这种写法肯定不行,因此我们需要改造成循环的写法。数组的索引是0到lenght1,可以作为循环的条件出现。13。12数组最值最大值获取:从数组的所有元素中找出最大值。实现思路:定义变量,保存数组0索引上的元素遍历数组,获取出数组中的每个元素将遍历到的元素和保存数组0索引上值的变量进行比较如果数组元素的值大于了变量的值,变量记录住新的值数组循环遍历结束,变量保存的就是数组中的最大值代码实现:14。方法概述14。1方法的概念 方法(method)是将具有独立功能的代码块组织成为一个整体,使其具有特殊功能的代码集 注意:方法必须先创建才可以使用,该过程成为方法定义方法创建后并不是直接可以运行的,需要手动使用后,才执行,该过程成为方法调用14。2。方法的定义和调用14。2。1无参数方法定义和调用定义格式:范例:调用格式:范例:注意: 方法必须先定义,后调用,否则程序将报错14。2。2方法调用过程图解 总结:每个方法在被调用执行的时候,都会进入栈内存,并且拥有自己独立的内存空间,方法内部代码调用完毕之后,会从栈内存中弹栈消失。14。2。3无参数方法的练习需求:设计一个方法用于打印两个数中的较大数 思路:定义一个方法,用于打印两个数字中的较大数,例如getMax()方法中定义两个变量,用于保存两个数字使用分支语句分两种情况对两个数字的大小关系进行处理在main()方法中调用定义好的方法代码:14。3带参数方法定义和调用14。3。1带参数方法定义和调用定义格式: 参数:由数据类型和变量名组成数据类型变量名 参数范例:inta范例:注意:调用格式:范例:方法调用时,参数的数量与类型必须与方法定义中的设置相匹配,否则程序将报错14。3。2形参和实参形参:方法定义中的参数 等同于变量定义格式,例如:intnumber实参:方法调用中的参数 等同于使用变量或常量,例如:10number14。3。3带参数方法练习需求:设计一个方法用于打印两个数中的较大数,数据来自于方法参数} 思路:定义一个方法,用于打印两个数字中的较大数,例如getMax()为方法定义两个参数,用于接收两个数字使用分支语句分两种情况对两个数字的大小关系进行处理在main()方法中调用定义好的方法(使用常量)在main()方法中调用定义好的方法(使用变量)代码:14。4带返回值方法的定义和调用14。4。1带返回值方法定义和调用定义格式范例 注意:方法定义时return后面的返回值与方法定义上的数据类型要匹配,否则程序将报错调用格式范例 注意:方法的返回值通常会使用变量接收,否则该返回值将无意义14。4。2带返回值方法练习需求:设计一个方法可以获取两个数的较大值,数据来自于参数思路:定义一个方法,用于获取两个数字中的较大数使用分支语句分两种情况对两个数字的大小关系进行处理根据题设分别设置两种情况下对应的返回结果在main()方法中调用定义好的方法并使用变量保存在main()方法中调用定义好的方法并直接打印结果代码:14。5方法的注意事项14。5。1方法的注意事项方法不能嵌套定义示例代码:void表示无返回值,可以省略return,也可以单独的书写return,后面不加数据示例代码:14。5。2方法的通用格式格式:解释:publicstatic修饰符,目前先记住这个格式 返回值类型方法操作完毕之后返回的数据的数据类型 如果方法操作完毕,没有数据返回,这里写void,而且方法体中一般不写return 方法名调用方法时候使用的标识 参数由数据类型和变量名组成,多个参数之间用逗号隔开 方法体完成功能的代码块 return如果方法操作完毕,有数据返回,用于把数据返回给调用者定义方法时,要做到两个明确明确返回值类型:主要是明确方法操作完毕之后是否有数据返回,如果没有,写void;如果有,写对应的数据类型明确参数:主要是明确参数的类型和数量调用方法时的注意:void类型的方法,直接调用即可非void类型的方法,推荐用变量接收调用14。6方法重载14。6。1方法重载方法重载概念 方法重载指同一个类中定义的多个方法之间的关系,满足下列条件的多个方法相互构成重载多个方法在同一个类中多个方法具有相同的方法名多个方法的参数不相同,类型不同或者数量不同注意:重载仅对应方法的定义,与方法的调用无关,调用方式参照标准格式重载仅针对同一个类中方法的名称与参数进行识别,与返回值无关,换句话说不能通过返回值来判定两个方法是否相互构成重载正确范例:错误范例:14。6。2方法重载练习需求:使用方法重载的思想,设计比较两个整数是否相同的方法,兼容全整数类型(byte,short,int,long)思路:定义比较两个数字的是否相同的方法compare()方法,参数选择两个int型参数定义对应的重载方法,变更对应的参数类型,参数变更为两个long型参数定义所有的重载方法,两个byte类型与两个short类型参数完成方法的调用,测试运行结果代码:14。7方法的参数传递14。7。1方法参数传递基本类型测试代码:结论:基本数据类型的参数,形式参数的改变,不影响实际参数结论依据:每个方法在栈内存中,都会有独立的栈空间,方法运行结束后就会弹栈消失 14。7。2方法参数传递引用类型测试代码:结论:对于引用类型的参数,形式参数的改变,影响实际参数的值结论依据:引用数据类型的传参,传入的是地址值,内存中会造成两个引用指向同一个内存的效果,所以即使方法弹栈,堆内存中的数据也已经是改变后的结果 14。7。3数组遍历需求:设计一个方法用于数组遍历,要求遍历的结果是在一行上的。例如:〔11,22,33,44,55〕思路:因为要求结果在一行上输出,所以这里需要在学习一个新的输出语句System。out。print(内容); System。out。println(内容);输出内容并换行 System。out。print(内容);输出内容不换行 System。out。println();起到换行的作用定义一个数组,用静态初始化完成数组元素初始化定义一个方法,用数组遍历通用格式对数组进行遍历用新的输出语句修改遍历操作调用遍历方法代码:14。7。4数组最大值需求:设计一个方法用于获取数组中元素的最大值思路:定义一个数组,用静态初始化完成数组元素初始化定义一个方法,用来获取数组中的最大值,最值的认知和讲解我们在数组中已经讲解过了调用获取最大值方法,用变量接收返回结果把结果输出在控制台代码:15。Debug模式15。1什么是Debug模式 是供程序员使用的程序调试工具,它可以用于查看程序的执行流程,也可以用于追踪程序执行过程来调试程序。15。2Debug模式操作流程【应用】如何加断点选择要设置断点的代码行,在行号的区域后面单击鼠标左键即可 如何运行加了断点的程序在代码区域右键Debug执行 看哪里看Debugger窗口 看Console窗口 点哪里点StepInto(F7)这个箭头,也可以直接按F7 如何删除断点选择要删除的断点,单击鼠标左键即可 如果是多个断点,可以每一个再点击一次。也可以一次性全部删除 16。基础练习16。1减肥计划if版本16。1。1案例需求 输入星期数,显示今天的减肥活动 周一:跑步 周二:游泳 周三:慢走 周四:动感单车 周五:拳击 周六:爬山 周日:好好吃一顿16。1。2代码实现16。2减肥计划switch版本16。2。1案例需求 输入星期数,显示今天的减肥活动 周一:跑步 周二:游泳 周三:慢走 周四:动感单车 周五:拳击 周六:爬山 周日:好好吃一顿16。2。2代码实现16。3逢七跳过16。3。1案例需求 朋友聚会的时候可能会玩一个游戏:逢七过。 规则是:从任意一个数字开始报数,当你要报的数字包含7或者是7的倍数时都要说:过。 为了帮助大家更好的玩这个游戏,这里我们直接在控制台打印出1100之间的满足逢七必过规则的数据。 这样,大家将来在玩游戏的时候,就知道哪些数据要说:过。16。3。2代码实现16。4不死神兔16。4。1案例需求 有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子, 假如兔子都不死,问第二十个月的兔子对数为多少?16。4。2代码实现16。5百钱白鸡16。5。1案例需求 我国古代数学家张丘建在《算经》一书中提出的数学问题:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。 百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?16。5。2代码实现16。6数组元素求和16。6。1案例需求 有这样的一个数组,元素是{68,27,95,88,171,996,51,210}。求出该数组中满足要求的元素和, 要求是:求和的元素个位和十位都不能是7,并且只能是偶数16。6。2代码实现16。7判断两个数组是否相同16。7。1案例需求 定义一个方法,用于比较两个数组的内容是否相同16。7。2代码实现publicclassTest07{publicstaticvoidmain(String〔〕args){int〔〕arr{11,22,33,44,55};int〔〕arr2{11,22,33,44,5};booleanflagcompare(arr,arr2);System。out。println(flag);}publicstaticbooleancompare(int〔〕arr,int〔〕arr2){if(arr。length!arr2。length){returnfalse;}for(intx0;x16。8查找元素在数组中出现的索引位置16。8。1案例需求 已知一个数组arr{19,28,37,46,50};键盘录入一个数据,查找该数据在数组中的索引。 并在控制台输出找到的索引值。如果没有查找到,则输出116。8。2代码实现16。9数组元素反转16。9。1案例需求 已知一个数组arr{19,28,37,46,50};用程序实现把数组中的元素值交换, 交换后的数组arr{50,46,37,28,19};并在控制台输出交换后的数组元素。16。9。2代码实现16。10评委打分16。10。1案例需求 在编程竞赛中,有6个评委为参赛的选手打分,分数为0100的整数分。 选手的最后得分为:去掉一个最高分和一个最低分后的4个评委平均值(不考虑小数部分)。16。10。2代码实现 文章知识点与官方知识档案匹配,可进一步学习相关知识