Java常用基本类库汇总
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
boolean startsWith(String str):判断字符串对象是否以给定 的字符串开始。
boolean endsWith(String str):判断字符串对象是否以给定 的字符串结束。 案例:判断输入的是否是admin(不区分大小写);判断是否 是网址:以http://开头、以.com或者.cn结尾。
DateFormat
DateFormat用来把Date按照格式转换为 String,它是抽象 类,一般使用其子类SimpleDateFormat,使用 SimpleDateFormat(String pattern)这个构造函数,传递一 个格式字符串进去。 y年;M月;d天;H小时;m分钟;s秒。Year、Month、 Day、Hour、Minute、Second“月”比“分钟”大,所以 月M大写,分钟m小写。 测试“ yyyy 年 MM 月 dd 日 HH:mm:ss ”、“ yyyy-MMdd”。 使用String format(Date date),把Date格式化为字符串; public Date parse(String source)把字符串解析为Date。
Calendar
根据DateTime得到各个部分:通过int get(int field)获得年月日小时分秒等 部分,可选值Calendar的常量YEAR、MONTH、DAY_OF_MONTH(在月 中的天数)、DAY_OF_WEEK( 周中的天数,即周几)、DAY_OF_YEAR( 一 年中的第几天 ) 、 HOUR(12 小时制 ) 、 HOUR_OF_DAY(24 小时制 ) 、 MINUTE(分钟)、SECOND(秒)。也可以void set(int field, int value)方法进 行修改。 Calendar cal = Calendar.getInstance(); cal.setTime(new Date());
最后使用String s = sb.toStrቤተ መጻሕፍቲ ባይዱng()一次性生成拼接结果字符串即可
JDK1.5 增加了一个StringBuilder,用法和StringBuffer一样。StringBuffer是线程 安全(*)的,效率略低;StringBuilder线程不安全,效率高,在大部分单线程环 境使用StringBuilder会更好。
基本数据类型包装类
Java 中内置提供了“包装类” (Wrapper) :byte→Byte; short→Short;int→Integer;long→Long;float→Float; double→Double;char→Character;boolean→Boolean。 使用方法:
int包装成Integer(装箱):Integer i=new Integer(18); int从包装中出来(拆箱):int i1 = i.intValue();
JDK 1.5之后int和Integer之间转换不需要new Integer/i.intValue()。如下即可:
Integer i = 123;//自动装箱 int i1= i;//自动拆箱
通过jd-gui进行反编译看上面的代码生成的class,得知是编 译器帮着完成的装箱拆箱。 注意Integer 为null的情况:
Throwable类
Throwable中的方法:
public String getMessage():返回的是异常的消息字符串。 public void printStackTrace():把错误信息显示在控制台。
e.printStackTrace()并不是正确的处理异常的方式,要合理的识别异常 类型,并且给出合适的处理,e.printStackTrace() 只能让程序员知道“ 出错了”。 也不用
System.out.println("数组越界异常");
} JDK 1.7之后还新增了一种简化多异常处理的语法: try { // 操作代码
} catch (ArrayIndexOutOfBoundsException | ArithmeticException e) {
System.out.println("这里出问题了"); } 里面有一个问题,就是异常处理的方法不好写了,因为得到的异常不明确了。
int 等是基本数据类型,不能为 null( 没有指向任何对象 ) ; 类变量可以是 null 。有时想表达“不知道数字是多少”的 时候,用int任何值表示都不合适。Integer是类,因此可以 为null,这样用null的Integer表示“没有赋值的整数、未知 的整数”。
自动装箱拆箱(box/unbox)
int day = cal.get(Calendar.DAY_OF_MONTH);
根据设置各个部分,得到DateTime: void set(int year, int month, int date) void set(int year, int month, int date, int hourOfDay, int minute) DateTime date = cal.getTime(); 注意:Calendar的月份是从0开始。
多个异常的处理
try { int a = 10; int b = 0; System.out.println(a / b);
int[] arr = { 1, 2, 3 };
System.out.println(arr[3]); } catch (ArithmeticException ae) { System.out.println("除数不能为0"); } catch (ArrayIndexOutOfBoundsException ae) {
异常的捕捉
try{ //可能发生问题的代码 }catch(异常类型 异常变量){ //异常处理代码 }finally{ //其他代码 }
比如:
try { Integer i1=null; int b = i1;
} catch (NullPointerException e) { System.out.println("i1不能为null"); } e就是发生异常的异常类对象,变量名只要不冲突就任意。 在异常处理中,一旦try里面有问题了。放弃try代码块中之后的代码,直接跳到catch 里面执行。如果try代码后还有代码,则处理完catch后还会继续执行。
基本数据类型不“面向对象”
面向对象语言中应该“一切都是对象”,方法、int、double等应该都 是类的对象。但是由于历史原因,java中的int、double 、boolean 等 基本数据类型不是类。有的场合需要使用对象(JDBC中就会用到),怎 么办?
class IntClass { private int value; public IntClass(int value) { this.value = value; } public int getInt() { return this.value; } } int age=18; IntClass iAge = new IntClass(age); 使用instanceof判断变量指向的对象类型。
catch(Exception ex){ //空代码 }
这样以为“不会出错了”,其实是把异常“吃掉了”,会让程序陷入 逻辑混乱状态,要科学合理的处理异常(以后经常用就明白了)。我 一个学生吃掉数据库执行异常造成的“刷新不出数据”的假象。
异常概念
Integer i1=null; int b = i1;
异常发生在程序发生的不正常情况下。异常以一个异常类 对象的形式抛出,异常类描述异常信息、发生的位置等。 异常的根类为 java.lang.Throwable ,有两个直接子类 java.lang.Error、java.lang.Exception。Error:程序本身无 法恢复的严重错误,比如内存不足等,一般不需要对Error 进行处理;Exception:可以被程序捕获并处理的异常错误 ,比如文件找不到。编程中需要处理的异常一般都继承自 Exception,***Exception类。
String trim():去除字符串两端空格
String 是不可变的,因此上面的操作都是生成新的字符串 对象,要用返回值去取新的字符串。
这么多方法怎么记得住?
StringBuffer
使用jd-gui反编译发现
String s7="111"+"222"+"333"+"444"+"555" 会被优化为 String s7 = "111222333444555";
但是String s6 = s1 + s2 + s3 + s4 + s5;就没那么幸运了,每次+都会生成一个 String对象,当连接字符串比较多的时候就会产生临时字符串对象。 使用StringBuffer拼接字符串则不会有临时字符串对象的问题:
StringBuffer sb = new StringBuffer(); sb.append(s1); sb.append(s2); sb.append(s3); 因为append方法把this返回了,还可以sb.append(s1).append(s2).append(s3);
练习:获取番号
String成员方法
String toLowerCase():把字符串变成小写 String toUpperCase():把字符串变成大写
String replace(char oldChar,char newChar):用新的字符去 替换指定的旧字符
String replace(String oldStr,String newStr):用新的字符串 去替换指定的旧字符串 (*)String[] split(String regex):切割功能,注意正则表达式 (以后讲)。把字符串用“,”分割
Integer i2 = null; int i3 = i2;
日期
Java使用Date类(java.util包下)表示时间数据类型。 n e w D a t e ( ) 当 前 时 间 , 也 有 n e w Date(System.currentTimeMillis()),看源代码,本质上是一 样的。 可以通过Date的getYear()、getMonth()、getHours() 等得 到日期的年、月、小时等部分;也可以setYear等来设置日 期,但是属于@Deprecated( 不推荐)的方法,因此尽量不 要用。看文档提到了用Calendar Calendar是抽象类,通过调用getInstance()静态方法得到一 个当前时区、当前语言设置下的实例(猜测内部实现,打印 cal.getClass() 看一下返回的是哪个类的对象。这是一种设 计模式),还可以使用getInstance() 其他的重载获得其他时 区、其他语言下的实例。
String成员方法
int length():获取字符串的长度 char charAt(int index):返回字符串中给定索引处的字符 int indexOf(int ch):返回指定字符在此字符串中第一次出现的索引 int indexOf(String str):返回指定字符串在此字符串中第一次出现的索引 lastIndexOf:最后一次出现的位置。 String substring(int start):截取字符串。返回从指定位置开始截取后的字符串。 String substring(int start,int end)截取字符串。返回从指定位置开始到指定位置 结束截取后的字符串。 案例获取一个文件名的名称和扩展名部分(备注)
Java这么学不枯燥 基础篇 Java常用基本类库
如鹏网
String成员方法(常用)
boolean equals(Object obj):判断字符串的内容是否相同, 区分大小写。 boolean equalsIgnoreCase(String str):判断字符串的内容是 否相同,不区分大小写。 boolean contains(String str):判断字符串对象是否包含给定 的字符串。