异常、数组、字符串、包装类
1.异常:运行期出现的错误,观察错误的名字和行号最重要
异常处理:try{可能出现异常的语句}catch(异常类型 对象){异常处理}
先逮小的异常,再逮大的异常
重写方法需要抛出与原方法所抛出异常类型一致或不抛出异常
finally:异常的统一出口,不管是否出现异常,都执行统一的代码
throws:在方法定义上使用,表示此方法中不进行异常的处理,而是交给被调用处处理。当调用抛出了异常的方法时,必须写上异常处理语句。
throw: 指在方法中人为的抛出一个异常类对象(这个异常类对象可能是自己的实例化或者是抛出已存在的)
Throwable:异常最大的父类,其分为两个字类:Exception和Error。
Exception表示程序处理的异常,Error表示JVM错误
RuntimeException类: 是Exception类的子类,其定义的异常可以选择性的进行处理
2.数组:
java语言中声明数组时不能指定其长度
如:int a[5]; 这样声明一维数组是非法的,
int[]s = new int[5] 允许的,创建一个大小为5类型为int的数组。合法的,这个是先在栈中开一个空间名为a,然后new再在堆中开辟5个空间。
对象数组的创建:Integer testInteger = new Integer(5);// 允许的,创建一个值为5的Integer对象
数组的拷贝:public static void arraycopy(Object src, int srcPos,Object dest, int destPos, int length)
用于将数组第srcPos项元素开始的length个元素拷贝到目标数组从destPos项开始的length个位置
3.String类:字符串常量就是String的匿名对象
String表示不可变的字符序列,字符串一旦定义则不可改变
实例化方式:开发中使用直接赋值方式
直接赋值(String str = “字符串”;)会开辟一块堆内存空间,并且自动保存在对象池中以供下次重复使用
构造方法(String str = new String(“字符串”);)会开辟两块内存空间,不会自动入池,其中一块作为垃圾
字符串相等比较:
“==”在String中比较的内存地址的数值
String类中重写了equals方法,同来进行字符串内容的比较
String类方法:
charAT(int index):返回字符串的第index个字符
length():返回字符串的长度
indexOf(String str):返回字符串中出现str的第一个位置
indexOf(String str, int fromIndex):返回字符串中从fromIndex开始出现str的第一个位置
equalsIgnoreCase(String another):比较字符串与another是否一样(忽略大小写)
replace(char oldChar,char newChar);在字符串中用newChar字符替换oldChar字符
substring(int beginIndex) :返回一个新的字符串,它从指定索引处的字符开始,直到此字符串末尾。
toCharArray():将字符串以字符数组的形式返回
split(String regex):根据给定的正则表达式的匹配拆分此字符串,将字符串以字符串数组的形式返回
P520.3 将一个字符串拆成字符串数组,再把每个数组元素转换成整形变量
String data = scan.next();
String result [] = data.split("");
int temp = Integer.parseInt(result[i]) ;
java.lang.StringBuffer 代表可变的字符序列
方法:删除,添加
StringBuffer类使用append()方法可以完成字符串的连接操作,
而String类使用“+”完成;
4.包装类:Java语言是一个面向对象的语言,但是Java中的基本数据类型却是不面向对象的,因此,在设计类时为每个基本数据类型设计了一个对应的类进行代表,这样八个和基本数据类型对应的类统称为包装类。
用途: a、作为和基本数据类型对应的类类型存在,方便涉及到对象的操作。
b、包含每种基本数据类型的相关属性如最大值、最小值等,以及相关的操作方法
c、将本类型与其他类型进行转换;
d、将字符串与本类型及包装类型相互转换。
包装类的使用:
- 基本数据类型转换成包装类(装箱),包装类转换成基本数据类型(装箱)
Integer i1 = new Integer(100); //方法一
Integer i1 = 100;//方法二
int value = i1;//方法1
int value = i1.intValue();//方法2
- 包装类转换成其他基本数据类型
Integer i = new Integer(100);
double d = i.doubleValue();
- 基本数据类型转换成字符串
-
字符串转换成基本数据类型
5.equals()
和==
的区别
- 在Java中,任何类型的数据都可以用 “==”进行比较是不是相等,一般用于基本数据类型的比较,比较器存储的值是否相等。但是如果用于引用类型的比较,则是比较所指向对象的地址是否相等,在这点上,跟
object
类提供的equals()
方法的作用是一致的。 - 对于
equals()
方法
1) 首先,不能用于基本数据类型的变量之间的比较相等;
2) 如果没有对equals
方法进行重写,则比较的是引用类型的变量所指向的对象的地址;
3) 诸如String
、Date
等类都对equals
方法进行了重写,比较的是所指向的对象的内容。
6.枚举类型:枚举定义出了一个类所能使用的若干几个实例化对象,枚举可以直接采用“枚举类型.对象”的方式取得类中的实例化对象进行操作
只能取特定值中的一个
enum关键字,使用enum定义的枚举类型实际上都表示一个类默认继承了Enum类
enum Color{
RED,GREEN,BLUE;
}
Color red = Color.RED;
本程序定义了一个Color的类,同时在类中定义了三种颜色的对象,需要时直接调用即可
枚举就是一种简化的多例设计模式
枚举中定义的构造方法不能使用public声明;枚举对象必须放在首行
枚举中通过values()方法取得没觉得全部内容
在枚举中可以定义构造方法,则再设置枚举范围时必须显式的调用构造方法
Alt+/:进行代码提示
Ctrl+l:为错误的代码给出纠正方案
Ctrl+/:使用单行注释