Java三常用工具类

object类
Object 类是所有类的的父类,如果一个类没有明确使用EXPENTS关键字明确标识继承另外一个类,那么这个类默认继承object类,oject类中的方法适合所有子类
toString 方法 可以自动生成
在Object类里面定义toString ()方法的时候返回的对象的哈希code码(对象地址字符串) 可以通过重写toString ()方法表示出对象的属性
2)equal()方法 可以自动生成
比较的是对象的应用是否指向同一块内存地址
一般情况下比较两个对象时比较他的值是否一致,所以要进行重写

Character类
在实际开发过程中,我们经常会遇到需要使用对象,而不是内置数据类型的情况。为了解决这个问题,Java语言为内置数据类型char提供了包装类Character类。
Character ch = new Character('a');
例子:
// 原始字符 'a' 装箱到 Character 对象 ch 中
Character ch = 'a';
// 原始字符 'x' 用 test 方法装箱
// 返回拆箱的值到 'c'
char c = test('x');
Character类的方法:

String类
Java 提供了 String 类来创建和操作字符串。
创建字符串
String greeting = "菜鸟教程";
字符串的不变性
1 变量字符串的修改是将变量指向了新的字符串对象
2 字符串在变量中创建不可改变,如果需要可以改变的字符串,需要使用StringBuffer或者
StringBuilder
3每次new 就是产生一个新的对象,即使两个字符串的内容相同
4 字符串的内容相同使用equals()方法
连接字符串
string1.concat(string2);String 类提供了连接两个字符串的方法
"Hello," + " runoob" + "!" 使用'+'操作符来连接字符串
字符串的常用方法

1字符串str中的字符的索引从0开始,范围为0到str.length()-1
2 使用indexof进行字符串或字符串查找的时候,如果匹配返回索引,如果没有匹配结果返回-1
3 使用substing(beginIndex,endIndex),包括beginIndex字符,不包括endIndex字符
4 == (基本数据类型比较的是他们的值)判断的是内存中的首字母是否相同,即判断是否为同一对象,equals比较数组内容否一致

StringBuilder 类和StringBuffer
当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。
和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。
StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。
用法:
StringBuiledr str1=new StringBuilder();
StringBuilder MyStringBuilder = new StringBuilder("Hello World!");
MyStringBuilder.Append(" What a beautiful day.");

Number & Math 类
常用的一些方法:

例子:
Randow randow=new Randow()
K=randow.nextInt(100);
插入100以内的随机数

Arrays 类
Java.util.Arrays 类能方便地操作数组,它提供的所有方法都是静态的。
具有以下功能:
给数组赋值:通过 fill 方法。
对数组排序:通过 sort 方法,按升序。
比较数组:通过 equals 方法比较数组中元素值是否相等。
查找数组元素:通过 binarySearch 方法能对排序好的数组进行二分查找法操作。

Date日期类
java.util 包提供了 Date 类来封装当前的日期和时间。 Date 类提供两个构造函数来实例化 Date 对象。
第一个构造函数使用当前日期和时间来初始化对象。
Date( )
第二个构造函数接收一个参数,该参数是从1970年1月1日起的毫秒数。
Date(long millisec)
Date对象创建以后,可以调用下面的方法。

例子:
import java.util.Date;
public class DateDemo {
public static void main(String args[]) {
// 初始化 Date 对象
Date date = new Date();

// 使用 toString() 函数显示日期时间
System.out.println(date.toString());
}
}
日期比较
Java使用以下三种方法来比较两个日期:
使用 getTime() 方法获取两个日期(自1970年1月1日经历的毫秒数值),然后比较这两个值。
使用方法 before(),after() 和 equals()。例如,一个月的12号比18号早,则 new Date(99, 2, 12).before(new Date (99, 2, 18)) 返回true。
使用 compareTo() 方法,它是由 Comparable 接口定义的,Date 类实现了这个接口。

SimpleDateFormat 格式化日期
添加包 java.text.SimpleDateFormat
首先使用默认的构造方法创建Date对象
创建字符串对象,指定字符串的日期格式
SimpleDareFormat df= new SimpleFormat();
使用format()方法将日期转换为指定格式的文本
使用parse()方法将文本转换为日期
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date now=new Date();
System.out.println(sdf.format(now));
例子:
//如果希望得到YYYYMMDD的格式
SimpleDateFormat sy1=new SimpleDateFormat("yyyyMMDD");
String dateFormat=sy1.format(date);
//如果希望分开得到年,月,日
SimpleDateFormat sy=new SimpleDateFormat("yyyy");
SimpleDateFormat sm=new SimpleDateFormat("MM");
SimpleDateFormat sd=new SimpleDateFormat("dd");
String syear=sy.format(date);
String smon=sm.format(date);
String sday=sd.format(date);
printf格式化日期
printf 方法可以很轻松地格式化时间和日期。使用两个字母格式,它以 %t 开头并且以下面表格中的一个字母结尾。

