发表于: 2020-05-25 22:10:49
1 1444
今日的作为:1.今天的笔记
类库
Java本质上只有两类型系统,8种基本数据类型和类(class)类型
基本数据类型不具有对象的特性,不能满足某些特殊的需求
打包器(wrapper)的主要目的就是提供对象实例作为外壳,将基本数据打包在对象之中,这样就可以操作这些对象
基本数据类型的包装类
Int Integer
char Character
float Float
double Double
byte Byte
long Long
short Short
boolean Boolean
装箱(Autoboxing):
把基本类型用他们对应的引用类型包起来,使他们具有对象的特质
利用各个包装类的构造方法实现
拆箱(Auto Unboxing ):
将引用类型的对象重新简化为值类的数据
(Character)
使用包装类的操作特点是可以将字符串变为指定的基本类型,但是对字符类型是不存在的,因为String类有一个charAt( )方法可以取得指定的索引字符
String类
String类是Java最常用的类之一,通过程序中建立String类可以轻松地管理字符串
字符串是一个或者多个字符组成的连续序列,程序需要储存大量文字、字符都使用字符串进行表示、处理
String类:
1.用于比较两个字符串,查找和抽取串中的字符或子串,进行字符串与其他类型之间的相互转换等
2.String类对象的内容一旦被初始化就不能再改变,对于Sting类的每次改变(如字符串连接等)都会生成一个新的字符串,比较浪费内存
StringBuffer类:
1. 用于可以改变字符串,可以将其他各种类型的数据增加、插入到字符串中,也可以转置字符串中原来的内容
2. 一旦通过StringBuffer生成了最终想要的字符串,就应该使用
StringBuffer.toString( )方法将其转换成String类,随后就可以使用String类的各种方法操作这个字符串了
3. StringBuffer每次都改变自身,不生成新的对象,比较节约内存
String 变量名 ;
String str ;
声明一个字符串对象str,分配了一个内存空间,因为没有初始化,所以没有存入任何对象
str作为局部变量是不会自动初始化的,必须显示的赋初始值,如果没有赋初始值,用System.out.println时会报错
在Java中,用户可以通过创建String来创建字符串,String对象既可以隐示地创建,也可以显示的创建,具体创建形式取决于字符串在程序中的用法,为了隐示的创建一个字符串,用户只要将字符串字符放在程序中,Java则会自动的创建String对象
1. 使用字符串常亮直接初始化
String 对象名称 = “字符串” ;
String s = “有志者事竟成”;
2. 使用构造方法创建并初始化(public String(String str)
String 对象名称 = new String (”字符串“) ;
String s = new String (”有志者事竟成“) ;
对于String对象也可以先声明再赋值
String str ;
Str = “Hello World !” ;
构造法也可以先建立对象,再赋值
String str = new String( );
str = “有志者事竟成” ;
public boolean equals(String anObject)普通 区分大小写比较
public boolean equalsIgnoreCase(String anotherString)普通 不区分大小写比较
public int compareTo(String anotherString)普通 比较字符串大小关系
由于String是一个类,对象名称一定要保存在栈内存中,字符串一定保存在堆内存之中
如果两个字符串完全一样,为了节省内存,编译器会智能的把他们指向的同一个堆内存地址
在任何情况下,使用new关键字,一定会开辟一个新的堆内存
==比较运算符在String中会判断对象的堆内存地址是否相等,属于地址的数值相等比较,并不是真正意义上的字符串内容比较
想要进行字符串内容的比较可以说使用equals( )
String str = new String(“Java”) ; //字符串对象的本质
Math类
在Math类中提供了大量的数学计算方法
Math类中包含了所有用于几何和三角的浮点运算方法,但是,这些方法都是静态的,也就是所Math类不能定义对象
Math mathObject = new Math( );//静态类不能定义对象
Random类
Random类是一个随机数产生器,一旦用一个初始值(俗称种子)创建Random对象,就可以得到一系列的随机数
如果使用相同的种子创建,得到的随机数序列是相同的,Java针对这一问题后来在Random类的Random( )构造方法中,使用当前的时间来初始化,在不考虑并发的情况下,程序调用Random对象的时刻是不相同的,这样来最大程度避免产生相同的随机数
nextInt( n ) 返回一个大于等于0,小于n(不包括n)的随机数
nextDouble( ) 返回一个大于等于0,小于1(不包括1)的随机浮点数
异常的基本概念
异常(Exception),是指所有可能造成计算机无法正常处理的情况,如果没有事先做出妥善安排,严重的话会使计算机宕机
异常处理,是一种特定的程序错误处理机制,他提供了一种标准的方法,用以处理错误、发现可以预知、不可预知的问题,及允许开发者识别、查出和修改错漏的地方
处理错误的方法特点:
1. 不需要打乱原有的程序设计结构,如果没有任何错误产生,那么程序的运行 不收任何影响
2. 不依靠方法的返回值,来报告错误是否产生
3. 采用集中的方式处理错误,能够根据错误种类的不同来进行对的错误处理操作
算数异常(ArithmeticException)
当算数运算中出现了除以0这样的运算会出现这样的异常
空指针异常(NullPointerException)
没有给对象开辟内存空间却使用该对象时会出现空指针异常
文件未找到异常(FileNotFoundException)
试图打开一个不存在的文件进行读写时将会引发的异常,经常是由于文件名错误,或者储存的磁盘等被移走,没有放入等原因造成
数组下标越界异常(ArrayIndexOutOfBoundsException)
对于一个给定大小的数组,如果数组的索引超过上线或低于下线都会造成越界
内存不足异常(OutOfMemoryException)
当可用内存不足以让Java虚拟机分配给一个对象时抛出的错误
Java通过面向对象的方法来处理异常
异常的抛出(throw):
生成异常对象并把它提交给运行时系统的过程
异常的捕获(catch):
运行时系统在方法的调用栈中查找,并生成异常的方法开始进行回溯,知道找到包含相应异常处理的方法位置
异常都是发生在运行时的,凡是能运行的,自然没有语法错误
异常的处理
异常的处理是由三个关键字
try
catch
finally
所组成的程序块
tyr
{
要检查的程序语句 ;
.....
}
catch(异常类 对象名称)
{
异常发生时的处理语句 ;
}
[
catch(异常类 对象名称)
{
异常放生时的处理语句 ;
}
..........
]
[
finally {
一定会运行到的程序代码 ;
} ]
程序一定会运行finally { } 块里的程序代码,这是一个可选项
finally代码块运行结束后,程序再次回到try-catch-finally块之后的代码继续运行
Finally是可以省略的,如果省略了finally块,那么在catch( )运行结束后,程序将跳到try-catch块之后继续执行
异常处理格式可以分三类
try { } .... catch { }
try { } .... catch { } .... finally { }
try { { .... finally { }
finally{ }代码块的本意是,无论是否发生异常,这段代码最终(finally)都是要被执行的
异常处理的流程
Java中,异常可分为两大类
java.lang.Exception
Java.lang.Error
这两个类均继承自java.lang.Throwable类
习惯上将Error类与Exception类统称为异常类,但是还是有区别的
Error类通常指的是Java虚拟机(JVM)出错了,用户在程序里无法处理这种错误
Exception类包含了一般性的异常,这些异常通常在捕捉到之后便可做妥善的处理
异常的处理默认是针对Exception进行处理
异常的处理流程:
1.程序中产生了异常,会自动地由JVM根据异常的类型,实例化一个指定异常类的对象;如果程序中没有任何的异常处理操作,这个异常类的实例化对象将交给JVM处理,而JVM的默认处理方式就是进行异常信息的输出,而后终端程序执行
2.如果程序中存在了异常处理,则由try语句捕获缠上异常类对象;然后将该对象与try之后的catch进行匹配,匹配成功,则使用catch处理,没有匹配成功,则向后面的catch继续匹配,如果没有任何catch匹配成功,则交给JVM执行默认处理
3.不管是否有异常都会执行finally程序,如果此时没有异常,执行完finally,则会继续执行程序中的其他代码,如果有异常没能够处理(没有一个catch满足)
,那么也会执行finally,但是执行完之后,将交给JVM进行异常的信息输出,并且中断
Java标准库中的方法,通常并没有处理异常,而是交由使用者自行来处理
public static int parseInt ( String s )
throws NumberFormatException
throws声明的方法,表示此方法不处理异常,而由系统自动将捕获的异常信息抛给上级调用方法
throws使用格式
访问权限 返回值类型 方法名称(参数列表) throws 异常类
{
//方法体 ;
}
throw可直接抛出异常类的实例化对象
throw 异常类型的实例 ;
执行这条语句是,将会引发一个指定类型的异常,也就是抛出异常
throw语句用在方法体内部,表示抛出异常对象,由方法体内的catch语句来处理异常对象
throws语句用在方法声明的后面,表示一旦抛出异常,由调用这个方法的上一级方法中的语句来处理
throw抛出异常,内部消化;throws抛出异常,领导(调用者)解决
RuntimeException类是Exception类的子类,Exception定义的异常必须处理
RuntimeException定义的异常,可以选择性的处理
2.学习编辑器的操作
3.继续复习
明日的计划:1.继续复习基础知识
2.继续学习编辑器的操作
今天的问题:throws和throw谷歌了还是没怎么弄懂,throw可以通过new关键字来创建匿名对象来处理异常,但是流程或者如何工作的还没有弄懂
评论