java从入门到精通
2023-06-10 21:04:55 9 举报
AI智能生成
java
作者其他创作
大纲/内容
初识java
java简介
什么是Java语言
Java是由1995年sun公司推出的一门程序设计语言
Java的应用领域
借助Java程序开发人员可以自由地使用现有的硬件和软件系统平台
怎样学好java
明确学习目标和方向
找书集系统学习
了解设计模式
多实践多思考
Java语言的特性
简单
面向对象
分部性
可移植性
解释型
安全性
健壮性
多线程
高性能
动态
搭建Java环境
jdk下载
系统下搭建jdk环境
熟悉eclipse开发工具
熟悉eclipes
简介
下载
配置与启动
工作台
透视图与试图
菜单栏
工具栏
使用eclipes
创建项目
创建Java类文件
编写代码
运行
程序调试
断点
以调试方式运行Java程序
程序调试
java语言基础
Java主类结构
包声明
成员变量和局部变量
主方法
导入其他类
基本数据类型
整数类型
浮点类型
字符类型
布尔类型
变量与常量
标识符合关键字
什么是变量
什么是常量
变量的有效范围
运算符
赋值运算符
算术运算符
自增和自减运算符
比较运算符
逻辑运算符
位运算符
三元运算符
运算符的优先级
数据类型转换
隐式转换
显示转换
代码注释与编码规范
实践与练习
流程控制
复合语句
条件语句
if条件语句
if语句是一个重要的编程语句,用于告诉程序在某个条件成立的情况下执行另一条语句。if条件语句可分为简单的if条件语句,if…else if多分支语句
switch条件语句
1.Switch语句只能用于判断某个变量或表达式的取值,不能判断某个条件是否成立。
2.case分支的取值必须是常量表达式,不能是变量或其他非常量表达式。
3.在case分支中可执行多条语句,但是必须以break语句介绍。如果没有break语句,则会继续执行后面的case分支,直到遇到break语句或switch语句结束。
4.default分支可以省略,如果省略了则不会执行任何代码。
2.case分支的取值必须是常量表达式,不能是变量或其他非常量表达式。
3.在case分支中可执行多条语句,但是必须以break语句介绍。如果没有break语句,则会继续执行后面的case分支,直到遇到break语句或switch语句结束。
4.default分支可以省略,如果省略了则不会执行任何代码。
循环语句
while循环语句
例题:创建GetSun类,在主方法中通过while循环计算1~1000相加的和并输出。
do...while循环语句
do…while循环语句与while循环语句相似,也是用来重复执行一段代码,但是它有个特点,就是无论循环条件是否为真,do…while循环至少会执行一次。
1.循环体至少会执行一次,所以要确保循环条件的代码可以正确的执行一次
2.循环条件在循环体后面,所以要注意条件的赋值和修改,避免进入死循环。
3.do…while循环的区别在于循环条件的判断顺序,do…while循环先执行一次循环体,再判断循环条件是否为真,而while循环则是先判断循环条件是否为真,再执行循环体,因此在实际使用时要根据具体情况选择的合适的循环语句。
2.循环条件在循环体后面,所以要注意条件的赋值和修改,避免进入死循环。
3.do…while循环的区别在于循环条件的判断顺序,do…while循环先执行一次循环体,再判断循环条件是否为真,而while循环则是先判断循环条件是否为真,再执行循环体,因此在实际使用时要根据具体情况选择的合适的循环语句。
for循环语句
Java中的for循环是一种常用的循环结构,可以方便实现对一定次数的重复执行操作。
循环控制
break语句
在Java中,break语句可以用于循环或者Switch语句中,用于提前结束或者跳出包含该语句的循环或者Switch语句中,用于提前结束循环或者跳出Switch语句的执行。当程序执行到break语句时,会直接跳出包含该语句的循环或Switch语句,并且继续执行后面的代码。
同样break也可以跳出循环体。在循环中,一旦执行到break语句,循环将会被立即终止,程序会跳出循环并执行循环后的代码。
同样break也可以跳出循环体。在循环中,一旦执行到break语句,循环将会被立即终止,程序会跳出循环并执行循环后的代码。
continue语句
实践与练习
数组
数组概述
如何理解数组
一维数组
创建一维数组
数组作为对象允许使用new关键字进行内存分配。在使用数组之前,必须首先首先定义数组变量所属类型。一维数组的创建有两种形式
先声明,再使用new关键字进行内存分配
先声明,再使用new关键字进行内存分配
初始化一维数组
数组作为对象允许使用new关键字进行内存分配。在使用数组之前,必须首先首先定义数组变量所属类型。一维数组的创建有两种形式
先声明,再使用new关键字进行内存分配
先声明,再使用new关键字进行内存分配
int arr = new int[1,2,3,4,5,25];//第一种初始化方式
int arr[] = {34,23,12,6};//第二种初始化方式
int arr[] = {34,23,12,6};//第二种初始化方式
二维数组
创建二维数组
二维数组可以看作是特殊的一维数组,因此二维数组的创建同样有两种方式。
数组元素的类型 数组名字 [] [];
数组元素的类型[] [] 数组名字;
数组元素的类型[] [] 数组名字;
初始化二维数组
二维数组的初始化与一维数组初始化类似,同样可以使用大括号完成。语法如下:
type arrayneme[][] = {value1,value2,value3…valuen};
数组的基本操作
遍历数组
遍历数组就是获取数组中的每一个元素。通常遍历数组都是使用for循环来实现。遍历二维数组需使用双层for循环,通过数组的length属性可获得数组的长度。
填充替换数组元素
数组中的元素定义完成后,可通过Arrays类的静态方法fill()来对数组中的元素进行替换。该方法通过各种重载形式可完成对任意类型的数组元素的替换。
子主题
对数组进行排序
子主题
通过Arrays类的静态方法sort()可以实现对数组的排序。sort()方法提供了多种重载形式,可对任意类型的数组进行升序排序。语法如下:
Arrays,sort(object)
复制数组
Arrays类的copyOf()方法与copyOfRange()方法可以实现对数组的复制。copyOf()方法是复制数组至指定长度,copyOfRange()方法则将指定数组的指定长度复制到一个新数组中。
copyOf()方法
copyOf()方法
查询数组
Arrays类的binarySearch()方法,可使用二分搜索法来搜索指定数组,以获得指定对象,该方法返回要搜索元素的索引值。binarySearch()方法提供了多种重裁形式,用于满足各种类型数组的查找需要。
a:要搜索的数组。
key:要搜索的值。
如果key包含在数组中,则返回搜索值的索引;否则返回-1或“-”(插入点)。插入点是搜索键将要插入数组的那一点,即第一个大于此键的元素索引。
key:要搜索的值。
如果key包含在数组中,则返回搜索值的索引;否则返回-1或“-”(插入点)。插入点是搜索键将要插入数组的那一点,即第一个大于此键的元素索引。
数组的排序算法
冒泡排序
冒泡排序是最常用的数组排序算法之一,它排序数组元素的过程总是将较小的数往前放、较大的数往后放,类似水中气泡往上升的动作,所以称为冒泡排序。
冒泡排序的基本思想是对比相邻的元素值,如果满足条件就交换元素值,把较小的元素移动到数组前面,把较大的元素移动到数组后面(也就是交换两个元素位置),这样较小的元素就像气泡一样从底部上升到顶部
直接排序
直接选择排序属于的基本思想是将排序位置元素与其他数组元素分别对比,如果满足条件就交换元素值。
反转排序
反转排序的基本思想比较简单,也很好理解,其实现思路就是把数组最后一个元素与第一个元素替换,倒数第二个元素与第二个元素替换,以此类推,直到把所有数组元素反转替换。
类和对象
面向对象概论
类
成员变量
在lava 中,对象的属性也称为成员变量,成员变量可以是任意类型,整个类中均是成员变量什
范围。下面通过一个实例来演示成员变量在类中所处的位置。
创建一个 Book 类,在类中设置一个name 属性,并为该属性编写 Getter/ Setter 方法。
范围。下面通过一个实例来演示成员变量在类中所处的位置。
创建一个 Book 类,在类中设置一个name 属性,并为该属性编写 Getter/ Setter 方法。
成员方法
在Java语言中,使用成员方法对应于类对象的行为。以book类为例,它包含getName()和setName()两个方法,这两个成员方法分别为获取图书名称和设置图书名称的方法
权限修饰符
Java中的权限修饰符主要包括private、public、和Protected这些修饰符控制着对类和类的成员变量以及成员方法的访问。
局部变量及其有效范围
this关键字
类的构造方法
1.构造方法没有返回值
2.构造方法的名称要与本类的名称相同
2.构造方法的名称要与本类的名称相同
静态成员
静态变量
静态方法
类的主方法
主方法是静态的,所以如要直接在主方法中调用其他方法,则该方法必须也是静态的。
主方法没有返回值。
主方法的形参为数且。其中,args[0]~args[n]分別代表程序的第一个参数到第n个参数,可以使用arga.length获取参数的个数。
对象
创建
Test test =new Test();
Test test =new Test("a");
Test test =new Test();
Test test =new Test("a");
访问属性和行为
引用
销毁
继承,多态,抽象类与接口
类的继承
继承在面向对象开发思想中是一个非常重要的概念,它使整个程序架构具有一定的弹性。在程序中复用一些已经定义完善的类,不仅可以减少软件开发周期,也可以提高软件的可维护性和可扩展性。
object类
Object类是比较特殊的类,它是所有类的父类,是Java类层中最高层类。用户创建一个类时,除非已经指定要从其他类继承,否则它就是从Java.lang.Object类继承而来的。Java中的每个类都源于Java.lang.Object类,如String类、Integer类等都是继承Object类。除此之外,自定义的类也都继承于Object类。
对象类型的转换
向上转型可以被理解为将子类类型的对象转换为父类类型的对象,即把子类类型的对象之间赋值给父类类型的对象,进而实现按照父类描述子类的效果。
使用instanceof关键字判断对象类型
myobject instanceof ExampleClass
myobject:某类的对象引用
ExampleClass:某个类
ExampleClass:某个类
方法的重载
方法的重载就是在同一个类中允许存在一个以上的同名方法,只要这些方法的参数个数或类型不同即可。
final关键字
final关键字可用于变量声明,一旦该变量被设定,就不可以再改变该变量的值。通常,由final定义的变量为常量。例如,在类中定义PI值,可以使用如下语句
final double PI = 3.14;
多态
多态的意思是多种形态,利用多态可以使程序具有良好的扩展性,并可以对所有类对象进行通用的处理。已经学习过子类对象可以作为父类的对象实例使用,这种将子类对象视为父类对象的做法称为“向上转型”。
抽象类与接口
使用abstract关键字定义的类称为抽象类,而使用这个关键字定义的方法称为抽象方法。抽象方法没有方法体,没有意义,除非它被重写,而承载这个抽象方法的抽象类必须被继承,实际上抽象类除了被继承没有任何意义。
public:修饰符。
interface:定义接口关键字
Paintable:接口名称
interface:定义接口关键字
Paintable:接口名称
接口是抽象类的延伸,可以将它看作是纯粹的抽象类,接口中的所有方法都没有方法体,上一节抽象遗留的问题,可以将draw()方法封装到一个接口中,使需要draw()方法的类实现这个接口,同时也继承图形类,这个就是接口的必要性。
包和内部类
Java类包
类名冲突
完整类路径
创建包
导入包
内部类
成员内部类
在一个类中使用内部类,可以在内部类中直接存取其所在类的私有成员变量,语法如下:
class OuteruClass{//外部类
class InnerClass{//内部类
}
class InnerClass{//内部类
}
匿名内部类
使用匿名类时一个遵循以下原则:
(1)匿名类不能写构造方法
(2)匿名类不能定义静态的成员
(3)如果匿名类创建的对象没有赋值给任何引用变量,会导致该对象用完一次就会被Java虚拟销毁
(1)匿名类不能写构造方法
(2)匿名类不能定义静态的成员
(3)如果匿名类创建的对象没有赋值给任何引用变量,会导致该对象用完一次就会被Java虚拟销毁
异常处理
异常概述
在项目中创建Baulk类,在主方法中定义int型变量,将0作为除数的的算术表达式赋值给该变量。代码如下:
异常的抛出与捕捉
抛出异常
捕捉异常
异常捕获结构由try、catch和finally 3部分组成
try语句块存放的是可能发生的Java语句;
catch语句块在try语句块之后,用来激发被捕获的异常;
finally语句块是异常处理结果的最后执行部分,无论try语句块中的代码如何退出,都将执行finall语句块
try语句块存放的是可能发生的Java语句;
catch语句块在try语句块之后,用来激发被捕获的异常;
finally语句块是异常处理结果的最后执行部分,无论try语句块中的代码如何退出,都将执行finall语句块
Java常见的异常类
自定义异常
在方法中通过throw关键字抛出异常对象
1.创建自定义异常类
2.在方法中通过throw关键字抛出异常对象。
3.如果在当前抛出异常的方法中处理异常,可以使用try-catch语句块捕获并处理,否则在方法的声明处通过throws关键字指明要抛出给方法调用者的异常,继续惊醒下一步操作。
4.在出现异常的方法的调用者中捕获并处理异常
2.在方法中通过throw关键字抛出异常对象。
3.如果在当前抛出异常的方法中处理异常,可以使用try-catch语句块捕获并处理,否则在方法的声明处通过throws关键字指明要抛出给方法调用者的异常,继续惊醒下一步操作。
4.在出现异常的方法的调用者中捕获并处理异常
在方法中抛出异常
throws关键字
若某个方法可能会发生异常,但不想在当前方法中处理这个异常,则可以使用throws、throw关键字在方法中抛出异常。
9.5.1使用throws关键字抛出异常
throws关键字通常被应用在声明方法时,用来指定方法可能抛出的异常。多个异常可使用逗号分隔
9.5.1使用throws关键字抛出异常
throws关键字通常被应用在声明方法时,用来指定方法可能抛出的异常。多个异常可使用逗号分隔
运行时异常
runtimeexception异常的种类
字符串
string类
单个字符可以用char类型保存,多个字符组成的文本就需要保存在String对象中。
字符串必须包含在一对双引号(“”)之内
连接字符串
使用“+”运算符可实现连接多个字符串的功能。“+”运算符可以连接多个String对象并产生一个新的String对象。
例题10.1
例题10.1
字符串也可同其他基本数据类型进行连接。如果将字符串同其他数据类型进行连接,会将其他数据类型的数据直接转换成字符串。
获取字符串信息
使用String类的length()方法可获取声明的字符串对象的长度
str.length();
字符串操作
通过String类的substring()方法可对字符串进行截取。substring()方法被两种不同的重载形式,来满足不同的需要。
1.substring(int beginlndex)
该方法返回的是从指定的索引位置开始截取直到该字符串结尾的子串。
1.substring(int beginlndex)
该方法返回的是从指定的索引位置开始截取直到该字符串结尾的子串。
语法:str.substring(int beginIndex)
格式化字符串
String 类的静态format()方法用于创建格式化的字符串。format()方法有两种重载形式。
1.format(String format,Object...args)
该方法使用指定的格式字符和参数返回一个格式化字符串,格式化后的新字符串使用本地默认的语言环境。
1.format(String format,Object...args)
该方法使用指定的格式字符和参数返回一个格式化字符串,格式化后的新字符串使用本地默认的语言环境。
语法:str.format(String format,Object...args)
format:格式化字符串
args:格式化字符串中由格式说明字符引用的参数
format:格式化字符串
args:格式化字符串中由格式说明字符引用的参数
使用正规表达式
正则表达式通常被用于判断语句中,用来检查某一字符串是否满足某一格式。
正则表达式是含有一些具有特殊意义字符的字符串,这些特殊字符称为正则表达式的元字符。
如下表:
正则表达式是含有一些具有特殊意义字符的字符串,这些特殊字符称为正则表达式的元字符。
如下表:
字符串生成器
创建成功的字符串对象,其长度是固定的,内容不能被改变和编译。虽然使用“+”可以达到附加新字符或字符串的目的,但“+”会产生一个新的String实例,会在内存中创建新的字符串对象。如果重复地对字符串进行修改,将极大地增加系统开销。而JDK新增了可变的字符序列StringBuilder类,大大提高了频繁增加字符串的效率
常用类库
包装类
数字处理
在Java中没有格式化的数据遵循一下原则:
1.如果数据绝对值大于0.001并且小于10000000,使以常规小数形式表示。
2.如果数据绝对值小于0.001或者大于10000000,是用科学计数法表示。
1.如果数据绝对值大于0.001并且小于10000000,使以常规小数形式表示。
2.如果数据绝对值小于0.001或者大于10000000,是用科学计数法表示。
system类
System类是JDK中提供的系统类,该类是用final修饰的,所以不允许被继承。Svstem类提供
服多系线层面的操作方法,并且这些方法全部都是静态的。System类提供的较常用方法如下:
服多系线层面的操作方法,并且这些方法全部都是静态的。System类提供的较常用方法如下:
11.3.1 控制台输出字符
1.不会自动换行的print()方法
printO方法的语法如下:
1.不会自动换行的print()方法
printO方法的语法如下:
System.out.print("Hello!");
scanner类
Scanner类首先要引入该类,语法如下:
import java.util.Scanner; //引入Scanner类
时间日期类
例如,使用Date类的第2种构造方法创建一个Date类的对象,代码如下:
long timeMillis = System.currentTimeMillis(); //当前系统时间所经历的毫秒数
Date date =new Date(timeMillis);
Date date =new Date(timeMillis);
runtime类
Runtime类的常用方法如下:
收藏
0 条评论
下一页