版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第1章
Java中的基础知识主要内容本章主要讲解Java语言的基础知识,包括Java简介、开发环境搭建和Java基础语法。其中Java简介包括Java的历史和发展、Java的特点以及Java平台与Java虚拟机;开发环境搭建包括JDK的下载、安装、配置以及IntelliJIDEA的下载、安装和使用;Java基础语法包括数据类型、标识符、变量、运算符、语句和数组。学习目标了解:Java的历史和发展,能够简述Java的起源及其演变过程;Java平台的组成;Java语言的特点;JDK的组成部分。理解:Java虚拟机(JVM)的作用和工作原理;Java中的基本数据类型和引用数据类型之间的区别;不同作用域内的变量生命周期。掌握:能够下载并安装Java开发工具包(JavaDevelopmentKit,JDK);能够配置path环境变量,确保开发环境正确设置;能够下载、安装并配置IntelliJIDEA开发环境,能够在IDEA中创建和运行Java项目;掌握标识符的命名规则;变量的声明、初始化和使用;掌握Java常见的运算符(算术运算符、关系运算符、逻辑运算符等),能够编写简单的算术运算表达式;Java中的常见语句(如条件语句、循环语句、跳转语句等),并能编写简单的控制流程代码;掌握一维、二位数组的定义、初始化和遍历。CONTENTS目录1.2开发环境搭建1.3Java基础语法1.1Java简介Java简介1.11.1.1Java的历史和发展-1Java的历史Java诞生背景1991年由JamesGosling团队在SunMicrosystems公司启动GreenProject项目,旨在为消费电子设备设计编程语言。核心设计理念1992年Java定位于跨平台兼容性,通过虚拟机技术解决软件平台适配难题。首次公开发布1995年Java1.0以“WriteOnce,RunAnywhere”理念发布,支持JVM实现跨操作系统运行。Java早期发展1996年Java1.1发布,新增JavaBeans与JDBC特性,推动数据库与企业级应用开发;次年成为企业首选语言,JavaApplets技术引领Web浏览器插件开发浪潮。平台分版演进1999年Java2平台划分J2SE(标准版)、J2EE(企业版含Servlet/JSP)、J2ME(移动版),实现从单一桌面到全场景开发的平台战略转型。技术生态扩张通过分层架构支持桌面、企业级及嵌入式系统开发,Servlet/JSP等技术强化Web服务能力,奠定Java跨领域技术生态基础。1.1.1Java的历史和发展-1Java的历史Java5发布2004年Java5推出泛型、元数据注解及增强型循环,大幅提升代码灵活性与开发效率。Java6优化2006年Java6聚焦性能提升,强化Web服务支持,优化企业级应用扩展能力。Oracle收购影响2009年Oracle收购Sun后接管Java主导权,推动技术生态进入新发展阶段。1.1.1Java的历史和发展-1Java的历史Java7特性2011年Java7发布,新增NIO2API与Switch字符串支持,优化语言功能及执行性能。Java8革新2014年Java8引入Lambda表达式与StreamAPI,实现函数式编程,革新集合数据处理方式。Java9模块化2017年Java9推出模块系统(ProjectJigsaw),强化大型应用依赖管理,提升架构清晰度。1.1.1Java的历史和发展-1Java的历史Java10与11演进2018年发布Java10,支持局部变量类型推断(var),2019年发布Java11成为LTS版本,优化硬件兼容性并精简冗余API。Java版本迭代策略2020年及其后Java加速更新,每年发布多版本,聚焦云计算、AI等领域,如Java12改进垃圾回收机制。1.1.1Java的历史和发展-1Java的历史1.1.1Java的历史和发展-2.Java的未来发展方向企业级应用生态Java在金融、电信、医疗等领域持续主导,大企业核心系统依赖其稳定性,开发者需求稳定且就业面广。微服务技术趋势SpringBoot与SpringCloud框架推动Java在分布式系统开发中的高效实践,适应微服务架构演进。大数据领域优势Hadoop与ApacheSpark等技术栈强化Java在大数据处理中的核心地位,支撑实时分析系统建设。Java新特性演进Java8引入Lambda与StreamAPI强化函数式编程,后续版本持续演进模块化、JVM优化及垃圾回收机制,支撑现代开发需求。技术生态融合Java深度整合微服务、容器化及云原生架构,同步拓展人工智能、区块链等前沿领域,构建跨平台技术生态体系。1.1.1Java的历史和发展-2.Java的未来发展方向长期支持(LTS)和稳定性JavaLTS版支持长期稳定使用,广泛社区与生态提升开发者就业竞争力。1.1.1Java的历史和发展-2.Java的未来发展方向Android开发现状Java在Android领域仍具竞争力,现有应用与开源库多基于Java,开发者就业市场地位稳固。嵌入式与IoT应用Java跨平台特性适配多样硬件,支撑嵌入式系统及物联网开发,拓宽技术应用场景。1.1.1Java的历史和发展-2.Java的未来发展方向高薪资和就业机会Java开发者薪资优厚,全球需求大,就业竞争力强。1.1.1Java的历史和发展-2.Java的未来发展方向后端开发应用Java在大型分布式系统、微服务及API开发领域需求旺盛,企业级应用与数据库管理岗位持续增长。大数据技术融合Java开发者可拓展至Hadoop、Spark等框架开发,结合云平台部署能力,适配AWS、Azure等场景。架构设计演进资深Java工程师向技术架构师转型,主导复杂系统优化,推动高可用性与可扩展性方案落地。1.1.1Java的历史和发展-2.Java的未来发展方向移动生态适配尽管Kotlin兴起,Java仍是Android基础语言,适配工具链成熟度保障移动端长期技术话语权。跨领域竞争力Java凭借稳定性与跨平台特性,在企业应用、微服务及大数据领域维持高就业密度与薪资水平。1.1.1Java的历史和发展-2.Java的未来发展方向1.1.2Java的特点跨平台性Java的"一次编写,到处运行"特性,通过JVM实现跨平台性,无需修改代码。面向对象Java:封装安全,继承复用,多态灵活,抽象隐藏。安全性Java多维安全:内存管理防泄漏,沙箱限权抗恶意,类加载验安全。1.1.2Java的特点高性能Java高性能源于JIT编译提升速度,GC机制优化内存管理。多线程支持Java多线程提升效率,支持大规模数据处理与并行操作。自动内存管理Java的自动垃圾回收机制保障程序稳定运行,免去手动内存管理烦恼。1.1.2Java的特点RichAPIJava标准库丰富,覆盖多领域,提升开发效率。分布式编程Java通过RMI、Socket及WebServices技术,支持网络编程,广泛应用于大数据、云计算和微服务的分布式系统开发。可扩展性ScalabilityJava,高度可扩展,适配大小应用,模块化设计,优秀并发处理。1.1.2Java的特点动态性(Dynamic)Java:动态加载类,支持反射,运行时操作类属性和方法。社区和生态Java的庞大社区与生态系统,提供丰富开源资源,高效开发工具,如Spring、Hibernate等框架。1.1.2Java的特点:多样的开发领域企业级应用开发企业级应用涵盖大规模分布式系统、金融及银行系统,Java凭借稳定架构成为核心开发语言。移动与Web开发Android生态以Java为基础构建,结合Spring等框架支撑高效Web服务,适应敏捷迭代需求。大数据与嵌入式领域Java深度集成Hadoop、Spark处理海量数据,同时应用于物联网设备,确保高并发场景稳定性。1.1.3Java平台与Java虚拟机-1.Java平台(JavaPlatform)Java平台Java平台是一个由多种组件组成的综合技术系统,用于开发和运行Java应用程序。它不仅包括Java编程语言本身,还包括运行Java程序所需的相关工具、API和虚拟机等。Java平台的核心组成部分核心包含Java编程语言、Java标准库、Java开发工具包(JDK)、Java运行时环境(JRE)Java语言(JavaProgrammingLanguage)Java编程语言是平台的核心,所有的Java应用程序都是用Java编程语言编写的。Java编程语言以其简单、面向对象和强大的库支持(标准库和框架)为开发者提供了丰富的功能。Java标准库(JavaStandardLibrary)Java标准库支持文件I/O、网络编程、集合、GUI、数据库连接等多功能。Java开发工具包(JDK)JDK:含编译、调试、运行Java程序所需工具及API的开发包。Java运行时环境(JRE)JRE含JVM、类库,用于运行Java程序,不包含开发工具。1.1.3Java平台与Java虚拟机-1.Java平台(JavaPlatform)1.1.3Java平台与Java虚拟机-2.Java虚拟机(JVM)字节码加载JVM从硬盘加载编译后的.class文件到内存,确保程序初始化运行环境。字节码执行JVM通过解释执行或JIT编译将字节码转化为底层机器码,实现高效代码运行。内存管理机制JVM管理堆内存(对象存储)、栈内存(变量与调用信息)及方法区(类信息存储)。自动内存回收JVM通过垃圾回收器自动回收无效对象内存,避免资源泄漏与内存溢出问题。运行时异常处理JVM监控程序异常状态,通过结构化异常处理机制保障系统稳定性。(1)JVM的基本功能源代码编译Java源代码经编译器转换为字节码文件,确保跨平台兼容性,生成与操作系统无关的中间代码。字节码加载类加载器将字节码载入内存,由JVM组件解析并初始化,支持动态类加载与安全管理。字节码验证验证机制扫描字节码安全性,阻止非法指令与内存溢出,保障执行环境稳定可靠。解释执行或JIT编译JVM通过解释器逐行执行字节码,或利用JIT将高频代码转为机器码,优化运行效率。垃圾回收自动回收无用对象内存,通过分代算法与标记清除策略,维持系统资源高效利用。1.1.3Java平台与Java虚拟机-2.Java虚拟机(JVM)(2)JVM的工作原理平台无关性Java源码编译为字节码,与操作系统无关。JVM将字节码转为特定平台机器码,确保跨系统兼容性。JVM实现差异不同操作系统对应不同JVM实现,如Windows由Oracle提供,Linux为优化版本。各实现均遵循规范,保障程序可移植性。1.1.3Java平台与Java虚拟机-2.Java虚拟机(JVM)(3)JVM的跨平台特性JVM使得Java平台具备跨平台性JVM是Java平台的执行引擎,确保跨平台运行,负责字节码的解释与执行。1.1.3Java平台与Java虚拟机-3.Java平台与JVM的关系1.1.3Java平台与Java虚拟机-4.JVM的实现JVM实现商Oracle提供HotSpotJVM作为JDK默认实现,IBM开发OpenJ9专注云优化,GraalVM支持多语言运行与即时编译技术。JVM版本差异不同版本如JVM8与11在性能调优、垃圾回收策略及内存管理机制存在差异,开发者可根据应用场景选择适配版本。开发环境搭建1.21.1.2JDK的下载、安装和配置-1.JDK下载步骤访问JDK官方下载页面访问Oracle官网,下载最新JDK,链接:/java/technologies/javase-downloads.html选择JDK版本JDK版本分LTS与非LTS,前者稳定适合企业,后者含新特性宜尝鲜。选择合适的操作系统OracleJDK支持多平台:Windows(.exe),macOS(.dmg),Linux(.rpm/.tar.gz)。Windows安装指南下载.exe安装包,双击运行并按提示操作,可自定义安装路径(默认C:\ProgramFiles\Java),完成后配置JAVA_HOME与Path环境变量。macOS安装说明下载.dmg文件后双击安装,路径固定为/Library/Java/JavaVirtualMachines,无需手动配置环境变量。Linux安装流程下载.rpm或.tar.gz文件,前者用rpm命令安装,后者需解压并手动设置环境变量完成配置。1.1.2JDK的下载、安装和配置-1.JDK下载步骤1.2.1JDK的下载、安装和配置-1.JDK下载步骤安装验证安装完成后,打开命令行输入命令检查版本,Windows使用命令提示符,macOS和Linux使用终端。版本确认执行java-version显示JRE版本,javac-version显示JDK编译器版本,输出含具体版本号及构建信息即为安装成功。1.2.1JDK的下载、安装和配置-2.配置环境变量(Windows)配置JAVA_HOME设置JAVA_HOME:右击电脑,属性,高级设置,环境变量,新建JAVA_HOME,填JDK路径。设置Path编辑系统Path,新增JDKbin目录,如C:\ProgramFiles\Java\jdk-17\bin。验证环境变量重启命令提示符,验证java及javac版本,确认配置成功。开始Java编程安装JDK,配置环境变量,选择LTS版本,开始稳定Java编程。1.2.2IntelliJIDEA的下载、安装和使用-1.IntelliJIDEA下载访问IntelliJIDEA官网访问IntelliJIDEA官网,探索高效开发新体验。1.2.2IntelliJIDEA的下载、安装和使用-1.IntelliJIDEA下载版本对比IntelliJIDEA提供社区版与专业版,社区版免费开源,适合基础Java开发;专业版付费,支持Web、企业级框架及数据库工具。功能差异社区版含Java编程与调试基础功能,专业版扩展Spring、JavaEE等企业级框架支持,满足复杂开发需求。版本选择建议仅需Java基础开发可选社区版,免费且高效;需高级功能则选专业版,兼顾成本与开发场景适配性。1.2.2IntelliJIDEA的下载、安装和使用-1.IntelliJIDEA下载下载IntelliJIDEA选择平台,下载IntelliJIDEA安装包,Windows获.exe,macOS得.dmg,Linux取.tar.gz。1.2.2IntelliJIDEA的下载、安装和使用-2.IntelliJIDEA安装Windows安装下载.exe,双击运行,选路径,勾选添加至PATH,点击Install,Finish完成。macOS安装双击.dmg包,将IntelliJIDEA拖至Applications,安装完毕,Launchpad或Finder可启动。Linux安装解压Linux下的.tar.gz文件,运行bin/idea.sh启动IntelliJIDEA,或创建快捷方式。1.2.2IntelliJIDEA的下载、安装和使用-3.配置IntelliJIDEA初次启动IntelliJIDEA启动IntelliJIDEA,可选主题配置,首次使用无需导入旧设置。配置JDKIDEA开发Java,配置JDK:ProjectSDK选已装,未装则Add,指定目录。设置环境变量(Windows)确保Windows配置JDK环境变量,IntelliJIDEA可正确识别使用。1.2.2IntelliJIDEA的下载、安装和使用-4.创建Java项目创建新项目启动IntelliJIDEA,创建Java项目,设置名称与路径,完成配置。添加Java类在IntelliJIDEA中创建Java类,编写并运行"Hello,IntelliJIDEA!"程序。运行项目点击绿色运行按钮或按Shift+F10,编译运行项目,查看Run面板输出结果。1.2.2IntelliJIDEA的下载、安装和使用-5.常用功能和技巧自动补全和提示IntelliJIDEA助力高效编码,自动补全、智能提示减少错误。调试功能IDEA调试功能强大,设断点,查变量,助你精准掌控程序执行。版本控制集成IntelliJIDEA内置Git、Subversion版本控制,支持代码提交、更新与分支管理。插件支持IntelliJIDEA插件生态丰富,支持多语言、框架和工具,可在设置中搜索安装。1.2.2IntelliJIDEA的下载、安装和使用-5.常用功能和技巧自动更新机制IntelliJIDEA支持自动检测更新,用户可通过Help菜单手动检查,系统将自动下载并安装更新,无需重新配置环境。核心功能优势集成智能代码补全、高效调试工具及丰富插件系统,显著提升Java开发效率,优化代码质量与项目管理流程。Java基础语法1.31.3.1Java中的数据Java数据Java数据涵盖数字、字符、字符串及布尔值,存储于内存并通过运算符处理.整型数据Java整型数据:无小数点,支持八、十、十六进制。字符数据Java中字符数据用单引号括起,内存中以16位Unicode编码表示。1.3.1Java中的数据字符串数据Java中,字符串由双引号括起,可含多个字符,区别于单引号字符数据。布尔型数据布尔型数据:仅含true、false两种值。浮点型数据在Java中,浮点型数据用于表示带有小数部分的数值,如1.0、0.5等。1.3.2数据类型Java特性Java是一种强类型语言,每个数据在编译时需明确声明其数据类型,确保类型安全。数据类型分类Java数据类型分为基本数据类型和引用数据类型,基本类型直接存储值,引用类型存储对象的引用。1.3.2数据类型-1.基本数据类型(PrimitiveTypes)Java基本数据类型概览Java有8种固定大小和存储范围的基本数据类型,直接存储数据,无方法。整型数据类型详解整型数据类型:byte、short、int、long,大小、范围各异,适用场景多样。1.3.2数据类型-1.基本数据类型(PrimitiveTypes)浮点数类型float占4字节,范围1.4E-45到3.4E+38,保留6-7位有效数字,适用于精度要求较低的数值存储。数值精度标准double占8字节,数值范围4.9E-324到1.8E+308,支持15-16位有效数字,作为默认浮点类型处理高精度运算。字符存储规范char类型占2字节,取值范围0-65535(无符号),用于存储单个字符及其Unicode编码值。布尔型数据类型说明布尔型:大小未知,true/false,用于逻辑判断。1.3.2数据类型-1.基本数据类型(PrimitiveTypes)1.3.2数据类型-2.引用数据类型(ReferenceTypes)引用数据类型引用数据类型通过内存地址标识对象,不直接存储数据内容,支持类、数组及接口等复合数据结构。组成类型包含类实例、数组集合与接口定义,通过地址传递实现高效数据共享与操作。类(class)类,面向对象编程基础,含字段和方法,实例化为引用类型。数组(Array)数组:存储同一类型元素的集合,如int[]和String[]。接口(interface)接口定义方法规范,需类重写,属引用类型。1.3.2数据类型-3.Java中基本数据类型和引用数据类型的区别Java参数传递采用传值方式,基本类型传递值的副本,引用类型传递对象引用的副本,两者修改行为存在差异。修改影响差异基本类型方法内修改不影响原值,引用类型可修改对象内容但无法改变外部引用指向的对象实例。(1)参数传递的区别示例:publicclassMain{publicstaticvoidmain(String[]args){intnum=10;modifyInt(num);//传递的是num的副本System.out.println("AftermodifyInt:"+num);//输出10}publicstaticvoidmodifyInt(intn){n=20;//修改的是n的副本,不影响外部num}}示例publicclassMain{publicstaticvoidmain(String[]args){Personperson=newPerson("Alice");modifyPerson(person);//传递的是person对象的引用System.out.println("AftermodifyPerson:"+);//输出Bob}publicstaticvoidmodifyPerson(Personp){="Bob";//修改的是p所指向的对象的内容}}classPerson{Stringname;Person(Stringname){=name;}}(2)内存存储的区别内存存储方式基本数据类型的变量存储在栈内存中,直接保存数据的值,无需额外操作。生命周期管理基本数据类型的变量在栈上分配内存,随着方法的执行和退出,内存自动释放,无需手动回收。内存消耗特性每个基本数据类型的内存占用是固定的,大小不可变,如int类型始终占4字节。1.3.2数据类型-3.Java中基本数据类型和引用数据类型的区别内存存储方式引用数据类型的变量存储在栈内存中,存储对象的内存地址;对象本身位于堆内存,通过地址关联。生命周期管理栈内存中的引用变量存在时,堆内存对象不被回收;当无引用指向时,对象由垃圾回收机制处理。内存消耗构成引用类型内存包含栈内存的地址存储空间,以及堆内存中对象实际数据的完整大小。(2)内存存储的区别1.3.2数据类型-3.Java中基本数据类型和引用数据类型的区别拓展阅读-1.自动类型转换与强制类型转换自动类型转换(隐式转换)Java中,小范围数据类型可自动转换为大范围类型,如int转long。强制类型转换(显式转换)Java中大类型转小类型,如double转int,可能丢失数据。拓展阅读-2.Java中的默认值基本数据类型的默认值基本数据类型默认值:数值零,浮点零,空字符,布尔假。引用数据类型的默认值Java引用数据类型默认值为null,包括对象和数组引用。1.3.3变量-1.变量的定义变量的概念与比喻变量如带标签的盒子,存储特定类型数据。Java中的变量与内存Java变量即内存地址别名,存储可变数据,类型多样。定义变量的基本格式Java变量定义:类型名;如:inta;也可直接赋值,类名
名=值;如:doubleb=1.0;1.3.3变量-2.Java变量的分类Java变量分类Java中变量分为局部变量、实例变量和类变量,各自在不同作用域内使用。变量作用域局部变量作用于方法、循环或条件语句中,实例变量属于对象,类变量为所有实例共享。1.3.3变量-2.Java变量的分类局部变量定义在方法、构造方法或语句块中定义,生命周期限于方法执行过程,必须在使用前完成初始化。作用域特性仅在定义它的方法或语句块内部有效,无法在外部访问,具有明确的作用域边界。生命周期管理通过方法调用创建实例,随方法执行结束自动销毁,内存回收机制自动处理。初始化规则编译器要求显式赋初始值,禁止直接使用未初始化变量,避免空指针异常。代码实例解析publicclassMain{publicstaticvoidmain(String[]args){intnum=10;//局部变量System.out.println(num);}}1.3.3变量-2.Java变量的分类实例变量定义实例变量属于对象,定义在类中但不位于方法内,每个对象拥有独立实例变量,内存随对象创建与销毁分配释放。实例变量特点对象实例属性,可在类中任意方法访问,初始化于对象创建时,销毁于对象回收时,未显式赋值则自动取默认值。实例变量示例classPerson{Stringname;//实例变量intage;//实例变量publicPerson(Stringname,intage){=name;this.age=age;}publicvoiddisplay(){System.out.println("Name:"+name+",Age:"+age);}}publicclassMain{publicstaticvoidmain(String[]args){Personperson1=newPerson("Alice",25);//创建对象person.display();}}1.3.3变量-2.Java变量的分类类变量定义类变量使用static声明,属于类而非对象,类加载时初始化,所有实例共享,推荐通过类名访问。类变量特点类变量在类加载时创建,随类卸载销毁,所有对象共享同一变量,通过类名或实例均可访问。示例解析classCounter{staticintcount=0;//类变量,使用static关键字声明publicCounter(){count++;//每创建一个对象,count增加}publicstaticvoiddisplay(){System.out.println("Count:"+count);}}publicclassMain{publicstaticvoidmain(String[]args){Counterc1=newCounter();Counterc2=newCounter();Counter.display();//输出Count:2}}1.3.3变量-3.变量的初始化01Java变量初始值概述Java变量默认初始化:局部变量需显式。02默认值概述数字默认0,布尔默认false,字符默认'\u0000'。03引用类型的默认值引用类型:null变量初始化规则实例变量默认值由Java自动赋予,如int型默认0,boolean型默认false,需在对象创建后生效。实例变量特性非静态变量需通过对象实例访问,初始化顺序遵循声明顺序,未显式赋值时采用类型默认值。1.3.3变量-3.变量的初始化1.3.3变量-4.Java变量的作用域局部变量特性局部变量在方法或代码块内定义,仅限该范围访问,跨方法使用将导致编译错误。作用域限制示例publicclassVariableScopeExample{publicvoidmethod1(){//局部变量intlocalVar=10;System.out.println("Insidemethod1,localVar:"+localVar);}publicvoidmethod2(){//访问局部变量localVar会报错,因为它在method1中定义,作用域只限于method1//System.out.println(localVar);//编译错误}publicstaticvoidmain(String[]args){VariableScopeExampleexample=newVariableScopeExample();example.method1();example.method2();}}1.3.3变量-4.Java变量的作用域实例变量特性实例变量是类的非static成员变量,作用域覆盖整个类,任何实例方法均可直接访问。生命周期关联实例变量生命周期始于对象创建,终于对象销毁,与对象实例存在时间完全同步。方法访问实例变量publicclassVariableScopeExample{//实例变量intinstanceVar=5;publicvoidmethod1(){System.out.println("Insidemethod1,instanceVar:"+instanceVar);}publicvoidmethod2(){System.out.println("Insidemethod2,instanceVar:"+instanceVar);}publicstaticvoidmain(String[]args){VariableScopeExampleexample=newVariableScopeExample();example.method1();//输出:Insidemethod1,instanceVar:5example.method2();//输出:Insidemethod2,instanceVar:5}}1.3.3变量-4.Java变量的作用域类变量定义类变量由static修饰,属于类而非实例,所有实例方法与类方法均可直接访问,作用域覆盖整个类结构。访问方式类变量可通过实例方法、类方法及类名直接访问,推荐使用类名访问,如VariableScopeExample.classVar。示例分析publicclassVariableScopeExample{//类变量(静态变量)staticintclassVar=100;publicvoidmethod1(){//通过实例方法访问类变量System.out.println("Insidemethod1,classVar:"+classVar);}publicstaticvoidmethod2(){//通过类方法访问类变量System.out.println("Insidemethod2,classVar:"+classVar);}
publicstaticvoidmain(String[]args){//直接通过类名访问类变量System.out.println("Insidemain,classVar:"+VariableScopeExample.classVar);VariableScopeExampleexample=newVariableScopeExample();example.method1();//通过实例方法访问类变量VariableScopeExample.method2();//通过类方法访问类变量}}1.3.4标识符-1.标识符的定义标识符定义标识符用于为类、变量、方法、接口、包命名,帮助程序员识别和操作程序元素,增强代码可读性和维护性。1.3.4标识符-2.标识符的规则规则1标识符由字母、数字、_、$组成规则2首字符须为字母、下划线或美元符,禁用数字、关键字。1.3.4标识符-3.标识符的规范类名与接口命名规则类名接口名用大驼峰命名,首字母大写无下划线。变量与方法命名规则采用小驼峰命名法,变量与方法首字母小写,后续单词首字母大写。标识符命名原则标识符命名应有意义,遵循规范,提高代码可读与维护。如方法getName。常量命名规则常量命名:全大写,下划线分隔,如MAX_SIZE。1.3.5运算符及其表达式-算术运算符及其表达式算术运算符运算符示例inta=10,b=5;System.out.println(a+b);//输出15System.out.println(a-b);//输出5System.out.println(a*b);//输出50System.out.println(a/b);//输出2System.out.println(a%b);//输出01.3.5运算符及其表达式-关系运算符及其表达式关系运算符运算符示例inta=10,b=5;System.out.println(a==b);//输出falseSystem.out.println(a!=b);//输出trueSystem.out.println(a>b);//输出trueSystem.out.println(a<b);//输出falseSystem.out.println(a>=b);//输出trueSystem.out.println(a<=b);//输出false1.3.5运算符及其表达式-逻辑运算符(LogicalOperators)及其表达式逻辑运算符
逻辑运算符示例booleana=true,b=false;intcounter=0;System.out.println(a&&b);//输出falseSystem.out.println(a||b);//输出trueSystem.out.println(!a);//输出false//使用&&,右侧不会被计算,因为左侧已为falseif(false&&counter++>1){System.out.println("counter"+counter);//使用&,右侧会被计算,即使左侧为falseif(false&counter++>1){System.out.println("counter"+counter);}//使用||,右侧不会被计算,因为左侧已为trueif(true||counter++>1){System.out.println("counter"+counter);}//使用|,右侧会被计算,即使左侧为falseif(true|counter++>1){System.out.println("counter"+counter);}1.3.5运算符及其表达式-赋值运算符(AssignmentOperators)及其表达式赋值运算符赋值运算符示例inta=10,b=5;a+=b;//a=a+b,结果a=15a-=b;//a=a-b,结果a=10a*=b;//a=a*b,结果a=50a/=b;//a=a/b,结果a=10a%=b;//a=a%b,结果a=01.3.5运算符及其表达式-自增与自减运算符及其表达式自增与自减运算符
自增与自减运算符示例inta=10;System.out.println(a++);//输出10,先使用再加1,结果a=11System.out.println(++a);//输出12,先加1再使用System.out.println(a--);//输出12,先使用再减1,结果a=11System.out.println(--a);//输出10,先减1再使用1.3.5运算符及其表达式-位运算符(bitwiseoperators)及其表达式位运算符
位运算符示例inta=5,b=3;//5=0101,3=0011System.out.println(a&b);//输出1(按位与)System.out.println(a|b);//输出7(按位或)System.out.println(a^b);//输出6(按位异或)System.out.println(~a);//输出-6(按位取反)System.out.println(a<<1);//输出10(左移一位)System.out.println(a>>1);//输出2(右移一位)1.3.5运算符及其表达式-三元运算符(ternaryoperator)及其表达式三元运算符
三元运算符示例inta=10,b=5;intresult=(a>b)?a:b;//如果a大于b,返回a,否则返回bSystem.out.println(result);//输出101.3.5运算符及其表达式-实例化运算符(instanceofoperator)及其表达式实例化运算符实例化运算符示例Stringstr="Hello";booleanresult=strinstanceofString;//返回true,因为str是String类的实例System.out.println(result);//输出true1.3.5-2.运算符的优先级Java运算符优先级规则Java运算符优先级:括号最高,单目次之,算术高于关系,逻辑最低。1.3.5运算符的优先级:Java运算符优先级示例publicclassOperatorPrecedenceExample{publicstaticvoidmain(String[]args){inta=10,b=5,c=20;//示例1:运算符优先级与括号intresult1=a+b*c;//结果为a+(b*c),因为*的优先级高于+System.out.println("result1=a+b*c="+result1);//结果为10+(5*20)=110//示例2:使用括号改变运算顺序intresult2=(a+b)*c;//结果为(a+b)*c,括号优先System.out.println("result2=(a+b)*c="+result2);//结果为(10+5)*20=300//示例3:运算符优先级与关系运算符booleanresult3=a>b&&c>a;//结果为(a>b)&&(c>a),&&的优先级低于>System.out.println("result3=a>b&&c>a="+result3);//结果为true//示例4:复杂的表达式intresult4=a+b*c/(a-b);//结果为a+((b*c)/(a-b)),*和/高于+和-System.out.println("result4=a+b*c/(a-b)="+result4);/*结果为10+(5*20)/(10-5)=10+100/5=10+20=30*///示例5:逻辑运算符booleanresult5=a>b||c<a;//结果为(a>b)||(c<a),||优先级低于>System.out.println("result5=a>b||c<a="+result5);//结果为true||false=true//示例6:赋值运算符intresult6=5+3;//结果为5+3,因为加法的优先级高于赋值运算符result6*=2;//结果为result6*2,乘法的优先级高于赋值运算符System.out.println("result6="+result6);//结果为16}}1.3.6语句-1.表达式语句表达式语句特点由表达式构成,常用于赋值、调用方法或运算,必须以分号结尾。表达式语句示例如inta=5;a++;System.out.println(a);分别代表赋值、自增和方法调用。1.3.6语句-2.声明语句变量声明在编程中,声明一个整型变量number,用于存储数值数据,无需初始化即可使用。intnumber;//声明变量常量定义定义一个双精度浮点型常量PI,其值为3.14,用于数学计算,值不可更改。finaldoublePI=3.14;//定义常量1.3.6语句-3.控制流语句:条件语句if语句在Java中,if语句用于基于单个条件执行代码块,格式为:if(条件){//执行代码块},例如:if(x>10){System.out.println("x大于10");}if...else语句if...else语句在Java中用于基于条件执行两个不同的代码块,格式为:if(条件){//执行代码块1}else{//执行代码块2}例如:if(x>10){System.out.println("x大于10");}
else{System.out.println("x小于等于10");}1.3.6语句-3.控制流语句:条件语句if...elseif...else语句if...elseif...else语句在Java中用于基于多个条件执行不同的代码块;格式为:if(条件1){//执行代码块1}elseif(条件2){//执行代码块2}else{//执行代码块3}例如:if(x>10){System.out.println("x大于10");}elseif(x>5){System.out.println("x大于5但小于等于10");}else{System.out.println("x小于等于5");}1.3.6语句-3.控制流语句:条件语句switch语句switch语句在Java中用于基于不同情况执行不同的代码块格式为:switch(表达式){
case常量1://执行代码块1break;case常量2://执行代码块2break;default://默认执行代码块}例如:switch(x){
case1:System.out.println("x等于1");break;
case2:System.out.println("x等于2");break;
default:System.out.println("x不等于1或2");}1.3.6语句-控制流语句:循环语句for循环:固定次数的循环for(inti=0;i<5;i++){System.out.println(i);}while循环:条件满足时重复执行intcount=0;while(count<5){System.out.println(count);count++;}do-while循环:先执行后判断intcount=0;do{System.out.println(count);count++;}while(count<5);1.3.6语句-控制流语句:跳转语句break语句使用①break:跳出当前循环或switch语句,示例:for(inti=0;i<5;i++){if(i==3)break;//跳出循环System.out.println(i);}continue语句使用②continue:跳过当前循环的剩余部分,进入下一次循环,示例:for(inti=0;i<5;i++){if(i==3)continue;//跳过当前循环System.out.println(i);}return语句使用③return:结束方法的执行,并返回值(如果有),示例:publicintadd(inta,intb){returna+b;//返回结果}1.3.6语句-异常处理语句异常捕获机制用于捕获和处理运行时异常,保证程序的健壮性。try块捕获异常"try块用于包裹可能抛出异常的代码,如除数为零的操作。"catch块处理异常②catch块处理异常。catch(ArithmeticExceptione){finally块执行代码"finally块确保代码始终执行,无论异常是否发生。"try{intresult=10/0;//可能抛出异常}catch(ArithmeticExceptione){System.out.println("Cannotdividebyzero");}finally{System.out.println("Executioncomplete");}1.3.6语句-同步语句synchronized语句应用在多线程环境中,使用synchronized关键字确保同一时刻只有一个线程能访问特定代码段,如打印线程安全操作信息。synchronized示例synchronized(this){//线程安全的代码块System.out.println("Thread-safeoperation");}1.3.6语句-代码块语句①
普通代码块:一组用{}包围的语句。②
静态代码块:在类加载时执行,仅执行一次。③
实例代码块:在每次创建对象时执行。classExample{static{System.out.println("Staticblock");}{System.out.println("Instanceblock");}publicExample(){System.out.println("Constructor");}}publicclassMain{publicstaticvoidmain(String[]args){Examplee1=newExample();Examplee2=newExample();}}1.3.7方法-方法的分类01按访问级别分类Java访问修饰符:public、private、protected及包级访问权限概览。02按返回值分类方法按返回值分类:有值返回与void无返回。03按方法所属分类实例方法:依赖于对象,通过对象调用。静态方法:属于类本身,可以直接通过类名调用。04按功能分类分类展现方法特性,涵盖普通、构造、抽象、递归与重载。1.3.7方法-方法的定义Java方法的基本语法[修饰符]返回类型
方法名(参数列表){//方法体return返回值;//如果返回类型不是void,需要使用return。}方法示例//无参数无返回值的方法publicvoidprintHello(){System.out.println("Hello,World!");}//有参数无返回值的方法publicvoidgreet(Stringname){System.out.println("Hello,"+name);}//有参数有返回值的方法publicintadd(inta,intb){returna+b;}//静态方法publicstaticvoidstaticMethod(){System.out.println("Thisisastaticmethod.");}//构造方法publicMyClass(){System.out.println("Constructorinvoked!");}1.3.7方法-方法的调用调用实例方法通过对象调用实例方法,实现无参数、带参数及返回值的调用。//创建对象MyClassobj=newMyClass();//调用无参数方法obj.printHello();//调用带参数方法obj.greet("Alice");//调用有返回值方法并接收结果intsum=obj.add(5,3);System.out.println(sum);//输出8调用静态方法静态方法首选类名调用,对象调用非推荐。MyClass.staticMethod();MyClassobj=newMyClass();//虽然可以,但不建议这样调用静态方法obj.staticMethod();调用递归方法递归解阶乘,自我调用必设退出,5的阶乘得120。publicintfactorial(intn){if(n==1){return1;//退出条件}returnn*factorial(n-1);//调用自身}MyClassobj=newMyClass();//输出120System.out.println(obj.factorial(5));1.3.7方法-方法的调用:调用重载方法方法重载定义示例展示了方法重载,同一方法名处理不同数据类型。调用重载方法//方法定义publicvoiddisplay(Stringtext){System.out.println("Text:"+text);}publicvoiddisplay(intnumber){System.out.println("Number:"+number);}//调用MyClassobj=newMyClass();obj.display("Hello");//调用String类型的重载方法obj.display(123);//调用int类型的重载方法1.3.7方法-注意事项①实例方法需要通过对象调用,静态方法可以通过类名调用。②方法必须定义在类的内部,不能直接定义在类的外部。③方法的返回值类型必须与return的值匹配。④方法的参数是值传递,对基本数据类型传递的是值,对引用数据类型传递的是地址引用。⑤构造方法没有返回值,且名称必须与类名相同。1.3.8数组-数组的定义什么是数组数组是一个固定大小的、有序的元素集合;数组中的元素类型必须相同;数组是一种引用数据类型。数组的特点数组:固定长度、类型一致、基于下标访问。1.3.8数组-数组的分类一维数组一维数组:线性排列元素,如学生成绩列表。二维数组二维数组,即矩阵形式存储数据,如int[][]matrix={{1,2},{3,4}}。1.3.8数组-数组的声明、初始化和使用:声明数组声明数组声明数组:数据类型[]数组名;数据类型
数组名[];例如:int[]arr;//推荐方式intarr[];//也可用,但不推荐1.3.8数组-数组的声明、初始化和使用:初始化数组静态初始化直接为数组分配值:int[]arr={10,20,30,40};动态初始化动态初始化数组,先声明长度,后赋值。int[]arr=newint[4];arr[0]=10;arr[1]=20;访问数组元素通过索引访问数组元素:System.out.println(arr[0]);//输出第一个元素1.3.8数组-二维数组的定义和使用定义二维数组二维矩阵示例int[][]matrix={{1,2,3},{4,5,6},{7,8,9}};动态初始化二维数组int[][]matrix=newint[3][2];//三行两列访问二维数组元素System.out.println(matrix[0][1]);//输出第一行第二列的值1.3.8数组-数组的常用操作获取数组长度使用length属性获取数组长度,如:i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2027年河南平顶山卫东职业学院高职单招职业适应性测试考试模拟试卷【易错题】附答案详解
- 2027年河南濮阳华龙职业学院高职单招职业技能考试模拟试卷及完整答案详解(各地真题)
- 2027年青岛珠山职业学院单招职业技能考试模拟试卷及一套答案详解
- 2026年嵩山少林武术职业学院高职单招职业技能考试题库带答案详解(模拟题)
- 2025年南阳独山职业学院高职单招职业技能考试题库附答案详解【研优卷】
- 2026年乌鲁木齐职业大学专科高职单招职业技能考试题库(黄金题型)附答案详解
- 2026年新疆乌鲁木齐边城职业学院高职单招职业技能考试模拟试卷附答案详解(夺分金卷)
- 2026年石家庄新能源职业学院单招职业技能考试题库含答案详解【模拟题】
- 2027年红船河职业学院高职单招职业适应性测试考试题库及完整答案详解【全优】
- 2024年广东省阳江市高职单招职业适应性测试考试模拟试卷附答案详解【培优B卷】
- 信息技术在学科中的融合
- 国家能源集团陆上风电项目通 用造价指标(2025年)
- DBJ51T 037-2024 四川省绿色建筑设计标准
- 预防性试验作业指导书(变电站10kv分册)
- 人工智能训练师 国家职业技能标准
- 川大拔尖计划试题及答案
- 国家能源集团陆上风电项目通 用造价指标(2024年)
- 现代城市商业综合体规划设计
- 荆防颗粒课件介绍
- 财务共享服务业务处理(全 ) 教案
- 保密协议(中英文对照)
评论
0/150
提交评论