JAVASE
2023-07-25 17:30:51 0 举报
AI智能生成
javase
作者其他创作
大纲/内容
JAVA开发环境
java: 跨平台 半编译半解释 面向对象 (封装 继承 多肽)
JDK、JRE
JDK Java Development Kit java开发工具包
JRE Java Runtime Environment java运行时的环境
java.exe、javac.exe
Javac.exe 将源代码转换为计算机能识别的字节码
java.exe 将字节码在虚拟机中执行
变量和运算符
数据类型
基本数据类型
数值型
整数类型
byte 1字节
short 2字节
int 4字节
long 8字节
浮点类型
float 4字节
double 8字节
字符型
char 2字节
布尔型
boolean 1字节
引用数据类型
类 class
接口 interface
数组
数据类型转换
两类:1自动转换(隐性)2强制转换(显性)
不参与类型转换:布尔型boolean
byte、short、char在计算时首先会转换为int类型
运算符
算数运算符,关系运算符,逻辑运算符,赋值运算符
自增、自减
++、--变量名:变量在参与其他操作前先将自己加1;
变量名++、--:先用原来的值参与其他操作后,再将自己加1
变量名++、--:先用原来的值参与其他操作后,再将自己加1
逻辑与
&&
运算符左右两端的操作数都为true,表达式结果才为true,其它情况表达式结果为false
逻辑或
| |
运算符左右两端的操作数都为true,表达式结果才为true,其它情况表达式结果为false
逻辑取反
!
操作数为true,结果为false;操作数为false,结果为true
三目运算符的作用
先判断一个条件是否满足 满足输出?后:前的字符串,不满足输出:后的字符串
优先级
按操作数多少分
一元运算符>二元运算符>三元运算符
一元运算符>二元运算符>三元运算符
按运算符类型划分
算数运算符>关系运算符>逻辑运算符>赋值运算符
算数运算符>关系运算符>逻辑运算符>赋值运算符
流程控制语句
条件语句
if语句
if (表达式) {
执行语句块;
}
执行语句块;
}
switch语句
switch(表达式){
case 取值1:
语句块1;
[break;]
case 取值2:
语句块2;
[break;]
......
case 取值n:
语句块n;
[break;]
default:
语句块n+1;
}
case 取值1:
语句块1;
[break;]
case 取值2:
语句块2;
[break;]
......
case 取值n:
语句块n;
[break;]
default:
语句块n+1;
}
循环语句
while语句
while(循环条件){
循环体;
}
循环体;
}
do-while语句
do{
循环体;
}while(循环条件);
循环体;
}while(循环条件);
for语句
for(表达式1;表达式2;表达式3){
循环体;
}
循环体;
}
死循环
while循环
while后写true为死循环
for循环
循环条件表达式为空即为死循环
循环的中断
break为跳出循环
continue为跳出当前循环,下面的继续执行
continue为跳出当前循环,下面的继续执行
数组
数组的定义
char[] c; String strs[];
数组的创建
静态初始化
int[] m = {3,75,234,41,16};
动态初始化
char[] c = new char[128]
数组元素的访问
数组最大下标=数组.length-1
数组的排序和查找
冒泡排序。
数组二分查找。
方法的定义和调用
方法的定义
[访问控制符] [修饰符] 返回值类型 方法名( 参数类型 形式参数,参数类型 形式参数,…)
{
方法体
}
{
方法体
}
修饰符:修饰符是可选的,它指定了方法的属性并且告诉编译器该方法可以如何调用,public 、static 被称为修饰符
返回值类型:返回值类型是方法要返回的值的数据类型,例如可以是int,若方法不返回值,则返回值类型为关键字void。
方法名:它作为调用时引用方法的标识
参数列表:方法可以有一个参数列表,按方法的规范称为形式参数。
方法体:它是一个语句块,执行特定的功能操作。
return 表达式:返回值
方法的调用
调用方法的格式为:
方法名(实际参数表);
方法的重载
方法重载的规则:
1.方法名称相同
2.方法的参数必须不同,参数个数不同或参数类型不同
3.方法的返回值类型可以相同,也可以不同
在同一个类中,允许同时存在一个以上同名的方法的现象就叫做方法的重载。
面向对象基础
类的定义
类:具有共同特征(组成部分和功能)的事物的集合
类的格式
[public][abstract|final]class 类名[extends父类][implements接口列表]
{
属性声明及初始化;
方法声明及方法体;
}
{
属性声明及初始化;
方法声明及方法体;
}
对象的创建和使用
对象:类的具体化
构造方法
构造方法的作用
实例化对象和初始化对象属性的
实例化对象和初始化对象属性的
构造方法的特点
1. 具有与类相同的名称
2. 不含返回值类型
3. 不能在方法中用return语句返回一个值
4. 一般访问权限为public
变量的作用域
局部变量:定义在方法体中的变量;或是方法的形参。
实例变量:即类的属性,也是类内的全局变量。
静态变量:在类中声明为static 的属性。
匿名对象:对象在程序中只使用一次,使用完会被垃圾回收机制回收掉
this关键字
作用:
this关键字代表对象自身的引用,它是一个引用,指向调用该方法的当前对象,通常在类的方法定义中使用
this关键字代表对象自身的引用,它是一个引用,指向调用该方法的当前对象,通常在类的方法定义中使用
this关键字的应用的情况,
● 一是方法中的变量与属性重名时
● 二是在一个构造方法中,调用其它重载的构造方法
● 三是返回当前对象的引用
● 一是方法中的变量与属性重名时
● 二是在一个构造方法中,调用其它重载的构造方法
● 三是返回当前对象的引用
方法的递归调用
方法在定义时候用了自己(阶乘)
面向对象高级特性
类的继承
继承是从已有的类中派生出新的类,新的类能拥有已有类的属性和行为,并能扩展新的属性和行为。
关键字extends
子类实例化的过程:
子类实例化时先实例化其父类,然后实例化子类。
要先调用父类的构造方法,父类构造方法运行完毕,才调用子类的构造方法。
子类实例化时先实例化其父类,然后实例化子类。
要先调用父类的构造方法,父类构造方法运行完毕,才调用子类的构造方法。
方法重写
方法重写是子类将从父类中继承下来的方法重新实现
需要注意:
1.方法名与形参列表必须一致
2.子类的权限修饰符必须大于或等于父类的权限修饰符
3.子类的返回值类型必须小于或等于父类的返回值类型
引用数据类型转换
上溯造型
父类的引用指向子类的实例化对象
下塑造型
Cat c = (Cat) a;
将父类强制转型为子类
将父类强制转型为子类
instanceof 运算符
判断一个类是否实现了某个接口:
判断一个实例对象是否属于一个类:
判断一个实例对象是否属于一个类:
多态
多态存在的三个必要条件:
要有继承,或实现
要有重写
父类引用指向子类的实例化对象(Animal a = new Cat();//向上转型)
静态
static关键字
修饰成员,增加调用方式:类名调用,共享数据
作用:用static修饰的成员变量会提升为类层级,在内存中只有一份(静态成员变量)
静态变量访问方法
1. 直接访问:类名.属性;
2. 实例化后访问:对象名.属性
静态方法
1. 直接访问:类名.方法名()
2. 实例化后访问:对象名.方法名()
单例模式
单例:无论实例化多少次,只得到一个实例化对象
单例模式要点
1. 某个类只能有一个实例
2. 它必须自行创建这个实例
3. 必须自行向整个系统提供这个实例
单例模式实现方式
1. 拥有一个私有构造方法
2. 提供一个自身静态私有的成员变量
3. 提供一个公有的静态方法
final关键字
final修饰的类不能被继承
final修饰的方法不能被重写
final修饰的成员变量不能被修改
final修饰的局部变量不能被修改
final修饰的方法不能被重写
final修饰的成员变量不能被修改
final修饰的局部变量不能被修改
抽象类
抽象类:包含一个抽象方法的类
抽象方法:用abstract 关键字修饰的,没有方法体的方法
接口
接口是一种用于描述类对外提供功能规范的、能够多继承的、特殊的抽象类。
接口中只能定义静态常量和抽象方法。
创建接口
采用interface关键字,接口不是一个类,没有构造方法,不能被实例化,
关系
类和接口的关系:实现 implements
类和接口的关系:实现 implements
子类可以同时实现多个接口
接口和接口的关系:继承 extends
接口和接口之间可以多继承
异常处理
错误问题分为哪三种
语法错误、逻辑错误、运行时错误
异常按照处理方式可以分为哪两种类型
检查性异常(checked exception)
非检查性异常(unchecked exception)
非检查性异常(unchecked exception)
处理异常分为哪两种方式
自行处理:可能引发异常的语句封入在 try 块内,而处理异常的相应语句则封入在 catch 块内
回避异常:在方法声明中包含 throws 子句,通知潜在调用者,该方法可能会出现异常,但没有处理这种异常,必须由调用者处理。
关键字
finally子句
fianlly语句中的代码块不管异常是否被捕获总是要执行
throw 使用在方法内部,在指定的方法中抛出指定的异常
throws使用在方法声明处,将异常对象抛出给方法的调用者
常见工具类
==
System.out.println(i == j);//比较基本数据类型时 比较的是值的大小
System.out.println(t1 == t2);//比较引用类型时 比较的是地址
System.out.println(t1 == t2);//比较引用类型时 比较的是地址
equals
boolean b1 = str3.equals(str4);//equals比较字符串内容。
"helloworld".toCharArray();//将字符串变为字符数组
String str = new String(chr);//将字符数组变为字符串
("helloworld".length());//返回字符串长度
("helloworld".charAt(4));//获取字符串的对应索引位置的字符
集合
Collection接口
Collection接口
第一类方法,向集合中添加对象的方法
第二类方法,从集合中删除元素的方法
第三类方法,判断集合中元素的方法
第四类方法,与其它类型的对象进行转换的方法
第五类方法,比较通用的方法
List接口及其实现类
第一类方法,在指定的位置上添加元素
第二类方法,删除指定位置的元素
第三类方法,获取某个元素或者获取某些元素
第四类方法,查找某个元素
第五类方法,修改元素的方法
第六类方法,转换成有顺序的迭代器
ArrayList
Iterator接口
Iterator对象称作迭代器,用来方便的实现对容器内的元素进行遍历操作。
hasNext():判断迭代器中是否有下一个元素,如果有,返回true,否则返回false。
next():用于得到下一个元素,返回值是Object类型,需要强制转换成自己需要的类型。
remove():用于删除元素。
增强型for循环
for (数据类型 变量名:数组名) 循环体语句
Set接口及其实现类
HashSet类
HashSet的特性在于其内部对象的散列存取
TreeSet
TreeSet存储的顺序是按照排序存储的
泛型
泛型是指参数化类型的能力。可以定义带泛型类型的类或方法,随后编译器会用具体的类型来替换他。
<? extends Number>描述了通配符上界, 即具体的泛型参数需要满足条件: 泛型参数必须是Number类型或它的子类,
<? super String>描述了通配符下界, 即具体的泛型参数需要满足条件: 泛型参数必须是String类型或它的父类
文件与流
File类
File类中的常用方法
流的概念及API
io流:输入、输出流
分类
按流的方向不同分为:输入流、输出流
按处理数据的单位不同分为:字节流、字符流
按功能不同分为:节点流、处理流
对象序列化
对象序列化:
把对象写入到--->txt文件里
把对象写入到--->txt文件里
0 条评论
下一页