2024java学习
2024-05-19 21:15:50 10 举报
AI智能生成
java小学习
作者其他创作
大纲/内容
关键字
instanceof
ava中可以使用instanceof关键字判断一个对象是否是某个类(或接口)的实例
语法格式:对象 instanceof 类 (或接口)
左边是对象,右边是类;当对象是右边类或子类所创建对象时,返回true;否则,返回false
static
如果在Java程序中使用static修饰属性,则该属性称为静态属性(也称全局属性),静态属性可以使用类名直接访问
类名.属性名
类名.方法
实例化对象名.方法
final
Java中使用final关键字修饰的类不可以被继承,也就是不能派生子类
当一个类的方法被final关键字修饰后,该类的子类将不能重写该方法
Java中被final修饰的变量为常量,常量只能在声明时被赋值一次,在后面的程序中,常量的值不能被改变,变量名称要求全部的字母大写
数组
定义数组的方法
数组类型[][] 名= new =数组类型[长度][宽度]
int[]arr =
数组的元素
数组名称、数组元素、元素索引、数据类型
代码块
就是用{}括号括起来的一段代码代码块可以分为4种:普通代码块、构造块、静态代码块、同步代码块。同步代码块将在多线程部分进行讲解
普通代码块
在不同的代码块,作用域也不同,虽然是同名的变量,但也不受影响
构造块
构造块的执行顺序大于构造方法(这里和构造块写在前面还是后面没有关系)
静态代码块
用static关键字修饰的代码块称为静态代码块。当类被加载时,静态代码块就会执行,由于类只加载一次,所以静态代码块只执行一次
同步代码块
匿名对象
概念:匿名对象是指创建对象时,只有创建对象的语句,却没有把对象地址值赋值给某个变量。
内部类
成员内部类
局部内部类
分支主题
分支主题
分支主题
javase
数据类型
基础数据类型
整型
bate
short
int
long
浮点型
float
double
布尔型
boolean
true
false
字节
char
引用数据类型
字符串
String
栈
堆
树
基本数据类型
数值型
整数类型(byte,short,int,long)
字符型(char)
布尔型(boolean)
引用数据类型
类(class)
接口(interfaca)
数组
枚举(enum)
注释(annotation)
类
属性
变量
方法
java自带方法
构造方法
在声明实例化对象时,会自动为这个类创建一个默认的构造方法,构造方法通常使用public精选修饰
抽象方法(见抽象类)
修饰符
访问修饰符
public
默认修饰符
protected
private
特殊修饰符
static
final
abstract
方法重载
参数不同的方法有着相同的名字,调用时根据参数不同确定调用哪个方法,这就是Java方法重载机制
方法重载,就是在同一个作用域内,方法名相同但参数个数或者参数类型不同的方法
高级特性
继承
关键字:extends
特性
一个类只能有一个父类
可以有多个子类
A继承B,B继承C
注意
子类不能访问父类是所有方法、属性。父类中被默认修饰符default,private修饰的属性和方法不能被子类访问
子类重写父类方法时,不能使用比父类中被重写的方法更严格的访问权限。例如,父类中的方法是public权限,子类的方法就不能是private权限。如果子类在重写父类方法时定义的权限缩小,则在编译时将出现错误。
this和super不可以同时出现,因为使用this和super调用构造方法的代码都要求必须放在构造方法的首行。
子类重写父类的方法
在子类中重写的方法需要和父类被重写的方法具有相同的方法名、参数列表以及返回值类型。
super
封装
封装的好处
在Java面向对象的思想中,封装是指一种将类的实现细节包装、隐藏起来的方法。封装可以被认为是一个保护屏障,防止本类的代码和数据被外部类定义的代码随机访问。
封装常用的方法
取出方法getXXX( )
return this.XXX;
设置方法setXXX(int XXX)
this.XXX=XXX;
多态
向下转型
子类类型 子类对象 = (子类)父类对象;
注意:对象在进行的向下转型前,必须先进行向上转型,否则将出现对象转换异常
注意:在向下转型时,不能直接将父类实例强制转换为子类实例,否则程序会报错,编译错误。
向上转型
父类类型 父类对象 = 子类实例;
父类对象可以调用子类重写父类的方法,这样当需要新添功能时,只需要新增一个子类,在子类中对父类的功能进行扩展,而不用更改父类的代码,保证了程序的安全性
注意:父类Animal的对象an是无法调用Dog类中的eat()方法的,因为eat()方法只在子类中定义,而没有在父类中定义。
接口
关键字
implements
修饰符 class 类名 extends 父类名 implements 接口1,接口2.......{.....}
interface
public interface 接口名 [extends 接口1,接口2,]
特性
一个类可以有多个接口
注意
抽象类
abstract 返回值类型 方法名称(参数列表);
抽象方法
无方法体
访问权限 abstract 返回值类型 抽象方法名称(参数);
注意
异常
Throwable
不可治愈的病——错误Error
可以治愈的病——异常Exception
算数异常ArithmeticException
索引越界异常ArrayIndexOutOfBoundsException
类型转换异常classlastException
空指针异常
数字格式化异常NumberFormatException
方法
getMessage()
toString()
printStackTrace()
异常的概念
概念
程序在运行过程中出现的特殊情况
异常处理的必要性
任何程序都i肯存在大量的未知问题、错误;如果部队这些问题进行正确处理则可能导致程序中断,造成不必要的影响
异常的分类
Throwable
可抛出的,一切错误或异常的父亲,为与java.lang包下
Error
JVM、硬件、执行逻辑错误、不能手动处理
Exception
程序在运行和配置中产生的问题,可处理
RuntimeException
运行是异常,可处理可不处理
checkedException
变量异常,必须处理
异常的产生
自动抛出异常
当程序在运行时遇到不符合规范的代码或结果时,会产生异常
手动抛出异常
语法
throw new异常类型(“实际参数”)
产生异常结果
相当与遇到return语句,导致程序因异常而终止
异常的传递
异常的传递
按照方法的调用链方向传递,始终没有处理异常,最终会由JVM进行默认异常处理(打印堆宅)
受查异常
throws声明异常,修饰在方法参数列表的后端
运行时异常
因可处理可不处理,无需声明异常
异常的处理
编译时期的异常
使用try…catch语句对异常进行捕获处理。
使用throws关键字声明抛出异常,调用者对异常进行处理
运行时异常
方法声明
ArithmeticException算术异常
IndexOutOfBoundsException索引越界异常
ClassCastException类型转换异常
NullPointerException空指针异常
NumberFormatException数字格式化异常
关键字
try
里面放置可能引发异常的代码
注意:在try代码块中,发生异常语句后面的代码是不会被执行的,如上述案例中第5行代码的打印语句就没有执行
catch
后面对应异常类型和一个代码块,该关键字表明catch块是用于处理这种类型的代码块
finally
主要用于回收在try代码块里打开的物理资源,如数据库连接、网络连接和磁盘文件。异常机制保证finally块总是被执行
注意:如果在try...catch中执行了System.exit(0)语句,finally代码块不再执行。System.exit(0)表示退出当前的Java虚拟机,Java虚拟机停止了,任何代码都不能再执行了
throw
用于抛出一个实际的异常。它可以单独作为语句来抛出一个具体的异常对象
throws
用在方法签名中,用于声明该方法可能抛出的异常
注意:使用throws关键字重抛异常时,如果程序发生了异常,并且上一层调用者也无法处理异常时,那么异常会继续被向上抛出,最终直到系统接收到异常,终止程序执行
自定义异常
需继承来自Exception的子类,常用RuntimeException
必要提供的构造方法
无参数构造方法
String message参数的构造方法
方法覆盖
带有异常声明的方法覆盖
方法名、参数列表、返回值类型必须和父类相同
子类的访问修饰符符合父类向相同或是比父类更宽
子类中的方法、不能抛出比父类更宽泛的异常
API——java常用类
Object类
boolean equals(Object obj)
只指示其他某个个对象是否于此对象"相等"--其实就是使用两个对象内存地址作比较是否为同一个对象
对象名.equals(对象名)
可重写为根据属性值来进行比较
String toString()
用于返回类的字符串形式--对象的类型+@+内存地址值
对象.toString()
可重写为返回对象的属性情况
Int hashCode
返回该对象的哈希码值
对象.hashCode()
可根据需要重写
字符串类
创建字符串常量 String s ="asd";
初始化字符串对象 String s = new String("asadsa");
StringBuffer类
能改变的字符串
常用的方法
SstringBuffer
StringBuilder类与StringBuffer类的功能相似,且两个类中所提供的方法也基本相同
二者之间最大不同在于StringBuffer的方法是线程安全的,而StringBuilder没有实现线程安全功能,所以性能略高。通常情况下,如果创建一个内容可变的字符串对象,应该优先考虑使用StringBuilder类。
日期与时间类
Date
Date():用于创建当前日期时间的Date对象。
Date(long date):用于创建指定时间的Date对象,其中date参数表 示1970年1月1日0时0分0(称为历元)以来的毫秒数,即时间戳。
DataFiormat
DateFormat是一个抽象类,不能被直接实例化,但它提供了一系列用于获取DateFormat类实例的静态方法,并能调用其他相应的方法进行操作。
常用方法
Calendar
Calendar类也用于完成日期和时间字段的操作,它可以通过特定的方法设置和读取日期的特定部分,比如年、月、日、时、分、秒等。
常用常量
Math、Random类和BigInteger类
Math
子主题
Random
子主题
子主题
BigInteger(包装类)
子主题
集合
单列集合
List
ArratList
LinkedList
LinkedList集合内部维护了一个双向循环链表,链表中的每一个元素都使用引用的方式记录它的前一个元素和后一个元素,从而可以将所有的元素彼此连接起来。当插入一个新元素时,只需要修改元素之间的引用关系即可,删除一个节点也是如此。正因为这样的存储结构,所以LinkedList集合增删效率非常高
Vector
常用方法
子主题
Set
HashSet
子主题
TreeSet
子主题
左边的数比右边小
子主题
双列集合
Map
Hashtable
HashMap
TreeMap
子主题
Iterator接口
一般使用方法
增强型for循环
for(容器中元素类型 临时变量:容器变量) {执行语句}
foreach循环虽然书写起来很简洁,但在使用时也存在一定的局限性。当使用foreach循环遍历集合和数组时,只能访问集合中的元素,不能对其中的元素进行修改。
子主题
收藏
0 条评论
下一页