还剩48页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
基础教程Java欢迎参加基础教程学习!本课程为编程初学者提供全面、系统的指Java Java导,帮助您掌握这门强大的编程语言从基本语法到面向对象编程,我们将逐步深入探索的核心概念和实践应用Java简介Java初始阶段正式发布现代发展最初名为,由詹姆斯高斯林领导的团年,公司正式发布语言年被收购后继续发展壮大Oak·1995Sun Java2010Oracle队开发语言诞生于年,由微系统公司(现已被收购)正式发布它最初是由詹姆斯高斯林()及其团队开发,设计目标Java1995Sun Oracle·James Gosling是满足消费电子产品对可移植性的需求的发展历史JavaJDK
1.01996首个稳定版本,确立了的基础架构JavaJ2SE
5.02004引入泛型、注解、枚举等重要特性Java82014添加表达式、流等现代编程特性Lambda APIJava17LTS2021长期支持版本,增强性能和安全性自诞生以来经历了多次重大版本更新,每次更新都为这门语言带来新的特性和改进Java从最初的到现今的,不断发展壮大,满足不断变化的技术需求JDK
1.0Java17Java语言的特点Java跨平台性安全性通过实现一次编写,到处运行,支持各种操作系统内置安全管理机制,自动内存管理,避免内存泄漏JVM面向对象丰富的类库完全面向对象设计,封装、继承、多态等特性支持模块化开发标准提供大量实用功能,加速开发进程API语言以其独特的设计特点在编程语言中脱颖而出它的跨平台特性通过虚拟机()实现,使得同一份代码可以在、、Java JavaJVM WindowsLinux等不同操作系统上运行,大大简化了开发和部署流程MacOS应用领域Java开发Web框架、技术构建企业级网站和应用Spring Servlet移动应用应用开发的首选语言Android企业应用金融、电信等核心业务系统凭借其强大的功能和稳定性,已成为多个技术领域的关键语言在开发方面,通过、等框架支持构建企业级应用,处理高并发、大数据量的业务场景同时,也是移动应用开发的官方语言,全球数十亿移动设备运行着开Java WebJava SpringHibernate JavaAndroid Java发的应用开发环境介绍Java虚拟机JVM Java运行字节码的虚拟机Java运行环境JRE Java包含和类库JVM Java开发工具包JDK Java包含和开发工具JRE开发环境由三个主要组件构成,形成层次结构()是最完整的包,包含了开发应用所需的所有工具,如Java JDKJava DevelopmentKit Java编译器()、调试器和文档生成器()则是运行程序的环境,包含和标准类库,但不包含开javac JREJava RuntimeEnvironment JavaJVM发工具而()是整个平台的基础,负责将字节码转换为特定平台的机器码执行JVM JavaVirtual MachineJava常用开发工具JavaEclipse IntelliJIDEA NetBeans开源免费的集成开发环境,拥有强大的插件基金会支持的开源,自带可视化Apache IDE系统,适合各类项目开发其工作空间构建器,对和开发有良好支Java公司出品的专业,提供GUI JavaFXWebJetBrains Java IDE概念和丰富的重构工具深受开发者喜爱持,适合初学者使用智能代码补全、强大的静态代码分析和内置版本控制支持,被认为是最智能的Java IDE第一个程序Java HelloWorld代码编写编译程序创建文件,编写类和执行生成字HelloWorld.java javacHelloWorld.java方法节码文件main运行程序执行运行程序java HelloWorld编写第一个程序是学习的重要里程碑首先,创建一个文本文件,命名为Java Java(文件名必须与类名一致)然后编写代码,定义一个包含方法HelloWorld.java main的公共类方法是程序的入口点,程序从这里开始执行在方法中,使main Java main用语句输出文本System.out.println Hello,World!程序结构Java包声明package指定类所属的包,例如package com.example;导入语句import导入需要使用的类,例如import java.util.Scanner;类定义class定义类的名称、属性和方法,例如public classMyClass{}主方法main程序入口点public staticvoid mainString[]args{}程序的基本结构遵循严格的组织规则每个源文件通常包含一个公共类(),且文Java Javapublic class件名必须与公共类名完全一致(包括大小写)一个标准程序至少包含一个类定义和一个方Javamain法,作为程序的执行起点基本数据类型Java类型大小范围默认值位byte8-128~1270位short16-32768~327670位int32-2^31~2^31-10位long64-2^63~2^63-10L位约±float
323.40282347E+38F
0.0f位约double
640.0d±
1.79769313486231570E+308位char160~65535\u0000boolean-true/false false提供八种基本数据类型(),分为四类整型()、浮点型(Java primitivedata typesbyte,short,int,long float,)、字符型()和布尔型()这些基本类型直接存储值而非引用,使用时无需创建对象实例,效double charboolean率更高变量与常量变量定义常量定义变量作用域数据类型变量名初始值数据类型常量名值成员变量(类范围)、局部变量(方法范=;final=;围)、块变量(代码块范围)例如例如int count=10;final doublePI=
3.14159;在中,变量是存储数据的容器,拥有特定的数据类型、名称和值变量命名必须遵循一定规则必须以字母、下划线或美元符开头,后跟字母、数Java字、下划线或美元符;不能使用关键字;区分大小写根据命名规范,变量名通常采用驼峰命名法(首字母小写,后续单词首字母大写),如Java JavastudentName运算符算术运算符比较运算符逻辑运算符(加)(减)(乘)(除)(等于)(不等于)(大于)(与)(或)(非)+,-,*,/,==,!=,,,||,!(取余)(自增)(自减)(小于)(大于等于)(小于%,++,--,=,=示例ifage18score=60等于)示例int sum=a+b;{...}示例boolean isEqual=a==b;提供了丰富的运算符用于执行各种操作除了基本的算术、比较和逻辑运算符外,还提供了位运算符(Java Java,|,^,~,,,)用于低级二进制操作,以及赋值运算符(等)提供快捷的赋值方式三元运算符(条件值值)则提=,+=,-=,*=,/=,%=1:2供了简洁的条件判断方式类型转换自动类型转换(隐式)强制类型转换(显式)从小范围类型到大范围类型自动转换从大范围类型到小范围类型需要显式转换语法目标类型变量byte→short→int→long→float→double例如char→int inta=int
3.14;引用类型转换向上转型子类引用转为父类(自动)向下转型父类引用转为子类(需强制)例如Object obj=Hello;String str=Stringobj;中的类型转换分为两种自动类型转换(隐式)和强制类型转换(显式)当将一个较小范围的数据类Java型赋值给较大范围的数据类型时,会自动进行转换,无需特殊语法例如,将类型赋值给类型时,Java intlong会自动将值转换为值这种转换是安全的,不会导致数据丢失Java intlong输入与输出提供了多种方式进行输入输出操作最简单的输出方式是使用对象,它提供了、和等方法,可以将文本输出到控制台Java System.out printprintln printf在输出后会自动添加换行符,而则不会支持格式化输出,类似于语言的函数,可以控制数值的显示格式println printSystem.out.printf Cprintf流程控制语句简介选择结构根据条件执行不同代码路径顺序结构从上到下依次执行的语句循环结构重复执行某段代码流程控制语句是编程语言的核心部分,用于控制程序的执行流程在中,流程控制可以分为三种基本结构顺序结构、选择结构和循环结构顺序结构是Java程序的默认执行方式,即代码从上到下依次执行,不改变执行顺序条件判断语句语句if条件语句块if{}当条件为时执行语句块true语句if-else条件语句块语句块if{1}else{2}条件为执行语句块,否则执行语句块true12语句if-else if-else条件条件if1{...}else if2{...}else{...}多条件分支判断语句switch表达式值语句值语句语句switch{case1:1;break;case2:2;break;default:3;}多值分支判断条件判断语句是控制程序流程的基本工具,允许程序根据不同条件执行不同代码语句是最简单的条件判断,当条件为if true时执行指定代码块;语句则提供了二选一的执行路径;语句可以处理多个条件的情况,按顺序判断,一if-else if-else if-else旦满足条件则执行对应代码块并跳出整个判断结构循环语句循环循环循环for while do-while条件循环体循环体条件while{}do{}while;先判断后执行,条件为时一次也不执行,适合未先执行后判断,至少执行一次,适合需要确保执行一false初始化条件更新循环体for;;{}知循环次数的情况次的情况适用于已知循环次数的情况,结构清晰,三个表达式都可省略循环语句在编程中非常重要,它们允许程序重复执行特定代码块,处理集合数据或实现迭代算法中三种不同循环结构各有特点循环结构清晰,适合确定循环次Java for数的场景;循环简单直观,适合基于条件的不确定次数循环;循环确保至少执行一次,适用于需要先执行后判断的情境whiledo-while跳转语句语句语句break continue立即终止当前循环或语句,继跳过当前循环迭代的剩余部分,直接switch续执行后续代码进入下一次迭代常用于满足特定条件提前结束循环或用于在特定条件下跳过某些处理步骤,定义分支结束点保持循环继续switch语句return立即退出当前方法,可选择返回一个值可用于任何位置终止方法执行,包括循环内部跳转语句改变程序的正常执行流程,提供了更灵活的控制结构语句可以立即终止当前break循环或语句,常用于提前结束循环(如找到特定值后不再继续搜索)或防止语switch switch句的穿透还可以带标签,用于跳出多重嵌套循环case break方法(函数)定义与调用方法声明访问修饰符返回类型方法名参数列表方法体{}参数传递基本类型传值,引用类型传引用返回值使用语句返回指定类型数据return方法是中执行特定任务的代码块,是实现代码重用和模块化的基本单位一个标准的方法定义包括访问修饰符(如、)、返回类Java Javapublic private型(如、、)、方法名、参数列表和方法体方法名遵循驼峰命名法,通常以动词开头,如、,表示执行某void intString calculateTotalgetName种操作方法重载同名不同参相同方法名,不同参数列表(类型、数量、顺序)构造方法重载多个构造方法提供不同初始化方式重载解析编译器根据参数类型自动选择匹配方法方法重载()是多态性的一种表现形式,允许在同一个类中定义多个同名但参数列表不同的方法参数列表的不同可以体现在参数类型、参数数量或参数顺序上重载的关键在于,编译器可以根据方法调用时提供的参数类型和数量,自动选Method OverloadingJava Java择最匹配的方法执行中的数组Java数组定义数组初始化数组遍历数据类型数组名数据类型长度静态初始化循环[]=new[];int[]numbers={1,2,3,4,5};for forinti=0;i例如动态初始化增强循环int[]numbers=new int
[5];int[]numbers=new int
[5];for forintnum:arr{...}numbers
[0]=1;数组是中最基础的数据结构,用于存储相同类型的多个元素中的数组是对象,具有固定长度,一旦创建无法改变大小数组元素通过整数索引访问,索Java Java引从开始支持两种数组声明语法数据类型数组名或数据类型数组名,前者是推荐做法创建数组需要使用关键字并指定长度,如0Java[][]new int[]numbers=new int
[5]面向对象编程概述多态性Polymorphism同一操作作用于不同对象,产生不同行为继承性Inheritance子类继承父类特性,实现代码复用封装性Encapsulation将数据和方法包装在类中,隐藏实现细节面向对象编程(,)是一种编程范式,将程序组织为相互协作的对象的集合,每个对象代表某个实体,包Object-Oriented ProgrammingOOP含数据(属性)和行为(方法)是一种纯面向对象的编程语言,所有程序都构建在类和对象的基础上的核心是三大特性封装、Java JavaOOP继承和多态类与对象类的定义对象的创建与使用类是对象的模板或蓝图,定义了一组对象共有的属性和行为对象是类的实例,拥有类定义的属性和方法语法创建对象类名类名对象名类名public class{=new;成员变量(属性)访问属性对象名属性名//.构造方法调用方法对象名方法名参数//.成员方法(行为)//}在中,类()是创建对象的模板,定义了一组对象共有的属性和行为类通常包含三个主要部分成员变量(属性)、构造方法和成员方法(行为)Java Class成员变量描述对象的状态或特征;构造方法用于初始化新创建的对象;成员方法定义对象可以执行的操作或行为类的定义使用关键字,如class public classStudent{...}构造方法构造方法特点方法名与类名相同无返回类型声明创建对象时自动调用默认构造方法无参数构造方法如无显式定义,编译器自动添加一旦自定义构造方法,默认构造不再提供构造方法重载提供多个不同参数的构造方法灵活创建对象并初始化构造方法间可相互调用this构造方法是一种特殊的方法,用于初始化新创建的对象它与普通方法的区别在于构造方法名必须与类名完全相同;没有返回类型声明(包括);在使用关键字创建对象时自动调用构造方法的主要作用是确保对象在创建时处于正确、可用void new的初始状态,通常用于初始化成员变量或执行必要的设置操作封装与访问权限访问修饰符本类同包类子类其他包类✓✗✗✗private默认✓✓✗✗default✓✓✓✗protected✓✓✓✓public封装是面向对象编程的核心原则之一,通过将数据(属性)和操作数据的方法捆绑在一起,隐藏对象的内部实现细节,只暴露必要的接口与外界交互通过访问修饰符实现封装,Java控制类、变量、方法的可见性通常的做法是将成员变量声明为私有(),通过公共private()的和方法控制对这些变量的访问和修改public gettersetter继承机制继承语法方法重写子类重新实现父类方法注解标记(建议使用)@Override方法签名必须相同子类父类class extends{访问权限不能更严格子类特有的成员//}继承是面向对象编程的重要特性,允许一个类(子类)获取另一个类(父类)的属性和方法使用关键字实现单继承,即一个类只能直接继承一个父类,但可以形成多层继承链继承建立了类之间的是一种(Java Javaextendsis-)关系,例如猫是一种动物子类继承父类的所有非私有成员(变量和方法),同时可以添加自己的成员或重写继承的方法a与关键字super this关键字关键字super this引用父类成员变量名或方法名引用当前对象变量名或方法名super.super.this.this.调用父类构造方法或参数调用本类其他构造方法或参数super superthis this必须在构造方法第一行使用不能与同时使用super和是中用于引用对象的特殊关键字,在处理类继承和对象引用时非常有用关键字用于引用父类成员,解决子类成员与父类成员同名导致的遮蔽问题通过方法名可以调用super thisJava super super.被子类重写的父类方法,而变量名引用父类的变量或参数用于调用父类构造方法,必须是子类构造方法的第一条语句super.supersuper多态性多态概念同一操作作用于不同对象,产生不同行为多态实现父类引用指向子类对象父类类型变量子类类型=new;动态绑定运行时根据实际对象类型调用相应方法多态性是面向对象编程的核心特性之一,允许使用父类型引用变量引用子类型对象,在运行时根据实际对象类型执行相应的方法多态性主要通过Java方法重写和向上转型实现向上转型是指将子类对象赋值给父类引用,如,这是自动完成的当通过这个父类引用调用被Animal animal=new Dog子类重写的方法时,实际执行的是子类中的实现,这种机制称为动态绑定或运行时多态抽象类与接口抽象类接口使用关键字声明使用关键字声明abstract interface可以包含普通方法和抽象方法前只能包含常量和抽象方法Java8抽象方法没有实现体,子类必须重写后可包含默认方法和静态方法Java8不能实例化,只能被继承不能实例化,只能被实现单继承一个类只能继承一个抽象类多实现一个类可以实现多个接口抽象类和接口是中实现抽象和多态的两种重要机制抽象类使用关键字声明,可以包含抽象方法(没有实现体,只有声明)和普通方Java abstract法抽象类不能被实例化,只能被继承子类必须实现所有抽象方法,或者自己也声明为抽象类抽象类适用于概念上相关的类之间共享代码和定义通用模板的场景包与导入机制包定义导入语句包名包名类名package;import.;必须在源文件第一行包名导入包中所有类import.*;包名通常使用小写字母位于语句之后,类定义之前package通常使用域名反转命名(如)包自动导入com.company.project java.lang静态导入包名类名静态成员import static..;包名类名import static..*;直接使用静态方法和常量,无需类名前缀如import staticjava.lang.Math.*;包()是用于组织和管理相关类的机制,类似于文件系统中的文件夹包提供命名空间隔离,避免类名冲突,同package Java时控制访问权限,促进代码组织和模块化每个源文件可以通过语句(必须是文件的第一条非注释语句)声明其Java package所属的包包名通常采用全小写,使用域名反转命名法,如,既保证唯一性,又体现层次结com.company.project.module构内部类与匿名类成员内部类定义在类内部的非静态类可以访问外部类的所有成员,包括私有成员创建需要外部类实例OuterClass.InnerClass inner=outer.new InnerClass;静态内部类使用修饰的内部类static只能访问外部类的静态成员创建不需要外部类实例OuterClass.StaticInnerClass inner=new OuterClass.StaticInnerClass;局部内部类定义在方法内部的类只在定义它的方法内可见可以访问外部类成员和方法中的或事实上的局部变量final final匿名内部类没有名字的局部内部类,用于创建接口或抽象类的实例语法接口名父类名方法实现new/{};常用于事件处理和简单的接口实现GUI内部类是定义在另一个类内部的类,支持几种不同类型的内部类,各有特定用途成员内部类是非静态的内部类,可以访问外部类的所有成员Java(包括私有成员),通常用于表示与外部类有密切关系的对象静态内部类(嵌套类)是用修饰的内部类,不依赖于外部类实例,不能直接访static问外部类的非静态成员,适合作为外部类的辅助类或工具类基本异常处理机制块try包含可能抛出异常的代码块catch捕获并处理特定类型的异常可以有多个块处理不同异常catch块finally无论异常是否发生都会执行通常用于释放资源try-with-resources引入的简化资源管理语法Java7自动关闭实现的资源AutoCloseable异常处理是中处理错误和异常情况的机制,允许程序在遇到问题时优雅地响应,而不是直接崩溃的异常处理基于Java Javatry-结构块包含可能引发异常的代码;块捕获并处理特定类型的异常,可以有多个块按顺序处理不同类catch-finally trycatch catch型的异常(从具体到一般);块包含无论异常是否发生都会执行的代码,通常用于释放资源,如关闭文件或数据库连接finally异常的分类Error严重问题,程序通常无法恢复RuntimeException2未检查异常,编译时不强制处理Exception受检异常,编译时必须处理Throwable4所有错误和异常的基类异常体系是一个层次结构,所有异常和错误类都继承自类分为两个主要分支和表示严重的系统级问题,如Java ThrowableThrowable ErrorException Error或,这些问题通常是由内部错误、资源耗尽或其他无法恢复的情况引起的,程序一般不应尝试捕获或处理这些错误OutOfMemoryError StackOverflowErrorJVM手动抛出异常与自定义异常抛出异常自定义异常使用关键字错误信息throw throw new Exception;使用声明方法可能抛出的异常throwspublic voidmethod throwsException{...}受检异常必须声明或捕获,未受检异常可选异常可以向上传播,直到被处理或程序终止继承(受检异常)或(未受检异常)Exception RuntimeException通常提供多个构造方法,包括默认构造方法和带消息的构造方法命名通常以结尾Exception根据业务逻辑需要提供额外信息或方法在中,除了捕获系统抛出的异常外,开发者还可以主动抛出异常表示程序状态或业务逻辑错误使用关键字可以手动抛出异常对象,如参数不能为负数如果方法Java throwthrownewIllegalArgumentException抛出受检异常,必须在方法签名中使用关键字声明可能抛出的异常类型,以便调用者知道并处理这些异常子句可以声明多个异常类型,用逗号分隔throws throws字符串处理类String StringBuilder/StringBuffer不可变字符序列可变字符序列,用于频繁修改字符串常量池优化单线程,性能更好StringBuilder-常用方法线程安全,同步方法StringBuffer-•返回长度常用方法length-•获取指定位置字符charAti-•添加内容append-•获取子串substringstart,end-•插入内容insert-•内容比较equals-•删除内容delete-•去除首尾空格trim-•反转reverse-•分割字符串split-•转为toString-String提供了多种处理字符串的类,其中最基本的是类代表不可变的字符序列,一旦创建,其内容不能修改这种不可变性有助于安全性和线程安全,但在Java StringString频繁修改字符串时效率较低,因为每次修改都会创建新对象提供了丰富的方法进行字符串操作,如连接(或)、比较(、)、查找String+concat equalscompareTo(、)、替换()和格式化()等indexOf containsreplace format常用类Java类类Math RandomDate/Calendar提供数学计算函数生成各种随机数、日期时间处理(前)nextInt Java
8、、等Math.sqrt Math.pow nextDouble等Math.randomLocalDate/LocalTime引入的现代日期时间Java8API标准库提供了许多实用工具类,用于执行常见任务类提供了各种数学运算方法,如三角函Java Math数、指数、对数、四舍五入等,都是静态方法,无需创建实例即可使用类用于生成伪随机数,Random相比提供了更多随机数生成选项,包括不同范围和类型的随机值Math.random集合框架概览List Set有序、可重复集合无序、不可重复集合实现类、、实现类、、ArrayList LinkedListVector HashSetLinkedHashSet TreeSetMapQueue键值对映射,键不可重复队列,通常FIFO实现类、、HashMap LinkedHashMap实现类、、LinkedList PriorityQueueArrayDeque、TreeMap Hashtable集合框架是一组类和接口,提供了存储和操作对象组的标准方式,位于包中集合框架围绕几个核心接口构建是所有集合的根接口,定义了添加、删Java java.util Collection除、遍历等基本操作;表示有序集合,允许重复元素,并提供基于索引的访问;表示不允许重复元素的集合;表示队列,通常(但不总是)按先进先出()顺List SetQueue FIFO序处理元素;表示键值对映射,键不可重复Map与ArrayList LinkedList特性ArrayList LinkedList底层实现动态数组双向链表随机访问,高效,低效O1On插入删除慢,尤其是在前中部位置快,常数时间//内存占用较低较高(包含前后引用)特殊功能无可作为队列和栈使用和是中最常用的两种实现,它们在内部结构和性能特点上有显著差异基于动态数组实现,当容量不足时自动扩容(通常增加)它的主要优点是支持快ArrayList LinkedListJava ListArrayList50%速随机访问(通过索引访问元素的时间复杂度为),非常适合读取操作频繁的场景但在列表前面或中间插入或删除元素时效率较低,因为需要移动后续元素O
1、基础用法HashMap HashSetHashMapHashSet基本操作基本操作•创建•创建HashMap map=new HashMap;HashSet set=new HashSet;•添加•添加map.putkey,value;set.addelement;•获取•删除map.getkey;set.removeelement;•删除•检查map.removekey;set.containselement;•检查•遍历map.containsKeykey;map.containsValuevalue;for Eelement:set{...}•遍历for Map.Entry entry:map.entrySet{...}注内部基于实现,元素作为的键,值为一个常量对象HashMap HashMap是中使用最广泛的实现,它储存键值对,允许通过键快速查找值使用哈希表实现,提供接近的添加、删除和查找性能使用HashMap JavaMap HashMapO1时,键对象必须正确实现和方法,这些方法决定了键的唯一性和存储位置允许一个键和多个值在多线程环境HashMap hashCodeequals HashMapnull null下,不是线程安全的,应使用或)包装HashMap ConcurrentHashMapCollections.synchronizedMap泛型与集合泛型基本语法泛型集合使用类定义publicclassBox{...}List list=new ArrayList;方法定义public voidmethodE element{...}Map map=new HashMap;类型参数命名约定(元素)、(类型)、编译时类型检查,防止类型错误E TK(键)、(值)等V通配符无界通配符List上界通配符List下界通配符List泛型是引入的重要特性,允许在编译时指定类或方法操作的数据类型,提高类型安全性在集合框架中,泛Java5型的使用尤为广泛和重要没有泛型之前,集合可以存储任何类型的对象,容易引发类型转换错误;使用泛型后,编译器可以在编译时检查类型兼容性,防止类型错误,减少运行时异常如表示只能存储字符串的列表,编译List器会阻止添加其他类型元素文件与操作I/O类字节流File表示文件系统中的文件或目录处理二进制数据创建基本流File file=new Filepath/to/file.txt;InputStream,OutputStream检查文件流exists,isFile,isDirectory,length FileInputStream,FileOutputStream操作缓冲流createNewFile,delete,mkdir,list BufferedInputStream,BufferedOutputStream字符流处理文本数据,自动处理字符编码基本流Reader,Writer文件流FileReader,FileWriter缓冲流BufferedReader,BufferedWriter提供了丰富的用于文件和(输入输出)操作类表示文件系统中的文件或目录路径,提供了创建、删Java APII/O/File除、重命名、检查文件属性等基本操作注意类本身不包含读写文件内容的方法,只处理文件作为一个整体File Java后引入了包,其中的和类提供了更强大和灵活的文件操作功能,如符号链接支持、文件属性访问7java.nio.file PathFiles和文件系统监视等输入输出流字节流示例使用和复制文件FileInputStream FileOutputStream字符流示例使用和读写文本BufferedReader BufferedWriter示例NIO使用和进行高效操作Channel BufferI/O流可以根据处理数据单位(字节或字符)、功能和数据流方向分为多种类型字节流处理原始二进制数据,主要类为和及其子类,如处理文件,处理内存JavaI/O InputStreamOutputStream FileInputStream/FileOutputStream ByteArrayInputStream/ByteArrayOutputStream中的字节数组字符流处理文本数据,主要类为和及其子类,如处理文本文件,处理字符串Reader WriterFileReader/FileWriter StringReader/StringWriter线程基础Java类Thread继承类,重写方法Thread runMyThreadt=new MyThread;t.start;接口Runnable实现接口,实现方法Runnable runThreadt=new ThreadnewMyRunnable;t.start;接口Callable实现接口,实现方法,可返回结果Callable call结合和使用ExecutorService Future线程池ExecutorService executor=Executors.newFixedThreadPooln;重用线程,避免频繁创建销毁,提高效率线程是程序执行的最小单位,提供了多种创建和管理线程的方式创建线程的两种基本方法是继承类并重写方Java Threadrun法;实现接口并实现方法后者更灵活,因为不支持多重继承,实现的类还可以继承其他类线程使Runnable runJava Runnable用方法启动,这会创建新线程并调用其方法;直接调用方法不会创建新线程,只在当前线程中执行start runrun线程同步与通信在多线程环境中,当多个线程同时访问共享资源时,可能导致数据不一致这就是线程安全问题提供了多种机制确保线程安全,最基本的是——Java关键字,可用于方法或代码块方法锁定整个方法;块可以锁定特定对象,范围更精确,性能更好每个synchronized synchronizedsynchronized对象都有一个内部锁(监视器),当线程进入区域时获取锁,退出时释放锁Java synchronized开发简介Java GUIAWTSwing JavaFX抽象窗口工具包,最早基于的轻量级库现代库,替代Java AWTGUI GUISwing的库GUI纯实现,外观统一,可支持样式,多媒体功能Java CSS依赖本地系统组件,外观因定制强大平台而异提供了多种图形用户界面()开发库最早的是(Java GUIAWT AbstractWindow),它使用本地系统组件创建用户界面,因此外观和行为会因操作系统而异包Toolkit AWT含基本组件如、和基本布局管理器如、尽管Button TextFieldFlowLayout BorderLayout仍是标准库的一部分,但现代应用很少直接使用它AWT Java注解与反射注解反射元数据标记,提供程序相关信息在运行时检查、修改类和对象内置注解等获取对象@Override,@Deprecated,@SuppressWarnings Class自定义注解通过类字面量Class cls=Object.class;//通过对象@interface MyAnnotation{Class cls=obj.getClass;//通过全限定名String valuedefault;Class cls=Class.forNamejava.lang.String;//操作获取字段、方法、构造器,创建实例,调用方法}应用代码文档、编译检查、运行时处理应用框架开发、映射、依赖注入ORM注解()是添加到代码的元数据标记,不直接影响代码执行,但可以被编译器、开发工具或运行时环境处理内置了多种注解,如(标Annotation Java Java@Override记方法覆盖父类方法)、(标记过时元素)和(抑制编译器警告)开发者可以使用关键字创建自定义注解,定义属性及@Deprecated@SuppressWarnings@interface其默认值,并通过、等元注解指定注解的生命周期和适用目标注解广泛应用于文档生成、编译时检查、配置管理和运行时处理@Retention@Target表达式与函数式编程Lambda表达式Lambda参数表达式或语句-{}函数式接口只有一个抽象方法的接口,可被实现LambdaStream API函数式处理数据集合的流水线操作表达式是引入的重要特性,提供了一种简洁的方式来表示匿名函数(没有名称的函数)表达式基本语法为参数表达式或语Lambda Java8Lambda-{句,其中参数类型可以省略,当只有一个参数时括号可以省略,当主体只有一个表达式时大括号和可以省略表达式主要用于替代匿名内部}return Lambda类,特别是在实现函数式接口时函数式接口是只包含一个抽象方法的接口,可以用注解标记@FunctionalInterface新特性速览Java8接口默认方法新日期时间API接口可以包含有实现的默认方法包,不可变且线程安全java.time语法default voidmethod{...}LocalDate,LocalTime,LocalDateTime允许在不破坏现有实现的情况下扩展接口ZonedDateTime,Period,Duration解决了旧的设计缺陷API方法引用引用现有方法作为表达式Lambda静态方法ClassName::staticMethod实例方法instance::method构造方法ClassName::new是历史上最重要的版本更新之一,引入了多项革命性特性除了前面提到的表达式和Java8Java LambdaStream API外,还有多项重要改进接口默认方法允许在接口中定义带有实现的方法,使用关键字标记这个特性解决了库default演化问题,允许在不破坏现有实现的情况下向接口添加新方法接口还可以包含静态方法,提供与接口紧密相关的工具功能常见错误与调试技巧编译时错误语法错误、类型不匹配、未声明变量等通常提供即时标记和修复建议IDE运行时错误空指针异常、数组越界、类型转换错误等通过异常堆栈跟踪定位问题调试工具调试器设置断点、单步执行、查看变量IDE日志工具、、System.out LoggerLog4j/Logback编程过程中遇到错误是不可避免的,理解常见错误类型和掌握调试技巧可以大大提高问题解决效率错误可以分为编译时错误和运行时错误编译时错误包括语法错误(如缺少分号、括号不匹配)、类型错误(如类型不兼容的赋值)、未声明变量或方法等,这些错误会Java阻止程序编译通过现代通常能实时标记这些错误并提供修复建议IDE总结与学习建议基础知识夯实项目实践掌握语法、面向对象概念和核心类库通过实际项目应用和巩固知识社区参与深入学习加入开源项目,与他人交流学习探索高级主题和流行框架恭喜您完成基础教程的学习!本课程涵盖了编程的核心概念,从语言基础到面向对象编程,从集合框架到多线程,为您的学习之旅奠定了坚实基础回顾要点Java JavaJava是一种强大的面向对象编程语言,具有跨平台性、安全性和丰富的类库;面向对象的三大特性(封装、继承、多态)是程序设计的核心;提供了丰富的和工JavaJavaJava API具,支持各种应用开发场景。
个人认证
优秀文档
获得点赞 0