异常:程序在运行时产生的错误。
Java异常分为三种:
(1)Error:系统错误,不可控制的异常
(2)Exception:运行时异常
(3)自定义异常
常见Error类:
1.Error
2.AbstractMethodError
3.ClassFormatError
4.IllegalAccessError
5.InternalError
6.NosuchMethodError
7.OutOfMemoryError
8.StackOverflowError
9.ThreadDeath
10.UnknownError
常见Exception类:
1.ArithmeticException
2.ArrayIndexOutofBoundsException
3.ClassCastException
4.NullPointerException
5.StringIndexOutofBoundsException
6.NoSuchFieldException
7.ClassNotFoundException
8.EOFException
9.FileNotFoundException
10.IOException
异常处理:
1.Throws在方法声明中抛出
2.try...catch...finally
3.throw创建异常对象
注意:若不知道抛出的是哪种异常, 可指定他们的父类Throwable或者Exception。
使用注意:
1.try、catch、finally关键字不能单独使用
2.try可以和catch连用,也可以和finally连用
3.使用throw语句抛出一个异常对象时,该语句下面的代码将不会被执行.
自定义异常步骤:
1. 创建自定义异常类
2. 在构造方法中通过super(error),error是调用该异常类时传入的错误信息
3. 在方法中用Throw声明自定义异常对象并抛出
异常的使用规则:
1. 不要在循环中使用try...catch捕获异常
2. 方法被覆盖时,覆盖的方法必须抛出的相同的异常或异常的子类
3. 尽量避免catch都是父类Exception,应该对应具体的子类,使得程序的可读性高.
String类:
创建: String aStr = null; //初始化为空,指向地址为空
String bStr = “”; //空串
String cStr = “RT”; //初始化为”RT”
String dStr = new String(“theString”);
注意:String dStr = new String(“theString”) 在这一句中,有两个对象
空串:
String aStr = “”;
String bStr = new String();
String cStr = new String(“”);
一个空字符串并不等于null,空串是由””组成,引号里面不包含任何字符串.
字符串连接:连接字符串可通过”+”实现, 字符串可以和任意类型字符串连接,如果字符串和引用类型连接,则默认调用toString()方法.
System.out.println(7 + 8 + “a”); //15a
System.out.println(“a” + 7 + 8); //a78
注意:对个”+”运算符,按照”+”运算符从左到右进行运算.
String类常用方法:
charAt(int index) 返回指定索引处字符
equals(Object anObject)
endsWith(String suffix) 判断是否以参数字符串结尾
statsWith(String prefix) 判断是否以参数字符串开头
length() 返回字符串的长度
replace(char oldChar, char newChar) 替换所有字符
split(String regex) 根据regex字符分割, 返回String数组
subString(int beginIndex, int endIndex) 如果省略第而个参数, 则默认截取到字符末尾
toString() 返回字符串
trim() 去掉首位空格
equals 和 == 的区别: == 比较的是基本数据类型,用与引用类型的比较时,它仅仅比较的是地址, 字符串比较用equals,如果要比较两个引用类型的实际内容是否相等, 应该重新equals方法.
String a = “abcabc”;
String b = “abc”
b += “abc”;
System.out.println(a == b); //false
System.out.println(a.equals(b)); //true
String 类型的字符串在进行 += 操作时,实际上是新开辟一个空间,把原来的字符串拷贝在追加上新的字符串.所以一般情况下不建议使用String 进行字符串的拼接,使用StringBuffer进行字符串拼接
格式化字符串:
s% 字符串类型
%c 字符类型
%b 布尔类型
%e 指数类型
%n 换行
%h 散列码
%d 十进制整数
如:String code = String.format(“%h”, ‘A’); //41
String d = String.format(“%d”, 20); //20
Java中时间的表示: Date/Calendaar/long
三者间的转换:
//long -> Date
long time = System.currentTimeMillis();
Date date = new Date(time);
// Date -> Calendar
Calendar c = Calendar.getInstance();
c.setTime(date);
// Calendar -> Date
Date d = c.getTime();
// Date -> long
Date d2 = new Date();
long currentTimeMillis = d2.getTime();
// Calendar -> long
Calendar c2 = Calendar.getInstance();
long currentTimeMillis2 = c2.getTimeInMillis();
注意:Calendar中月份表示为0~11, 周日是1, 周一是2,周二是3....Calendar类提供了许多静态常量来表示时间,如月表示为Calendar.MONTH
SimpleDateFormat:允许格式化(date -> text),(text - > date)
如: SimpleDateFormat sf
= new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss);
String str = sf.format(new Date);
这样就将日期转换为了字符串
Scanner:Scanner是java.utile包中的类,实现用户的控制台输入,语法如下:
Scanner sc = new Scanner(System.in); //控制台输入
sc.next; //读取控制台输入的字符串
sc.nextInt; //读取控制台输入的int型数据
sc.netLine; //读取行
Math:位于java.lang包下,包含许多用来进行科学计算的方法,通过类名调用这些方法,Math类中存在两个静态常量,E和PI,
E = 2.7182882... PI = 3.14159265...
如: abs(double a) //求绝对值
floor(double a) //返回最大的(最接近正无穷大)double值小鱼或等于参数,相当于一个整数
sqrt(double e) //开平方操作
pow(double a, double b) //相当于a的b次方
Random:实现伪随机数,在给定参数区间内随机生成数字,且随机数是均匀分布的,也就是说参数限定范围的数字生存几率均等.
Random rand = new Random(System.currentTimeMillis());
一般都以系统当前的时间毫秒数作为种子,如果种子相同,那么生成的随机数也相同.
rand.nextInt(30); //返回0~29范围内的随机int型数据
rand.nextBytes(byte[] bytes) //生成随机字节并将其置于bytes数组中
rand.setSeed(long seed) //使用long型的参数作为种子值
StringBuffer:位于java.lang包下,是线程安全的,字符可变序列的String,有内存缓冲区,并且可以修改.不能直接创建,需要通过对象创建.
如: StringBuffer sb = new StringBuffer(“”);
注意:String和StringBuffer不属于同一类型,不能进行强制转换
1.可以通过通过toString()方法将该StringBuffer对象转换成字符串String类型
2.通过append(String s)方法追加字符串
3.insert(int index, String s) 插入字符串到index位置
4.reverse()实现字符串的翻转
5.delete(int startIndex, int endIndex) 删除字符串
包装类:8种基本数据类型都有其对应的包装类
byte -> Byte
short -> short
int -> Integer
long -> Long
float -> Float
double -> Double
char -> Charater
boolean -> Boolean
Integer:构造函数
Integer(int number) ;
Integer(String s);
注意: String类型要用数字型的字符串作为参数,如“1231”
方法 int parseInt(String s) 可以将数字字符串解析成int
Byte:
构造函数 Byte(byte value) ; Byte(String s)
byte的范围是 -128~127 所以在向Byte赋值时,要保证在范围内.
抽象类Number是BigDecimal/BigInteger/Byte/Double/Float/
Integer/Long/Short类的父类,子类必须提供表示的数值转换为基本类型的方法。如doubleValue()方法返回双精度值。