java之String工具类和File类
String类
-
string中的常用方法
-
matches(String regex)
-
replace(char oldChar,char newChar)
-
split(String regex)
-
substring(int beginIndex,int endIndex)
-
length()
-
trim()
-
startsWith(String prefix)
-
endsWith(String suffix)
-
indexOf(String str)
-
charAt(int i)
2.正则表达式
-
^
行的开头
[abc]
a、b 或 c(简单类)
$
行的结尾
\d
数字:[0-9]
\
转义
\D
非数字:[^0-9]
()
结合
\w
单词字符:[a-zA-Z_0-9]
|
或者
\W
非单词字符:[^\w]
?
0-1次
{n}
n次
*
0-n次
{n,}
>=n次
+
1-n次
{n,m}
n到m次(>=n <=m)
应用举例:
String mobiNum="^1[0-9]{10}$";
String email="^[a-zA-Z0-9_]+@[a-zA-Z0-9_]+(\\.com|\\.net)$";
3.String类和对象池
得到String对象的两种方法:
String str1 = "hello";
String str2 = new String("hello");
第一种方法在字符串池中拿对象,第二种方法直接生成新的对象。
举例说明:
String str1 = "hello";
String str2 = "hello";
System.out.println(str1 == str2);//true
结果为true,说明str1和str2指向同一个对象,因为它们都是在对象池中拿对象。
String str3 = "hello";
String str4 = new String("hello");
System.out.println(str3 == str4);//false
结果为false,因为在任何情况下,只要去new一个String对象那都是创建了新的对象。
4.String和StringBuffer、StringBuilder的区别:
String是不可以变的字符串。
StringBuffer线程安全的可变字符序列。
StringBuilder一个可变的字符序列(线程不安全),效率高。
Object类
java中的一个特殊类,它是java体系中所有类的父类(直接父类或者间接父类)。
-
toString()方法
当我们直接用打印语句(System.out.print())输出对象时,是隐式的调用了对象的toString()方法的返回。可以通过子类定义toString()来覆盖父类的toString(),以取得我们想得到的表现形式,即当我们想利用自定义的方式描述对象时,应该覆盖toString()。
toString()方法在Object中的十六进制显示方式为包名.类名@hashCode。
-
equals()方法
“==”判断的是变量的值是否相等,equals()方法判断的是对象的值是否相等。用户如果想比较自定义类的对象是否相等,就必须在该类中覆盖equals()方法。
-
基本类型比较时用==;
-
对象与null比较时用==;
-
对象与对象比较时,使用equals()。
File类
1、File 既能代表文件,也能代表目录。在JAVA 中文件和目录都属于这个类中,而且区分不是非常的明显。
注意:创建一个文件对象和创建一个文件在OS中是两个不同的概念。前者是在虚拟机中创建了一个文件,但却并没有将它真正地创建到OS的文件系统中,随着虚拟机的关闭,这个创建的对象也就消失了。而创建一个文件才是在系统中真正地建立一个文件。
例如:
File f=new File(“11.txt”);//创建一个名为11.txt的文件对象
f.CreateNewFile(); //真正地创建文件
2、File 类的常用方法
boolean createNewFile():创建文件
boolean mkdir():创建目录
boolean mkdirs():创建多个目录
boolean delete():删除文件
String[] list():返回当前File对象下所有文件和目录名(相对路径)
File[] listFiles():返回当前File对象所有对象,可以用getName()来访问到文件名。
String[] list(FileFilter filter):返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中满足指定过滤器的文件和目录。
File[] listFiles(FileFilter filter):返回此抽象路径名的绝对路径名形式。
isDirectory()和isFile()来判断究竟是目录还是文件。
String getAbsolutePath():返回此抽象路径名的绝对路径名字符串。
StringgetParent():返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回 null。
File getParentFile():返回此抽象路径名父目录的抽象路径名;如果此路径名没有指定父目录,则返回 null。
String getPath():将此抽象路径名转换为一个路径名字符串。
boolean exists():判断文件是否存在
十三.RandomAccessFile类
1、可通过RandomAccessFile 对象完成对文件的读写操作
2、在产生一个对象时,可指明要打开的文件的性质:
r,只读;w,只写;rw 可读写
3、此类的实例支持对随机存取文件的读取和写入。随机存取文件的行为类似存储在文件系统中的一个大型字节数组。存在指向该隐含数组的光标或索引,称为文件指针。
写入隐含数组的当前末尾之后的输出操作导致该数组扩展。该文件指针可以通过getFilePointer方法读取,并通过seek方法设置。
4、常用的方法:
void close()关闭此随机存取文件流并释放与该流关联的所有系统资源。
int read(byte[] b)将最多b.length个数据字节从此文件读入 byte 数组。
int read(byte[] b, int off, int len)将最多len个数据字节从此文件读入byte 数组。
void
write(byte[]
b)将
b.length个字节从指定byte数组写入到此文件,并从当前文件指针开始。
voidwrite(byte[]
b, int off, int len)将len个字节从指定byte数组写入到此文件,并从偏移量
off处开始。
void seek(long pos)设置文件指针偏移量,在该位置发生下一个读取或写入操作。
int skipBytes(int n)尝试跳过输入的n个字节以丢弃跳过的字节。
long getFilePointer() 返回此文件中的当前偏移量。
例如写内容:
raf.seek(raf.getFilePointer());//指针指向文件内容的开始位置
//raf.seek(raf.length()); //指针指向文件内容的末尾位置
raf.write("你好吗".getBytes());
此外,还有一系列的read方法和write方法,比如读/写整形、浮点型、字符串等