编译时异常:如果程序一旦出现检查时异常,程序必须要经过处理,否则无法运行
一般运行时异常都会直接或者间接的继承自RuntimeException
Exception:所有异常的父类,其子类对应了各种各样可能出现的异常事件,一般需要用户显示地声明或捕获。
运行时异常假如不抛出,或者抛出但不处理,不报错,但运行时会异常终止。
数组越界异常 ArrayIndexOutOfBoundsException
负数异常|数组的长度为负数异常 NegativeArraySizeException
public static voidmain(String[] args) {
//2.数组越界 ArrayIndexOutOfBoundsException
//3.负数异常 NegativeArraySizeException
//6.数字转换异常NumberFormatException
System.out.println(Integer.valueOf(s));
class Teacher extends Person{}
is=new FileInputStream("D://test.txt");//D盘中并无此文件时
如throws Exception,将异常抛出到外面一层去,然后在外层处理
5.2、try..catch..fanally捕获和处理异常
(FileNotFoundException e) {
(NullPointerException e){
(Exception e){
如果try中的代码出现异常,下面的代码不会执行,直接执行对应的catch中的代码
通常在finally语句中可以进行资源的清除工作,如:关闭打开的文件、删除临时文件
6、自定义异常类: 要直接或者间接继承自Exception或者它的子类
public static voidmain(String[] args) {
classAgeException extends Exception{
public AgeException(String message) {
public void setAge(int age)throws AgeException {
作用:String 类代表字符串。Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现。
StringBuilder:可变长字符串 ,线程不安全,效率较高
StringBuffer:可变长字符串 ,线程安全的,效率较低
String str1="abc";
String str2="abc";
//一个对象,“abc”在常量池中
System.out.println(str1==str2);//true
//空构造器String str3=new String();
//String(String original)
String str4=new String("hehe");
//String(char[] value)
String str5=newString(new char[]{'a','b','c','d'});
//String(char[] value, int offset, intcount)
String str6=new String(newchar[]{'a','b','c','d'},1,2);
System.out.println(str6);//bc
System.out.println(new String(new char[]{22222,'2'}));
//构建字符串//String(byte[] bytes)
//通过使用平台的默认字符集解码指定的 byte 数组,构造一个新的 String。
String str7=new String(new byte[]{66,67,68});
//String(byte[]bytes, int offset, int length)
//通过使用平台的默认字符集解码指定的 byte 子数组,构造一个新的 String。
String str8=new String(new byte[]{66,67,68},1,2);
String str9="qwer";
byte[] by=str9.getBytes();
System.out.println(Arrays.toString(by));
Stringstr1="good good study";
String str2=" day day up ";
//1.char charAt(int index) 返回指定索引处的 char 值。
System.out.println("charAt():"+str1.charAt(3)); //d
//2.intcodePointAt(int index) 返回指定索引处的字符(Unicode 代码点)。System.out.println("codePointAt():"+str1.codePointAt(3)); //100
//3.int compareTo(String anotherString)按字典顺序比较两个字符串。
//相等为0 ,如果this比参数对象大返回整数,否则返回负数System.out.println("compareTo():"+str1.compareTo(str2)); //3
//4.compareToIgnoreCase(String str)按字典顺序比较两个字符串,不考虑大小写System.out.println("abc".compareToIgnoreCase("AbcDEFgh")); //-5
//5.String concat(String str) 将指定字符串连接到此字符串的结。
System.out.println("concat():"+str1.concat("!")); //good good study!
//6.booleancontains(CharSequence s)
//当且仅当此字符串包含指定的 char 值序列时,返回 true。
System.out.println("contains():"+str1.contains("oo")); //true
//7.static String copyValueOf(char[]data)
//返回指定数组中表示该字符序列的 String。
System.out.println(String.copyValueOf(new char[]{'a','b','c'})); //abc System.out.println(String.copyValueOf(newchar[]{'a','b','c'},1,2)); //bc
//8.boolean endsWith(String suffix) //测试此字符串是否以指定的后缀结束。 System.out.println("endsWith():"+str.endsWith("y")); //true
//9.boolean startsWith(Stringprefix) //测试此字符串是否以指定的前缀开始。System.out.println("startsWith():"+str.startsWith("good")); //true
//10.byte[] getBytes()字符串转字节数组System.out.println("getBytes():"+Arrays.toString(str1.getBytes()));
//[103, 111, 111, 100, 32, 103, 111, 111,100, 32, 115, 116, 117, 100, 121]
//11.int indexOf(String str) //返回指定子字符串在此字符串中第一次出现处的索引 System.out.println("indexOf():"+str1.indexOf("o")); //1
System.out.println("lastIndexOf():"+str1.lastIndexOf("o")); //7
//12.String replace(char oldChar, char newChar)
//返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。System.out.println("replace():"+str1.replace("oo","OO")); //replace():gOOd gOOd study
//13.String[] split(String regex)根据给定正则表达式的匹配拆分此字符串。
System.out.println(str1);//good good study String[]arr=str1.split(" "); System.out.println(Arrays.toString(arr));//[good,good, study]
System.out.println(arr[1]);//good
//14.String substring(intbeginIndex) //返回一个新的字符串,它是此字符串的一个子字符串。
//15.String substring(int beginIndex, int endIndex)
//返回一个新字符串,它是此字符串的一个子字符串。结束位置索引获取不到System.out.println("substring():"+str1.substring(5)); //substring():good study System.out.println("substring():"+str1.substring(5,8)); //substring():goo
//16.char[] toCharArray()将此字符串转换为一个新的字符数组。
System.out.println(str1.toCharArray()); //good good study
//17.String toLowerCase()
//18.String toUpperCase() System.out.println(str1.toUpperCase()); //GOOD GOOD STUDY
//使用默认语言环境的规则将此 String 中的所有字符都转换为大写。
//19.String trim()返回字符串的副本,忽略前导空白和尾部空白。
System.out.println("trim():"+str2.trim()); //trim():day day up
//20.static StringvalueOf(int i) 返回 int 参数的字符串表示形 System.out.println("valueOf():"+String.valueOf(1234)); //1234
3、StringBuffer和Stringbuilder
StringBuilder()构造一个其中不带字符的字符串生成器,初始容量为 16 个字符。
str=new StringBuilder();
System.out.println(str);
str.append("qwert");
System.out.println(str);
System.out.println(str.capacity());
System.out.println(str.length());
//StringBuilder(int capacity)构造一个其中不带字符的字符串生成器,初始容量由capacity 参数指定。
str=new StringBuilder(10);
System.out.println(str.capacity());
//StringBuilder(String str)构造一个字符串生成器,并初始化为指定的字符串内容。
str=new StringBuilder("abc");
str.append(121);
System.out.println(str);
//StringBuilder delete(int start, intend)
str.delete(3, 5);System.out.println(str);
//StringBuilder insert(int offset, boolean b)
str.insert(3, false);
System.out.println(str);
//StringBuilder reverse()
str.reverse(); system.out.println(str);
4、String与StringBuilder之间相互转换
String->StringBuilder 构造器
String(StringBuffer buffer)分配一个新的字符串,它包含字符串缓冲区参数中当前包含的字符序列。StringBuilder->String 构造器
String(StringBuilder builder)
包装类顾名思义就是将基本的数据类型以及一些辅助方法包装到类中
自动装箱:基本数据类型-->包装类型
自动拆箱:包装类型-->基本数据类型
//static double Math.ceil(double a) 向上取整
System.out.println(Math.ceil(-3.3)); //-3.0
//static double floor(double a) 向下取整
System.out.println(Math.floor(-3.3)); //-4.0
//static long max(long a, long b) //返回两个long 值中较大的一个。
//static double min(double a, double b)
//返回两个double 值中较小的一个。
System.out.println(Math.max(5, 7));
Date(long date) 参数为毫秒数,默认从1970.1.1.0.0.0开始计算
//日期对象转为字符串 Date date=new Date(); String s=date.toString();
System.out.println(s); System.out.println(s.length());
2、SimpleDateFormat 日期格式类|转换类|转换器 指定格式
y->年 M->月 d->日 H->24小时 h->12小时 m->分 s->秒 S->毫秒
format(Date)-->日期对象转为字符串,可以按照指定格式,可以使用转换器的默认格式
parse(String) -->把字符串转为日期对象,按照指定格式转换
format=new SimpleDateFormat();
System.out.println(format.format(date));//19-5-6下午8:35
SimpleDateFormat formatNew=newSimpleDateFormat("yyyy年MM月DD日 E a hh:mm:ss SS");
System.out.println(formatNew.format(date)); //2019年05月126日 星期一下午08:35:57 572 Stringstr="2019/05/126/ 08:44:59 515";
System.out.println(formatNew.parse(str));
String:强转,简单方便但如果要转的不是字符串的话,那么就会报错。
toString():一般的对象或者参数都是有toString()的方法的,只是要注意在一个参数定义为int类型是就没有这个方法了。还有就是当参数为空的时候.toString()方法就会报出空指针异常
String.valueOf(123):这个方法是静态的,直接通过String调用,这样的实现避免了前面两个的不足和缺点。内部的实现机制:
valueOf(Object obj){return (obj==null) ? "null" : obj.toString()};
网友评论