内容
- 字符串相关类(String 、StringBuffer、StringBuilder)
- 算法及数组工具类(Arrays)
- 日期类
- 基本数据类型包装类
- Math类
- File类
- 枚举类
一、 字符串相关类(String、 StringBuffer 、 StringBuilder)
java.lang.String:不可变的字符序列
java.lang.StringBuffer:可变字符序列,并且线程安全,但是效率低
StringBuilder :可变字符序列,线程 不安全,但是效率高 (一般用他!)
“xxxx”为该类的一个对象
String类的常见构造方法:
String()
创建一个空字符的String对象
String(String original)
创建一个String对象为original的拷贝
String(char[] value)
用一个字符数组创建一个String对象
String(char[] value, int offset, int count)
用一个字符数组从offset项开始的count个字符序列创建一个String对象
String(byte[] bytes)
用一个byte数组创建一个String对象
String(byte[] bytes,int offset,int length)
用一个byte数组从offset项开始的length个字符序列创建一个String对象
二、 String类常用方法
public static String valueOf(….)系列,可以将基本类型数据转换为字符串
例如:
public static String valueOf(double d)
public static String valueOf(int i)
….
public String[] split(String regex)
将一个字符串按照指定的分隔符进行分割,返回分割后的字符串数组
StringBuffer类和StringBuilder类方法类似
(1) 用字符串做拼接,比较耗时并且也耗内存,而这种拼接操作又是比较常见的,为了解决这个问题,Java就提供了 一个字符串缓冲区类,StringBuffer供我们使用。
StringBuffer和String类似,但StringBuffer可以对其字符串进行改变
(2)String和StringBuffer相互转换
String -- StringBuffer
构造方法
StringBuffer -- String
toString()方法
(3) StringBuffer的构造方法
A:StringBuffer()
创建一个不包含字符序列的空的StringBuffer对象
B:StringBuffer(int size)
构造一个不带字符,但具有指定初始容量的字符串缓冲区
C:StringBuffer(String str)
创建一个StringBuffer对象,包含与String对象str相同的字符序列
(4)StringBuffer的常见功能(自己补齐方法的声明和方法的解释)
A:添加功能 append()
B:删除功能 delete(int start,int end) 开始位置,结束位置(end-1)
C:替换功能
D:反转功能
E:截取功能(注意这个返回值)
F:在指定位置插入字符序列 insert(index,字符串)
(5)与String类含义类似的方法
(6)字符串的案例
A:模拟用户登录
B:字符串遍历
C:统计字符串中大写,小写及数字字符的个数
D:把字符串的首字母转成大写,其他小写
F:字符串反转
G:统计大串中小串出现的次数
H: 判断一个字符串是否对称
(7)面试题
A:String,StringBuffer,StringBuilder的区别
B:StringBuffer和StringBuilder均没有重写equals()方法,
继承Object类的equals()方法,则比较的是不是同一个对象。
三、 算法及Arrays工具类
(1)排序
A:冒泡排序
相邻元素两两比较,大的往后放,第一次完毕,最大值出现在了最大索引处。同理,其他的元素就可以排好。
public static void bubbleSort(int[] arr) { for(int x=0; x<arr.length-1; x++) { for(int y=0; y<arr.length-1-x; y++) { if(arr[y] > arr[y+1]) { int temp = arr[y]; arr[y] = arr[y+1]; arr[y+1] = temp; } } } } |
(2)查找
A:基本查找
针对数组无序的情况
public static int getIndex(int[] arr,int value) { int index = -1; for(int x=0; x<arr.length; x++) { if(arr[x] == value) { index = x; break; } } return index; } |
B:二分查找(折半查找)
针对数组有序的情况(千万要先排序,在查找)
public static int binarySearch(int[] arr,int value) { int min = 0; int max = arr.length-1; int mid = (min+max)/2; while(arr[mid] != value) { if(arr[mid] > value) { max = mid - 1; }else if(arr[mid] < value) { min = mid + 1; } if(min > max) { return -1; } mid = (min+max)/2; } return mid; } |
(3)Arrays工具类
A:是针对数组进行操作的工具类。包括排序和查找等功能。
B:要掌握的方法(自己补齐方法)
把数组转成字符串:
排序:
二分查找:
(4)把字符串中的字符进行排序
举例:
"edacbgf" String []
得到结果
"abcdefg"
四、 时间处理相关类
1、java.util.Date
Date() 当前时间毫秒数
Date(long date) 指定日期毫秒数
⑴与字符串转换
toString()
⑵日期比较
①equals()
②compareTo(Date anotherDate)
③after(Date when) before(Date when)
⑶与数字 Long 转换(重要)
getTime() ->获取数字
setTime() -->变成另外一个日期
2 、 DateFormat 类和 SimpleDateFormat 类
作用:把时间对象转化成 指定格式的字符串。反之,把 指定格式的字符串转化成时间对象。
DateFormat 是一个抽象类。一般使用 SimpleDateFormat 类。
日期<-->字符串
DateFormat
1、format(Date date) -->日期格式化为字符串
2、parse(符合格式字符串) -->字符串 转为日期
子类
SimpleDateFormat(String pattern)
模板:区分大小写
* y:年
* M:月
* d:日
* H:24 进制 [0,23]
* k:24 进制 [1,24]
* h:12 进制 [0,11]
* K:12 进制 [1,12]
* m:分钟
* s:秒
* S:毫秒
五、 基本数据类型的包装类
(1)为了让基本类型的数据进行更多的操作,Java就为每种基本类型提供了对应的包装类类型
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean
(2)Integer的构造方法
A:Integer i = new Integer(100);
B:Integer i = new Integer("100");
注意:这里的字符串必须是由数字字符组成
(3)String和int的相互转换
A:String -- int
Integer.parseInt("100");
B:int -- String
String.valueOf(100);
(4)JDK5的新特性
自动装箱 基本类型--引用类型
自动拆箱 引用类型--基本类型
把下面的这个代码理解即可:
Integer i = 100;
在赋值之前,先进行了自动装箱
Integer i =Integer.valueOf(100);
i += 200;
计算之前,先进行了自动拆箱:i.intValue(),将对象转换为int基本数据类型
(5)包装类常见方法
Math类
java.lang.Math提供了一系列静态方法用于科学计算;其方法的参数和返回值类型一般为double型
六、 File类
java.io.File类代表系统文件名(路径和文件名)
File 代表文件和目录路径名的抽象表示形式。
File类的构造方法
①public File(String pathname)
②pulibc File(String parent,String child)
③public File(File parent,String child)
以 pathname 为路径创建 File 对象,如果 pathname 是相对路径,则默认的当前路径在user.dir 中存储。
user.dir是jvm的系统 属性,可以通过System.getProperty()获取jvm的系统属性。
user.dir:用户的当前工作目录
user.home:用户的主目录
File 的静态属性 separator 存储了当前系统的路径分隔符。
1、创建方法
①boolean createNewFile()不存在返回true存在返回false
②boolean mkdir()创建一层,确保父路径存在,如果父路径不存在,不能创建
③boolean mkdirs()父路径不存在,全部创建
④static createTempFile(前缀3个字节长,后缀默认.temp) 默认临时空间
⑤static createTempFile(前缀3个字节长,后缀默认.temp,目录)
2、删除方法
①boolean delete()文件不存在时,返回false
②boolean deleteOnExit()退出虚拟机删除,常用于删除临时文件
3、判断方法
① boolean canExecute()判断文件是否可执行
② boolean canRead():判断文件是否可读
③public boolean canWrite():判断文件是否可写
④boolean exists() 判断文件是否存在
⑤boolean isDirectory()判断是否为目录
⑥boolean isFile()判断是否为文件
⑦ boolean isHidden()判断是否为隐藏文件
⑧ boolean isAbsolute()判断是否是绝对路径 文件不存在也能判断
3、获取方法
①String getName()
②String getPath() 若是绝对路径,返回完整路径,否则返回相对路径
③String getAbsolutePath() 返回绝对路径
④String getParent()返回上级目录,若没有父目录返回null
⑤long lastModified()获取最后一次修改的时间
⑥long length() 字节数,不能读取文件夹的长度
⑦boolean renameTo(File f)
⑧File[] liseRoots()获取机器盘符
⑨String[] list()获取目录中的目录名称或文件名称的数组集合
⑩String[] list(FilenameFilter filter)返回过滤后的数组
² File[] listFiles()获取file目录下的文件和文件夹集合
4、练习
①列出磁盘下的文件和文件夹
②文件过滤
③利用递归列出全部文件
④移动文件