Java从入门到精通
2023-06-08 20:11:26 12 举报
AI智能生成
Java基础思维导图
作者其他创作
大纲/内容
Java 是一种通过解释方式来执行的语言,其语法规则和c++类似。同时,Java也是一种跨平台的程序设计语言,用Java语言编写的程序,可以运行在任何平台和设备上。 Java语言程序代码的编译和运行过程
什么是 Java 语言
Java 的应用领域
Java 的版本
怎样学好 Java
Java API 文档
Java 简介
简单
面向对象
分布性
可移植性
解释性
安全性
健壮性
多线程
高性能
动态
Java 语言的特性
下载 JDK11
JDK 下载
在 Windows 10 系统下搭建 JDK 环境
搭建 Java 环境
初识 Java
Eclipse 由 IBM 公司投资 4000 万美元开发而成,它基于 Java 语言编写,是目前最流行的 Java 集成开发工具之一。
Eclipse 简介
工作台
Eclipse 工作台
菜单栏
主工具栏
视图工具栏
工具栏
“控制台”视图
熟悉 Eclipse
创建Java项目
创建Java类文件
使用编译器编写程序代码
运行Java程序
使用 Eclipse
熟悉 Eclipse 开发工具
一个 Java 应用程序是由若干个类组成的
包声明
通常将类的属性称为全局变量,将方法中的属性称为局部变量。
声明成员变量和局部变量
main() 方法是类体中的主方法
编写主方法
在 Java 语言中可以通过 import 关键字导入相关的类
导入 API 类库
Java 主类结构
byte,short,int,long
整数类型
float,double
浮点类型
数值型
char
字符类型
Boolean
布尔类型
基本数据类型
标识符
关键字
声明变量就是要告诉编译器(compiler)这个变量的数据类型,这样编译器才知道需要配置多少空间给它,以及它能存放什么样的数据。
声明变量
在程序运行过程中一直不会改变的量被称为常量(constant),通常也被称为“final 变量”。常量在整个程序中只能被赋值一次。
声明常量
在类体中所声明的变量被称为成员变量,成员变量在整个类中都有效
成员变量
在类的方法体中声明的变量(方法内部定义,“{”与“}”之间的代码中声明的变量)称为局部变量。局部变量只能在当前代码块中有效。
局部变量
如图
变量的有效范围
常量与变量
赋值运算符以符号“=”表示,它是一个二元运算符,其功能就是将右方操作所包含的值赋给左方的操作数。
赋值运算符
主要有+(加)、-(减)、*(乘)、/(除)、%(求余),它们都是二元运算符。
算数运算符
符号在前先算后用(++a(加一)),在后先用后算a++
自增自减运算符
>(大于)、<(小于)、==(是否相等)、>=(大于等于)、<=(小于等于)、!=(不等于)。
比较运算符
&& 与 两者都为真结果才为真|| 或 只要有一真结果就为真! 非 非真即假非假即真
逻辑运算符
位运算符
三元运算符
优先级由高到低的顺序依次是:增量和减量运算算数运算比较运算逻辑运算赋值运算
运算符优先级
运算符
隐式类型转换((自动)不会丢失数据)
隐式类型转换
显式类型转换((强制)有可能会丢失数据)
显式类型转换
数据类型转换
单行注释://
多行注释:/* */
文档注释:/** */
代码注释
编码规范
代码注释与编码规范
Java 语言基础
由“{”开始,“}”结束
复合语句
if 条件语句
switch 多分支语句
条件语句
while 循环语句
do...while 循环语句
for 循环语句
循环语句
break语句跳出当前循环.
break 语句
continue 语句
循环控制
流程控制
数组是具有相同数据类型的一组数据的集合
数组概述
1.先声明,再用new关键字进行内存分配,声明有一下两种方式 数组元素类型 数组名字[ ]; 数组元素类型[ ] 数组名字;声明一维数组,代码如下:int arr[ ];为数组分配内存,代码如下:arr = new int[5];2.声明的同时为数组分配内存:int month[] = new int[12]
创建一维数组
初始化一维数组
使用一维数组
一维数组
1.先声明,再用new关键字进行内存分配声明: 数组元素的类型 数组名字[ ][ ]; 数组元素的类型[ ][ ] 数组名字;声明数组int a[ ][ ];分配空间:a = new int[2][4]声明的同时进行分配:int a = new int[2][4]
创建二维数组
初始化二维数组
public class 例p77 { public static void main(String[] args) { int a[][] = new int[3][4]; for(int i =0;i < a.length;i++) { for(int j = 0;j < a[i].length;j++) { System.out.print(a[i][j]); } System.out.println(\"\"); } }}
使用二维数组
二维数组
遍历数组
子主题
填充替换数组元素
对数组进行排序
复制数组
查询数组
数组的基本操作
数组
通常都会将对象划分为两个部分,即静态部分与动态部分
对象
类是同一类事物的统称类是构造对象时所依赖的的规范,对象就是符合某个类的定义所产生出来的实例类是 封装对象的属性 和 行为的载体,反过来说,具有相同属性和行为的一类实体被称为类
类
封装是面向对象编程的核心思想。将对象的属性和行为封装起来,其载体就是类,类通常对客户隐藏其实现细节,这就是封装思想。
封装
继承
其实将对象应用于子类的特征就是多态。
多态
面向对象概述
对象的属性也称为成员变量
使用成员方法对应于类对象的行为
成员方法
权限修饰符
如果在成员方法内定义一个变量,那么这个变量被称为局部变量。局部变量是在方法被执行时创建,在方法执行结束时被销毁。局部变量在使用时必须进行赋值操作或被初始化,否则会出现编译错误。
this关键字用于表示本类当前的对象,当前对象不是某个new出来的实体对象,而是当前正在编辑的类。this关键字只能在本类中使用。
this 关键字
构造方法的特点如下: 构造方法没有返回值。 构造方法的名称要与本类的名称相同。构造方法的定义如下:public Book(){ ... //方法体} public: 构造方法修饰符 Book:构造方法的名称
类的构造方法
由 static 修饰的变量和方法被称为静态变量和静态方法。但静态成员同样遵循着 public、private、和 protected 修饰符的约束。
静态变量和静态方法
主方法是类的入口点,它定义了程序从何处开始。主方法提供对程序流向的控制,Java 编译器通过主方法来执行程序。主方法的语法如下:public static void main(String[] args){ ... //主方法}
类的主方法
在 Java 语言中,通过new操作符来创建对象。准确的说,在 Java 语言中使用 new 操作符调用构造方法创建对象。语法如下:Test test = new Test();Test test = new Test(\"a\");
对象的创建
访问对象的属性和行为
对象名的引用People tom;通常一个引用不一定需要有一个对象相关联。引用与对象相关联的语法如下:People tom = new People();
对象的引用
类和对象
类的继承
在 Object 类中,主要包括 clone() 、finslize()、equals()、toString()等方法。
Object 类
向上转型子类对象赋值给父类引用Animal a = new Dog();自动类型转换
向上转型
向下转型父类对象赋值给子类引用Dog a = (Dog)new Animal ();强制类型转换
向下转型
对象类型的转换
instanceof对象名instanceof类名判断对象是否属于该类或子类
使用 instanceof 关键字判断对象类型
重载方法名不同 参数不同
方法的重载
Final修饰变量———不可改变的量(常量)final double PI = 3.14
final 变量
public final void test(){ ...//省略一些程序代码}
final 方法
final 类名{}
final 类
final 关键字
假如现在要编写一个绘制图形的方法 draw() ,如果传入正方形对象就绘制正方形,如果传入图形对象就绘制图形,这种场景可以使用重载来实现,定义如下:public void draw (Square s){ //绘制正方形的方法}Public void draw (Circular){ //绘制圆形的方法}
抽象方法修饰符 abstract 返回参数 方法名(传入参数)。抽象类 有抽象方法的类一定是抽象类修饰符 abstract class 类目{}使用 abatract 关键字定义的类称为抽象类,而使用这个关键字定义的方法为抽象方法。抽象方法没有方法体。定义抽象的语法如下:public abstract class Parent{ abstract void testAbstract(); //定义抽象方法}反过来讲,如果声明一个抽象方法,就必须将承载这个抽象方法的类定义为抽象类。
抽象类
接口 所有方法都是抽象方法修饰符 interface接口名{}实现 implementsJava语言每一个类可以实现多个接口修饰符class类名implements接口1,接口2,…{}
接口
抽象类与接口
继承、多态、抽象类与接口
在程序中定义一个Login类,因业务需要,还要定义一个名称为Login的类,但是这两个类所实现的功能完全不同,于是问题就产生了——编译器不会允许同名的类文件。解决这类问题的办法是将这两个类放置在不同的类包中。
类名冲突
例如:java.util.Date date = new java.util.Date();java.sql.Date date2 = new java.sql.Date(1000);在Java中采用类包机制非常重要,类包不仅可以解决类名冲突问题,还可以在开发庞大的应用程序时,帮助开发人员管理庞大的应用程序组件,方便软件复用。
完整的类路径
1.在src节点上右击,选择New/Package。2.弹出New Java Package对话框,在name文本框中输入新建包名,然后点击Finish。3.语法如下:package 包名
创建包
1.使用 import 关键字导入包在程序中使用 import 关键字导入 com.mr.Math 类,在程序中使用 Math 类是就会自动选择 com.mr.Math 类。import 关键字的语法如下:import com.mr.*; //导入 com.mr 包中的所有类import com.mr.Math //导入 com.mr 包中的 Math 类在所有 import 关键字时,可以指定类的完整描述,如果为了使用包中更多的类,可以在使用 import 关键字指定时在包指定后加上 * ,这表示可以在程序中使用该包的所有类。2.使用 import 导入静态成员import 关键字除导入包外,还可以导入静态成员,语法:import static 静态成员
导入包
Java 类包
在一个类中使用内部类,可以在内部类中直接存取其所在类的私有成员变量。成员内部类的语法如下:class OuterClass{ //外部类 class InnerClass{ //内部类 }}
成员内部类
匿名类是只在创建对象时才会编写类体的一种写法。匿名类的特点是“现写现用”,其语法如下:new 父类/父接口(){ 子类实现的内容};
匿名内部类
内部类
包和内部类
在程序中,异常可能有程序员没有预料到的各种情况产生,也可能有超出了程序员可控范围的环境因素产生,如果用户的环数据、试图打开一个根本不存在的文件等。在Java中,这种在程序运行时可能出现的一些错误称为异常。
异常概述
异常抛出后,如果不做任何处理,程序就会被终止。例如,将一个字符串转换为整形,可以通过Integer类的parseInt()方法来实现。但如果该字符串不是数字形式,parselnt()方法就会抛出异常,程序将在出现异常的位置终止,不在执行下面的语句
抛出异常
Java语言的异常捕捉结构由try、catch 和 finally3部分组成。
捕捉异常
异常的抛出与捕捉
Java 中常见的异常类
1.创建自定义异常类。2.在方法中通过throw关键字抛出异常对象。3.如果在当前抛出异常的方法中处理异常,可以使用try - catch语句块捕获并处理,否则在方法的声明处通过throws关键字指明要抛出给方法调用者异常,继续进行下一步操作.4.在出现异常的方法的调用者中捕捉并处理异常。
自定义异常
throws关键字通常被应用在声明方法时,用来指定方法可能抛出的异常。多个异常可使用逗号分隔。
使用 throws 关键字抛出异常
throw关键字通常用于方法体,并且抛出一个异常对象。程序在执行到throw语句时立即终止,他后面的语句都不执行。
使用 throw 关键字抛出异常
在方法中抛出异常
异常处理
字符串必须包含在一对双引号(“”)之内。例如:\"23.23\"、\"ABCDE\"、\"你好\"String str;String: 指定该变量为字符串变量类型;str:任意有效的标识符,表示字符串变量的名称。声明字符串变量s,代码如下:String s;
声明字符串
创建字符串
String 类
使用 “+” 运算符可实现连接多个字符串的功能。
连接多个字符串
package tenbao;public class Link { public static void main(String[] args) { // TODO Auto-generated method stub int booktime = 4; float practice = 2.5f; //将字符串与整数类型、浮点类型相连、并将结果输出 System.out.println(\"我每天花费\" + booktime + \"小时看书:\" + practice + \"小时上机练习\"); }}
连接其他数据类型
连接字符串
使用String类的length()方法可获取声明字符串对象的长度。获取字符串长度,代码:String str = \"We are student\";int size = str.length();
获取字符串长度
1.indexOf(String s)该方法用于返回参数字符串 s 在指定字符串中首次出现的位置。如果没有检索到字符串 s ,该方法返回 -1查找字符 a 在字符串 str 中的索引位置,代码:String str = \"We are student\";int size = str.indexOf('a');
字符串查找
使用 charAt(int index)方法可指定索引处的字符返回。语句如下:str.charAt(int index)
获取指定索引位置的字符
获取字符串信息
获取子字符串
trim() 方法返回字符串的副本,忽略前导空格和尾部空格。语法如下:str.trim()
去除空格
字符串替换
1.startsWith() 方法该方法用于判断当前字符串对象的前缀是否为参数指定的字符串。语法如下:startsWith(String prefix) 2.endsWith() 方法该方法用于判断当前字符串是否以给予的字符串结尾。语法如下:str.endsWith(String suffix)
判断字符串的开始与结尾
如果两个字符串具有相同的字符和长度,则使用equals()方法进行比较时,返回true。否则返回false。 使用equals()是区分大小写的,而使用equalslgnoreCase()忽略了这种情况返回类型为boolean类型
判断字符串是否相等
比较 compareTo()方法为按字典顺序比较两个字符串,该比较基于 字符串中各个字符的Unicode 值,按字典顺序将 String对象表示的字符序列与参数字符串所表示的字符序列进行比较。如果按字典顺序此 String对象位于参数字符串之前,则比较结果为一个负整数;如果按字典顺序此 String对象位于参数字符串之后,则比较结果为一个正整数;如果这两个字符串相等,则结果为 0
按字典顺序比较两个字符串
1.toLowerCare()方法该方法将字符串中的所有大写字母转化为小写。字符串长度不变。语法:str.toLowerCase()2.toUpperCase()方法该方法将字符串中的所有小写转化为大写。str.toUpperCase()
字母大小写转换
字符串分割
字符串操作
1.日期格式化先来看一个例子。返回一个月中的天数,代码如下:Date date = new Date();String s = String.format(\"%te\
日期格式化
时间格式化
格式化常见的日期时间组合
日期和时间字符串格式化
常规格式化
格式化字符串
使用正则表达式
1.append()方法该方法用于向字符串生成器中追加内容。通过该方法的多个重载形式,可实现接受任何类型的数据,如int、boolean、char、String、double或者另一个字符串生成器等。语法如下:append(content)其中,content 表示要追加到字符串生成器中的内容,可以是任何类型的数据或其他对象。2.insert(int offset,arg)向字符串生成器中指定的位置添加字符,代码如下:StringBuilder bf = new StringBuilder(\"hello\
字符串生成器
字符串
Integer 类在对象中包装了一个基本数据类型 int 的值,该类的对象包含了一个 int 类型的字节。
Integer 类
Double 类在对象中包装一个基本数据类型为 double 的值,每个 Double 类的对象都包含一个 double 类型的字段。此外,该类还提供了多个方法,可以将 double 类型转换为 String 类型,将 String 类型转化为 double 类型。
Double 类
Boolean 类的常用方法
Boolean 类
该提供了多种方法,以确定字符的类别(小写字母、数字等),并可以很方便地将字符从大写转化为小写,反之亦然。Character 类的常用方法:
Character 类
数值型包装类共有方法:方法 功能介绍byteValue() 以 byte 形式返回指定的数值intValue() 以 int 形式返回指定的数值floatValue() 以 float 形式返回指定的数值shortValue() 以 short 形式返回指定的数值longValue() 以 long 形式返回指定的数值doubleValue() 以 double 形式返回指定的数值
Number 类
包装类
数字格式化操作主要针对的是浮点型数据,包括 double 型和 float 型数据。在 Java 中使用 java.textDecimalFormat 格式化数字。DecimalFormat 类是 NumberFormat 的一个子类,用于格式化十进制数字。它可以将一些数字格式化为整数、浮点数、百分数等。通过使用该类可以为要输出的数字加上单位或控制数字的精度。
数字格式化
Math 类 提供了众多数学函数方法。主要包括三角函数方法,指数函数方法,取整函数方法,取最大值、最小值,以及平均值函数方法。这些方法都被定义为 static 形式,所以在程序中应用比较简便。
Math 类
Random 类是 JDK 中的随机数生成器类,可以通过实例化一个 Random 对象创建一个随机数生成器,语法如下:Random r = new Random();也可以设置随机数生成器的种子。语法如下:Random r = new Random(seedValue);
Random 类
BigInteger 类的数字范围教 Integer 类的数字范围大的多。在 BigInteger 类中封装了多种操作,除了基本的加、减、乘、除操作,还提供了绝对值、相反数、最大公约数以及判断是否为质数等操作。使用 BigInteger 类。可以实例化一个 BigInteger 对象,并自动调用相应的构造函数。BigInteger 类具有很多构造函数,但最直接的一种方式是参数以字符串形式代表要处理的数字。例如,将 2 转换为BigInteger 类型,可以使用以下语句进行初始化操作:BigInteger twolnstance = new BigInteger(\"2\");
BigInteger 类
BigDecimal 类和 BigInteger 类都能实现大数字的运算,不同的是 BigDecimal 类加入了小数的概念。
BigDecimal 类
数字处理
1. 不会自动换行的 print() 方法System.out.print(\"Hello\");2.可以自动换行的 println() 方法System.out.println(\"Hello\");使用这俩个输出方法时还要注意一下两点:(1)“System.out.println(\"\\");” 会打印两个空行。(2) “System.out.print();” 无参数会报错。
控制台输出字符
System.currentTimeMillis() 方法可以获取自1970年1月1日零点至今的毫秒数。
计时
System 类
使用Scanner 类首先要引入该类,其语法如下:import.java.util.Scanner;使用 Scanner 类扫描控制台的代码如下:Scanner sc = new Scanner(System.in);
Scanner 类
Date 类用于表示日期时间,使用该类表示时间需要使用其构造方法创建对象。
Date 类
DateForemat 类时日期时间格式化子类的抽象类,可以按照指定的格式对日期时间进行格式化。另外,使用DateFormat类还可以自定义日期时间的格式。要格式化一个当前语言环境下的日期,Sy首先需要创建DateFormat类的一个对象,由于它是抽象类,因此可以使用其静态方法getDateInstance()进行创建,语法如下:DateFormat df = DateFormat.getDateInstance();
日期时间格式化
Calendar类是一个抽象类,它为特定瞬间与一组诸如YEAR、MONTH、DAY OF MONTH HOUR等日历字段之间的转换提供了一些方法,并为操作日历字段(如获得下星期的日期)提供了一些方法。另外,该类还为实现包范围外的具体日历系统提供了其他字段和方法,这些字段和方法被定义为 protected。Calendar 提供了一个类方法 getInstance(),以以获得此类型的一个通用的对象。Calendar类的 getInstance()方法返回一个Calendar对象,其日历字段已由当前日期和时间初始化,其使用方法如下:Calenderright Now = Calendar.getInstance();
Calendar 类
日期时间类
常见类库
Java从入门到精通
收藏
0 条评论
回复 删除
下一页