例子:
//c的使用
System.out.printf("全部日期和时间信息:%tc%n",date);
//f的使用
System.out.printf("年-月-日格式:%tF%n",date);
//d的使用
System.out.printf("月/日/年格式:%tD%n",date);
结果:
全部日期和时间信息:星期一 九月 10 10:43:36 CST 2012
年-月-日格式:2012-09-10
月/日/年格式:09/10/12
定义日期格式的转换符可以使日期通过指定的转换符生成新字符串。
String str=String.format(Locale.US,"英文月份简称:%tb",date);
System.out.println(str);
System.out.printf("本地月份简称:%tb%n",date);
英文月份简称:May
本地月份简称:五月

calendar类
作用:设置和获取日期数据的特定部分,在日期的这些部分加上或者减去值
Java.util.Calender类
首先创建calender对象
calendar c= calendar.getInstance()
//c1.set(2009, 6 - 1, 12);可以设置值
将Calender对象转换为Date对象
Date date=c.getTime();
之后再创建SimpleDateFormat对象,调用format()方法就可以输出日期字符串

Scanner 类
java.util.Scanner 是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入。
通过 Scanner 类的 next() 与 nextLine() 方法获取输入的字符串
例子:
import java.util.Scanner;
public class ScannerDemo {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
// 从键盘接收数据
//next方式接收字符串
System.out.println("next方式接收:");
// 判断是否还有输入
if(scan.hasNext()){
String str1 = scan.next();
System.out.println("输入的数据为:"+str1);
}

}
}
next() 与 nextLine() 区别
next():
1、一定要读取到有效字符后才可以结束输入。
2、对输入有效字符之前遇到的空白,next() 方法会自动将其去掉。
3、只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。
next() 不能得到带有空格的字符串。
nextLine():
1、以Enter为结束符,也就是说 nextLine()方法返回的是输入回车之前的所有字符。
2、可以获得空白。

Stream File Io类
Java.io 包几乎包含了所有操作输入、输出需要的类。所有这些流类代表了输入源和输出目标。

Java.io 包中的流支持很多种格式,比如:基本类型、对象、本地化字符集等等。

一个流可以理解为一个数据的序列。输入流表示从一个源读取数据,输出流表示向一个目标写数据。

Java 为 I/O 提供了强大的而灵活的支持,使其更广泛地应用到文件传输和网络编程中。
读取控制台的输入
Java 的控制台输入由 System.in 完成。
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
使用 read() 方法从控制台读取一个字符,或者用 readLine() 方法读取一个字符串。
例子:
// 使用 BufferedReader 在控制台读取字符
import java.io.*;
public class BRRead {
public static void main(String args[]) throws IOException
{
char c;
// 使用 System.in 创建 BufferedReader
BufferedReader br = new BufferedReader(new
InputStreamReader(System.in));
System.out.println("输入字符, 按下 'q' 键退出。");
// 读取字符
do {
c = (char) br.read();
System.out.println(c);
} while(c != 'q');
}
}
控制台输出
控制台的输出由 print( ) 和 println() 完成。这些方法都由类 PrintStream 定义,System.out 是该类对象的一个引用。
读写文件
FileInputStream
该流用于从文件读取数据,它的对象可以用关键字 new 来创建。
File f = new File("C:/java/hello");
InputStream out = new FileInputStream(f);
创建了InputStream对象,就可以使用下面的方法来读取流或者进行其他的流操作。

FileOutputStream
该类用来创建一个文件并向文件中写数据。
如果该流在打开文件进行输出前,目标文件不存在,那么该流会创建该文件。
创建OutputStream 对象完成后,就可以使用下面的方法来写入流或者进行其他的流操作。

JAVA中的目录
创建目录:
File类中有两个方法可以用来创建文件夹:

mkdir( )方法创建一个文件夹,成功则返回true,失败则返回false。失败表明File对象指定的路径已经存在,或者由于整个路径还不存在,该文件夹不能被创建。
mkdirs()方法创建一个文件夹和它的所有父文件夹。
读取目录
一个目录其实就是一个 File 对象,它包含其他文件和文件夹。
如果创建一个 File 对象并且它是一个目录,那么调用 isDirectory() 方法会返回 true。
可以通过调用该对象上的 list() 方法,来提取它包含的文件和文件夹的列表。
import java.io.File;
public class DeleteFileDemo {
public static void main(String args[]) {
// 这里修改为自己的测试目录
File folder = new File("/tmp/java/");
deleteFolder(folder);
}
//删除文件及目录
public static void deleteFolder(File folder) {
File[] files = folder.listFiles();
if(files!=null) {
for(File f: files) {
if(f.isDirectory()) {
deleteFolder(f);
} else {
f.delete();
}
}
}
folder.delete();
}
}

