java从入门到精通
2023-06-10 14:01:08 0 举报
AI智能生成
EEE
作者其他创作
大纲/内容
桌面应用系统开发,嵌入式系统开发,电子商务应用,企业级应用开发,交互式系统开发,多媒体系统开发,发布式系统开发,wed应用开发,移动端应用开发
java的应用领域
Java是一种通用的,基于类的,面向对象的编程语言。它是用于应用程序开发的计算平台。因此,Java是快速,安全和可靠的。它被广泛用于在笔记本电脑,数据中心,游戏机,科学超级计算机,手机等中开发Java应用程序。
什么是java语言
主要分为两个,javase ,javaee,一般用的多的是javase这是标准版
java的版本
跨平台/可移植性,安全性,面向对象,简单性,高性能,分布式,多线程,健壮性
java语言的特性
java简介
第一章初识java
透视图是一个包含一系列视图和内容编辑器的可视容器,默认的透视图叫java。 透视图是Eclipse工作台提供的附加组织层,它实现多个实图的布局和可用操作的集合,并为此集合定义一个名称,起组织的作用。 Eclipse窗口可以打开多个透视图,但在同一时间只能有一个透视图处于激活状态,用户可以在两个透视图之间切换。
透视图与视图
java的一些功能菜单栏
菜单栏
位于菜单栏的下方,工具栏中的都是菜单栏的快捷键
工具栏
熟悉eclipse
创建一个项目,第一个框框为项目名,然后在jre中选择Java版本,然后点击netc,弹出窗口后图中,所有的代码都会存储在src中,再点击finiish,然后点击主界面中window里的new window,弹出下图,打开hello旁的小箭头,删除src下的无用文件
创建java项目
右键src,new,再点击class创建一个类。在Name中添加需要创建的类名(类名shoul首字母必须是大写),再勾选public static void.....最后点击finfsh
创建java类文件
点三角形图像就能运行了
运行java文件
使用eclipse
第二章熟悉eclipse开发工具
Java语言是面向对象的程序设计语言,Java程序的基本组成单元是类,类体中又包括属性和方法两部分。每个应用程序都必须包含一个main()方法,含有main()方法的类称为主类。
java主类结构
虽然byte、short、int、long 数据类型都是表示整数的,但是它们的取值范围可不一样。
整型byte 、short 、int 、long
float 和 double 都是表示浮点型的数据类型,它们之间的区别在于精确度的不同。
浮点型float 、 double
初始化方式
字符型char
boolean 型只有两个取值 true 和 false它的默认值是 false对于布尔型占用的空间,得看JVM对于它的具体实现,有些JVM底层其实是使用0和1来表示true和false,那么就是4字节。
布尔型boolea
基本数据类型
变量就是指代在内存中开辟的存储空间,用于存放运算过程中需要用到的数据。 变量的声明 变量必须先声明后使用。 相同的变量只能声明一次。 格式:变量类型 变量名 = 变量值
声明变量
在运行中不会发生变化的量,final 数据类型 常量名称 【=值】
声明常量
Java 中标识符是为方法、变量或者其他用户定义项定义的名称。标识符用来对变量、常量、类和方法等进行命名。
标识符
它们用来表示一种数据类型,或者表示程序的结构等。保留字是为 Java 预留的关键字,
关键字
变量与常量
=
赋值运算符
+-*、%
算术运算符
++a a++ --a a--
自增和自减运算符
比较运算符
逻辑运算符
位运算运算符
条件式 ? 值1 :值2
三元运算符
运算符优先级
运算符
隐式类型转换由编译器自动进行,不需要程序员干预。隐式类型转换通常有两种情况:赋值转换和运算转换。
隐式类型转换
显示类型转换由程序员明确指定,显示类型转换也称为强制类型转换。
显式类型转换
数据类型转换
第三章java语言基础
复合语句是以整个块为单位的语句,所以又称为块语句,复合语句由“{”开始,以“}”结束。复合语句中的每个语句都是从上到下执行的,并且在复合语句中可以嵌套复合语句。
复合语句
Java 中的条件语句允许程序根据条件的不同执行不同的代码块。 一个 if 语句包含一个布尔表达式和一条或多条语句。
条件语句
if语句
switch语句
对于 while 语句而言,如果不满足条件,则不能进入循环。但有时候我们需要即使不满足条件,也至少执行一次。do…while 循环和 while 循环相似,不同的是,do…while 循环至少会执行一次。
循环语句do.....while
循环语句while
for循环语句
当在循环中遇到 break 语句时,循环终止并进行程序控制在循环后的下一条语句中恢复。
循环控制break
continue 语句类似于 break 语句,但它只能出现在循环体中。它与 break 语句的区别在于:continue 并不是中断循环语句,而是中止当前迭代的循环,进入下一次的迭代,但只能在while中用
循环控制continue
流程控制
数组(array)是一种最简单的复合数据类型,它是有序数据的集合,数组中的每个元素具有相同的数据类型,可以用一个统一的数组名和不同的下标来确定数组中唯一的元素。根据数组的维度,可以将其分为一维数组、二维数组和多维数组等,可以存储多个数据。
数组的概念
当数组中每个元素都只带有一个下标时,这种数组就是“一维数组”。一维数组(one-dimensional array)实质上是一组相同类型数据的线性集合,是数组中最简单的一种数组。一般式,type[] arrayName; // 数据类型[] 数组名;
一维数组
二维数组好比一个表格,第一个下标表示行,第二个下标表示列,数组的创建和初始化与一位数组一模一样,及二维数组就是一个把多个一维数组包起来的数组。创建type[][] arrayName;或者 type arrayName[][];
二维数组
1. 声明数组并开辟空间 2. 给数组各个元素赋值 3. 使用数组
数组的基本操作
比较相邻的元素,如果第一个比第二个大,就交换它们两个;对每一对相邻元素作同样的比价,从开始第一对到结尾的最后一对,这样在最后的元素就是最大的数;针对所有的元素重复以上的步骤,除了数组最后已经排好序的数组;重复步骤1~3,直到排序完成。
冒泡排序法
直接选择排序法
反转排序
数组排序算法
数组
类其实就是一个模板,比如说类就好比一张房子的设计图纸,或者说是一个倒印模具,创建一个类就好比设计一张图纸,刻一个模板。对象就好比一座建好的房子,一个成型的模型,无疑想要一座房子或者一个模型都先需要一张图纸和一个模板,而这就是类和对象的关系。
面对对象的概述
世间万物都可以是一个对象
对象
类放在现实中,如人是一个对象,类就是对象的统称类是对象的设计图
类
把一个对象的静态和动态装入类中就叫封装,好处可以提高代码的复用性,就是可以用很多遍,不想用了可以丢一边,而放进类种的过程叫做封装
封装
父类的代码,子类可以不用写直接拿过来用代码中,类中的属性,如果每个对象都会有就放在父类,如不是则放进子类
继承
一个类有特性不同的对象,会有不同状态的对象,这种叫做多态官方一点的话叫做将父类的对象应用与子类的特征就是多态
多态
类与对象
在动态属性也就是成员方法种的变量就是局部变量
局部变量
在某些情况下,我们在需要定义成员方法(简称方法)。比如人类:除了有一些属性外(年龄、姓名等),我们人类还有一些行为比如:可以说话,跑步,通过学习还可以做算术题等等。这时就要用成员方法才能完成。
成员方法
实例成员变量:是定义在方法外部和类内部的且不被static所修饰的变量.用于描述一个类中包含哪些数据
成员变量
控制修饰符
静态的public static void main(string[]args)局部变量
static
this可以调用成员方法和成员变量,也就是动态属性和静态属性,但只能在所在的类中使用
this关键字
构造方法没有返回值。构造方法的名称要与本类的名称相同如public Book(){。。。//构造方法体}
类的构造方法
语法类名 引用变量的名称一个people的引用可以用以下方法people tom;引用对象相关的语法如下people tom =new people();
一个类继承另一个类需要使用另一类需要使用的关键字extends使用方法为class Child extends Parent{}
类的继承
Object类
向上转型子类对象赋值给父类引用、animal a = new Dog()
对象类型的转换
语法myobject instanceof ExampleClass
使用instanceof关键字判断对象类型
方法重载
final 类语法final 类名{}
final修饰变量———不可改变的量(常量)final修饰方法————不能被重写final修饰类——不能被继承
final关键字
抽象方法 abstract(抽象)修饰符 abstract 返回参数 方法名 (传入参数); 抽象类 有抽象方法的类一定是抽象类修饰符 abstract class 类名{}如果父类是抽象类,子类是普通类那么重写抽象方法加入方法体
抽象
接口 所有方法都是抽象方法修饰符 interface 接口名{}实现 implementsjava语言每个类可以实习多个接口修饰符 class 类名 implements 接口1 ,接口2,...{}
接口
继承·多态抽象类与接口
在java中每定义一个类,通过java编译器进行编译之后,都会生成一个扩展名为.class的文件。当程序的规模逐渐扩大时,就很容易发生类名称冲突的现象。java中提供了一种管理类文件的机制,就是类包。
什么是类包
java中每个接口或类都来自不同的类包,无论是Java API中的类与接口还是自定义的类与接口,都需要隶属于某一个类包,这个类包包含了一些类与接口。
类名冲突
一个完整的类名需要包含与类名的组合,每个类的隶属一个类包,只要保证同一类包中的类同名,就可以有效地避免同名类冲突的情况。
完整的类路径
类包
在一个类中使用内部类,可以在内部类中存取其所在类的私有成员变量。在成员变量类中可以随意使用外部类的成员方法及成员变量,尽管这些类成员被修饰为private。
成员内部简介
1.匿名类不能写构造方法2.匿名类不能定义静态的成员3.如果匿名类创建的对象没有赋值给任何引用变量,会导致该对象用完一次就会被java虚拟机销毁
使用匿名类一个遵循原则
内部类
包和内部类
异常的概述
检测到错误的程序可以创建一个合适的异常类型的实例并抛出它,这就称为抛出一个异常(throwing an exception)。这里有一个例子,假如程序发现传递给方法的参数与方法的合约不符(例如,方法中的参数必须是非负的,但是传入的是一个负参数),这个程序就可以创建 IllegalArgumentException 的一个实例并抛出它
抛出异常
现在我们知道了如何声明一个异常以及如何抛出一个异常。当抛出一个异常时,可以在try-catch 块中捕获和处理它;try-catch-finally
捕捉异常
异常的抛出与捕捉
如果某个方法可能会产生异常,但不想在当前方法中处理这个异常,则可以使用throws和throw关键字在方法中抛出异常。
Java异常有Runtime(运行时异常)和Checked(编译时异常),其中,所有RuntimeException类及其子类的实例被称为Runtime异常,不是RuntimeException类及其子类的异常实例都被称为Checked异常。
使用throws关键字抛出异常
hrow关键字虽然可以用于抛出Exception类中的子类异常,但更重要的用途是抛出自定义异常。
使用throw关键字抛出异常
1、不要过度使用异常,虽然通过异常可以增强代码健壮性,但是使用过多不必要的异常处理,会影响效率。2、不要使用过于庞大的try-catch块,过于庞大,业务过于复杂,会增加try块中出现异常的几率,从而增加分析产生异常原因的难度。3、避免使用catch(Exception e)如果所有异常都采用相同的处理方式,将导致无法对不同异常进行分类处理。4、异常既可以使用try-catch处理,也可以使用throws关键字处理,根据实际情况来判断使用哪种方式,两种关键的点就是,使用try-catch发生错误之后可以不影响线程继续执行下面代码,而throws代码抛出异常,也就是不管他,发生异常线程直接终止。5、如果父类抛出多个异常,则覆盖方法只能抛出和基类方法相同或者更少的异常,异常类也可以抛出该异常类的子类(切记是子类,否则编译报错)。
异常使用原则
异常处理
String类即字符串类型,并不是Java的基本数据类型,但可以像基本数据类型一样使用,用双引号括起来进行声明
sring类
连接多个字符串使用“+”运算符可完成对多个字符串连接的功能。
连接其他数据类型
连接字符串
获取字符串长度使用String类的length()方法可获取声明的字符串对象的长度。
字符串查找String类提供了两种查找字符串的方法,即indexOf()与lastIndexOf()方法。这两种方法都允许在字符串中搜索指定条件的字符或字符串。(1)indexOf(String s)查询字符串首次出现的索引。
获取字符串信息
获取指定索引位置的字符使用charAt()方法可将指定索引处的字符返回。语法如下: str.charAt(int index)str:任意字符串。 index:整型值,用于指定要返回字符的下标。
获取指定索引位置的字符
通过String类的substring()方法可对字符串进行截取。这些方法的共同点就是都利用字符串的下标进行截取,并应明确字符串下标是从0开始的。(1)substring(int beginIndex)
获取子字符串
trim()方法返回字符串的副本,忽略前导空格和尾部空格。语法如下: str.trim()
去除空格
字符串替换
startsWith()方法与endsWith()方法分别用于判断字符串是否以指定的内容开始或结束。这两个方法的返回值都为boolean类型。
判断字符串的开始与结尾
(1)equals()
(2)equalsIgnoreCase() 不区分大小写比较
判断字符串是否相等有equals()、equalsIgnoreCase()两种方法,而又有各自的规则,使用不好就会出错,所以一定要区分好什么时候用哪种方法。
判断字符串是否相等
compareTo()方法为按字典顺序比较两个字符串,该比较基于字符串中各个字符的Unicode值,按字典顺序将此String对象表示的字符序列与参数字符串所表示的字符序列进行比较。
按字典顺序比较两个字符串
(1)toLowerCase()
(2)toUpperCase
字符串的toLowerCase()方法可将字符串中的所有字符从大写字母改写为小写字母,而toUpperCase()方法可将字符串中的小写字母改写为大写字母。
字母大小写转换
(1)split(String str)
split()方法根据指定的分割符对字符串进行分割,并将分割后的结果存放在字符串数组中
字符串分割
字符串操作
日期和时间字符串格式化
String类的静态format()方法用于创建格式化的字符串。
格式化字符串
判断是否符合正则表达式的方法使用String类的matches()方法进行判断。boolean matches(String regex) regex:指定的正则表达式
正则表达式的元字符
正则表达式的限定符
方括号中元字符的含义
正则表达式
StringBuilder类,即字符串生成器,新创建的StringBuilder对象初始容量是16个字符,可以自行指定初始长度,也可以动态地执行添加、删除和插入等字符串的编辑操作,大大提高了频繁增加字符串的效率。
StringBuilder类
StringBuilder类的构造方法有很多,主要是参数上的区别,这里我们主要介绍几种在编程中经常会用到的方法。
(1)StringBuilder append(String str)方法
(2)StringBuilder append(StringBuffer sb)方法
StringBuilder类的常用方法
字符串生成器
字符串
String类的特点: · String类的对象有两种实例化方式,一种是直接赋值,只会开辟一块堆内存空间,而且对象可以自动入池,另外一种方式使用构造方法完成,会开辟两块空间,有一块空间将成为垃圾,并且不会自动入池,但是可以通过intern()方法手工入池; · 字符串常量一旦声明则不可改变,而字符串对象可以改变,但是改变的是其内存地址的指向;通过以上的几个特点就可以清楚的发现,String类是表示字符串使用最多的类,但是其不适合于被频繁修改的字符串操作上,所以在这种情况下,往往可以使用StringBuffer类,即:StringBuffer类方便用户进行内容的修改。在String类之中使用“+”作为数据库的连接操作,而在StringBuffer类之中使用append()方法进行数据的连接。范例:使用StringBuffer操作,StringBuffer的内容可以改变
StringBuffer类在日后主要用于频繁修改字符串的操作上,但是在任何的开发之中,面对字符串的操作,98%都先考虑String,只有那2%会考虑StringBuffer。现在表示字符串的操作类就有了两个:String、StringBuffer,那么通过这两个类的定义来研究一下关系看上面图。
StringBuffer类(重点)
方法一:直接利用StringBuffer类的构造方法,public StringBuffer(String str)
方法二:利用StringBuffer类的append()方法
将String变为StringBuffer
将StringBuffer变为String,利用StringBuffer类的toString()方法完成
现在发现String和StringBuffer类都实现了一个CharSequence接口,日后一定要记住,如果看见了CharSequence最简单的理解做法就是传字符串,但是虽然这两个类是同一个接口的子类,不过这两个类对象之间却不能互相直接转型。
在每一个JVM进程之中,都会存在一个运行时的操作类的对象,而这对象所属的类型就是Runtime类。打开这个类的文档可以发现,在这个类之中并没有构造方法定义,可是按照之前所学,每个类至少有一个构造方法,而这个类的构造方法实际上存在只是不被外部看见而已,因为构造方法被私有化了,这是一个标准的单例设计模式,既然是单例设计模式则在这个类就一定会存在一个static型的方法,可以取得本类的实例化对象:public static Runtime getRuntime()。而当取得了这个类的实例化对象之后,可以利用这个类取得一些JVM的信息,例如: · 取得最大可用内存:public long maxMemory(); · 总共可以使用的内存:public long totalMemory(); · 空闲的内存:public long freeMemory()。
Runtime类
System类
java.util.Random的主要目的是产生随机数,下面直接通过一个代码来观察就行
随机数类:Random
在java.lang.Math类之中定义了所有的与数学有关的基本公式,在这个类之中所有的方法都是static型的方法,而在这个类只强调一个方法:round(),public static long round(double a),表示四舍五入。
数学公式类:Math
如果说现在有两个非常大的数字要进行数学操作,你们认为该怎么做?这个时候数字已经超过了double的范围,那么只能利用字符串来表示,取出每一位字符变为数字后进行数学计算,但是这种方式的难度较高,为了解决这样的问题,在Java里面提供了两个大数字操作类:java.math.BigInteger、java.math.BigDecimal,而这两个类是属于Number的子类。
之前已经强调过了,如果数字较大,肯定按照String来处理,所以这一点可以通过BigInteger的构造方法来观察: · 构造:public BigInteger(String val);而且在BigInteger类之中定义了一些基本的数学计算: · 加法:public BigInteger add(BigInteger val); · 减法:public BigInteger subtract(BigInteger val); · 乘法:public BigInteger multiply(BigInteger val); · 除法(不保存余数):public BigInteger divide(BigInteger val); · 除法(保存余数):public BigInteger[] divideAndRemainder(BigInteger val),数组第一个元素是商,第二个元素是余数;
大整数操作类:BigInteger
大小数操作类:BigDecimal
大数字操作类
常用类库
自由主题
java从入门到精通
收藏
0 条评论
回复 删除
下一页