String字符串:
java中用String类进行描述。对字符串进行了对象的封装。这样的好处是可以对字符串这种常见数据进行方便的操作。对象封装后,可以定义N多属性和行为。
如何定义字符串对象呢?String s = "abc";只要是双引号引起的数据都是字符串对象。
特点:字符串一旦被初始化,就不可以被改变,存放在方法区中的常量池中。
例如,
String s1 = "abc"; // s1指向的内存中只有一个对象abc。 String s2 = new String("abc"); // s2指向的内容中有两个对象abc、new 。 System.out.println(s1==s2);//false System.out.println(s1.equals(s2));//true ,字符串中equals比较的是字符串内容是否相同。
<一>:构造方法:
将字节数组或者字符数组转成字符串。
String s1 = new String();//创建了一个空内容的字符串。 String s2 = null;//s2没有任何对象指向,是一个null常量值。 String s3 = "";//s3指向一个具体的字符串对象,只不过这个字符串中没有内容。 //一般在定义字符串时,不用new。 String s4 = new String("abc"); String s5 = "abc"; 一般用此写法 new String(char[]);//将字符数组转成字符串。 new String(char[],offset,count);//将字符数组中的一部分转成字符串。
<二>:一般方法:
按照面向对象的思想:
1)获取:
① 获取字符串的长度。length();
② 指定位置的字符。char charAt(int index);
③ 获取指定字符的位置。如果不存在返回-1,所以可以通过返回值-1来判断某一个字符不存在的情况。
int indexOf(int ch);//返回第一次找到的字符角标 int indexOf(int ch,int fromIndex); //返回从指定位置开始第一次找到的角标 int indexOf(String str); //返回第一次找到的字符串角标 int indexOf(String str,int fromIndex); int lastIndexOf(int ch); int lastIndexOf(int ch,int fromIndex); int lastIndexOf(String str); int lastIndexOf(String str,int fromIndex);
④ 获取子串。
String substring(int start);//从start位开始,到length()-1为止. String substring(int start,int end);//从start开始到end为止。//包含start位,不包含end位。 substring(0,str.length());//获取整串
2) 判断:
① 字符串中包含指定的字符串吗?
boolean contains(String substring);
② 字符串是否以指定字符串开头啊?
boolean startsWith(string);
③ 字符串是否以指定字符串结尾啊?
boolean endsWith(string);
④ 判断字符串是否相同
boolean equals(string);//覆盖了Object中的方法,判断字符串内容是否相同。
⑤ 判断字符串内容是否相同,忽略大小写。
lean equalsIgnoreCase(string) ;
3) 转换:
① 通过构造函数可以将字符数组或者字节数组转成字符串。
② 可以通过字符串中的静态方法,将字符数组转成字符串。
static String copyValueOf(char[] ); static String copyValueOf(char[],int offset,int count); static String valueOf(char[]); static String valueOf(char[],int offset,int count);
③ 将基本数据类型或者对象转成字符串。
static String valueOf(char); static String valueOf(boolean); static String valueOf(double); static String valueOf(float); static String valueOf(int); static String valueOf(long); static String valueOf(Object);
④ 将字符串转成大小写。
String toLowerCase(); String toUpperCase();
⑤ 将字符串转成数组。
char[] toCharArray();//转成字符数组。 byte[] getBytes();//可以加入编码表。转成字节数组。
⑥ 将字符串转成字符串数组。切割方法。
String[] split(分割的规则-字符串);
⑦ 将字符串进行内容替换。注意:修改后变成新字符串,并不是将原字符串直接修改。
String replace(oldChar,newChar); String replace(oldstring,newstring);
⑧
String concat(string); //对字符串进行追加。 String trim();//去除字符串两端的空格 int compareTo();//如果参数字符串等于此字符串,则返回值 0;如果此字符串按字典顺序小于字符串参数,则返回一个小于 0 的值;如果此字符串按字典顺序大于字符串参数,则返回一个大于 0 的值。
File类:将文件系统中的文件和文件夹封装成了对象。提供了更多的属性和行为可以对这些文件和文件夹进行操作。这些是流对象办不到的,因为流只操作数据。
File类常见方法:
1)创建
boolean createNewFile();//在指定目录下创建文件,如果该文件已存在,则不创建。而对操作文件的输出流而言,输出流对象已建立,就会创建文件,如果文件已存在,会覆盖。除非续写。 boolean mkdir();//创建此抽象路径名指定的目录。 boolean mkdirs();//创建多级目录。
2)删除
boolean delete();//删除此抽象路径名表示的文件或目录。 void deleteOnExit();//在虚拟机退出时删除。
注意:在删除文件夹时,必须保证这个文件夹中没有任何内容,才可以将该文件夹用delete删除。
window的删除动作,是从里往外删。注意:java删除文件不走回收站。要慎用。
3)获取
long length();//获取文件大小。 String getName();//返回由此抽象路径名表示的文件或目录的名称。 String getPath();//将此抽象路径名转换为一个路径名字符串。 String getAbsolutePath();//返回此抽象路径名的绝对路径名字符串。 String getParent();//返回此抽象路径名父目录的抽象路径名,如果此路径名没有指定父目录,则返回 null.long lastModified();//返回此抽象路径名表示的文件最后一次被修改的时间。
File.pathSeparator:返回当前系统默认的路径分隔符,windows默认为 “;”。
File.Separator:返回当前系统默认的目录分隔符,windows默认为 “\”。
4)判断
boolean exists();//判断文件或者文件夹是否存在。 boolean isDirectory();//测试此抽象路径名表示的文件是否是一个目录。 boolean isFile();//测试此抽象路径名表示的文件是否是一个标准文件。 boolean isHidden();//测试此抽象路径名指定的文件是否是一个隐藏文件。 boolean isAbsolute();//测试此抽象路径名是否为绝对路径名。
5)重命名
boolean renameTo(File dest);//可以实现移动的效果。剪切+重命名。 String[] list();//列出指定目录下的当前的文件和文件夹的名称。包含隐藏文件。
如果调用list方法的File 对象中封装的是一个文件,那么list方法返回数组为null。
如果封装的对象不存在也会返回null。只有封装的对象存在并且是文件夹时,这个方法才有效。