正则表达式
正则表达式定义了字符串的模式。
正则表达式可以用来搜索、编辑或处理文本。
正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别。
语法:
在 Java 中,\ 表示:我要插入一个正则表达式的反斜线,所以其后的字符具有特殊的意义。
String pattern = "(\D)(\d+)(.)";
Matcher 类的方法
索引方法
索引方法提供了有用的索引值,精确表明输入字符串中在哪能找到匹配:

研究方法
研究方法用来检查输入字符串并返回一个布尔值,表示是否找到该模式:

替换方法
替换方法是替换输入字符串里文本的方法:

例子:
public class regex {
public static void main(String[] args) {
checkQQ2("0123134");
}
public static void checkQQ2(String qq) {
String reg = "[1-9][0-9]{4,14}";
System.out.println(qq.matches(reg)?"合法qq":"非法qq");
}}

异常
异常指的是运行期出现的错误,也就是当程序开始执行以后执行期出现的错误
1检查性异常:最具代表的检查性异常是用户错误或问题引起的异常,这是程序员无法预见的。例如要打开一个不存在文件时,一个异常就发生了,这些异常在编译时不能被简单地忽略。
2运行时异常: 运行时异常是可能被程序员避免的异常。与检查性异常相反,运行时异常可以在编译时被忽略。
3错误: 错误不是异常,而是脱离程序员控制的问题。错误在代码中通常被忽略。例如,当栈溢出时,一个错误就发生了,它们在编译也检查不到的。

Throwable (error 崩溃 exception 异常)
Exception 环境 编码 用户操作问题
RuntimeException 非检查异常 检查异常

空指针异常 NullPointerException
数组下标越界异常 ArrayIndexOutOfBoundsExecption
类型转换异常 ClassCastException
算数异常 ArithmeticException

异常方法
下面的列表是 Throwable 类的主要方法:

检查异常: 文件异常 IOException SQL异常SQLException
抛出异常:java程序执行过程中发生异常事件,可以生成一个异常类,该异常类封装了异常事件的信息并将提交给java运行时系统,系统默认直接打印出来。
捕获异常:java运行时系统收到异常对象时,会寻找能处理这异常的代码并把当前异常对象交于处理,这一过程称为捕获异常。

try-catch 以及 try-catch-finally
Try{
//一些会抛出异常的方法
}catch(Exception e){
//处理该异常的代码块 从子类到父类
}catch(Exception2 e){
}finally {
//最终将要执行的代码
}
finally 关键字用来创建在 try 代码块后面执行的代码块。
无论是否发生异常,finally 代码块中的代码总会被执行。

throw throws
如果一个方法没有捕获一个检查性异常,那么该方法必须使用 throws 关键字来声明。throws 关键字放在方法签名的尾部。
也可以使用 throw 关键字抛出一个异常,无论它是新实例化的还是刚捕获到的。
声明将要抛出的任何异常(声明)
Public void 方法名(参数列表)
throws 异常类别{
//调用抛出异常的方法或者:
throw new Execption();
}
声明自定义异常
在 Java 中你可以自定义异常。编写自己的异常类时需要记住下面的几点。
所有异常都必须是 Throwable 的子类。
如果希望写一个检查性异常类,则需要继承 Exception 类。
如果你想写一个运行时异常类,那么需要继承 RuntimeException 类。

通用异常
在Java中定义了两种类型的异常和错误。
JVM(Java虚拟机) 异常:由 JVM 抛出的异常或错误。例如:NullPointerException 类,ArrayIndexOutOfBoundsException 类,ClassCastException 类。
程序级异常:由程序或者API程序抛出的异常。例如 IllegalArgumentException 类,IllegalStateException 类。

异常总结
1 在运行异常程序的时,采用逻辑去合理规避同时辅助try-catch处理
2 在多重catch 块后面,可以加上一个catch(Exception)来处理可能被遗漏的异常
3 对于不确定的代码,也可以加上try-catch,处理潜在的异常
4 尽量去处理异常,切忌只是简单的去调用printStackTrace()去打印输出
5 具体如何处理异常,要根据不同的业务需求和异常类型去决定
6 尽量添加finally 语句去释放占用的资源 (数据库)
7重写方法需要抛出与原方法所抛出异常类型一致的异常 或者不抛出异常

猜你喜欢

转载自www.cnblogs.com/ww11/p/9112153.html