大家好,乐字节的小乐又和大家见面了。这次要给大家讲述的是Java常用类。
主要有以下知识点:
Ø 字符串相关类(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、字符串缓冲区类,StringBuffer
用字符串做拼接,比较耗时并且也耗内存,而这种拼接操作又是比较常见的,为了解决这个问题,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: 判断一个字符串是否对称
三、 算法及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;}}
}
}
B:选择排序
把0索引的元素,和索引1以后的元素都进行比较,第一次完毕,最小值出现在了0索引。同理,其他的元素就可以排好。
public static void selectSort(int[] arr) {for(int x=0; x<arr.length-1; x++) {for(int y=x+1; y<arr.length; y++) {if(arr[y] < arr[x]) {int temp = arr[x];arr[x] = arr[y];arr[y] = 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型