----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------
常用类
1、String类
字符串是一个特殊对象。
字符串是常量,这类被final修饰,不能被继承,一旦初始化就不可改变
字符串在程序中经常使用,虚拟机会将其缓存在String池中
String s1 = “abc” 和 String s2 = new String(“abc”)的区别:
* s1代表一个对象“abc”
* s2有两个对象“new String()”、“abc”
String s1 = "abc"; 等效于: char[] arr = {'a', 'b', 'c'};
String s1 = new String(arr);
* s1 == s2:比较的是变量内存地址值是否相等
s1.equals(s2):比较的是对象内容是否相等
String类的构造函数:
String(byte[] bytes):通过指定字节数组构建字符串。
String(byte[] bytes,int offset,int length):指定字节数组,数组元素偏移量和元素个数构建字符串。
String(byte[] bytes, String charsetName):指定字节数组和指定码表构建字符串。
String(byte[] bytes,int offset,String charsetName):指定字节数组、数组元素偏移量、元素个数和
指定码表构建字符串。
String(char[] value):通过指定字节数组构建字符串。
String(char[] value,int offset,int count)通过指定字节数组、数组元素偏移量和元素个数构建字符串。
String(StringBuffer buffer):通过指定StringBuffer构建字符串。
String(StringBuffer buffer):通过指定StringBuffer构建字符串。
String类的常用方法:
char charAt(int index):查找指定位置的字符
int indexOf(String str):判断字符串出现的位置
int compareTo(String anotherString):按字典顺序比较两个字符串
String substring(int beginIndex, int endIndex):截取子字符串
String[] split(String regex):字符分割
String replace(CharSequence target, CharSequence replacement):替换字符串
String trim():去掉字符串前后空白
StringBuffer:
字符串的组成原理就是通过该类实现的。
StringBuffer可以对字符串内容进行增删。
StringBuffer是一个容器。
很多方法与String相同。
StingBuffer是可变长度的。
StringBuffer特有方法:
StringBuffer append(int x):将基本数据类型和引用类型数据添加到缓冲区
没有添加short,byte,的方法也就是说如果添加的是byte或short会自动提升为int
这个方法返回的还是原来的缓冲区对象
StringBuffer delete(int start, int end ):删除指定角标上的元素,包含头不包含尾
StringBuffer insert(int index,String str);在指定角标上插入数据
StringBuffer reverse():反转
什么时候用缓冲区呢?
当要操作的元素类型不一致,但最终都会转成字符串的时候。就使用StringBuffer
String,StringBuffer,StringBuilder:
1、String相对于其他两者效率低,会在内存中产生过多的字符串对象,容易产生垃圾。
因为产生垃圾之后,GC会在一定的条件情况下出来进行垃圾清理,从而拖慢速度。
2、StringBuilder中只有一个StringBuilder对象,比String效率高些
3、String一旦被初始化不可以被改变
4、StringBuilder可以对字符串修改,操作的是一个对象
5、StringBuffer 同步(线程安全),多线程使用
6、StringBuilder 非同步(线程不安全)jdk1.5的新特性,单线程使用
2、扫描器(Scanner):用来从键盘输入读取数据
nextLine() 获取一行字符串
nextInt() 获取一个整数
nextFloat() 获取一个浮点数
3、大数字(BigInteger):如果一个很大的整数无法用long来表达时, 就用BigInteger
add() 加
subtract() 减
multiply() 乘
divide() 除
mod() 取余
4、包装类:JDK提供了对所有数据类型的包装类
byte >>> Byte
short >>> Short
int >>> Integer
long >>> Long
double >>> Double
float >>> Float
char >>> Character
boolean >>> Boolean
将基本数据类型封装成对象的好处在于可以在对象中定义更多的功能方法操作该数据。
包装类的常用方法:
toString方法:用于基本数据类型与字符串 之间的转换
parseInt方法:Integer.parseInt(String s)
valueOf方法:Double.valueOf(String s)
基本数据类型对象包装类新特性,JDK1.5以后,简化了定义方式:
Integer x = new Integer(4);可以直接写成
Integer x = 4;//自动装箱。
x = x + 5;//自动拆箱。通过intValue方法。x = new Integer(x.intValue()+5);
注意:
在使用时,Integer x = null;上面的代码就会出现NullPointerException。
5、时间类(Date)
使用new Date()创建时间对象代表当前系统时间
需要使用DateFormat类来进行格式化,才能显示想符合习惯的格式
Calendar:
使用该类对时间进行操作比较方便
通过常量来表示时间的各种值,如一年中的某一天,一个月的某一天等
将对应的常量作为形参来调用相应的get、add、set方法来操作对象
6、计时器(Timer):在指定时间或者在指定的延迟之后执行一个任务
schedule(TimerTask task, Date time)
schedule(TimerTask task, Date firstTime, long period)
schedule(TimerTask task, long delay)
schedule(TimerTask task, long delay, long period)
7、系统类(System)
静态属性in为标准输入流,属于InputStream类型,read方法返回一个字节,默认指向键盘输入
静态属性out为标准打印流,属于PrintStream类型,print方法打印字符,默认打印到屏幕
可以用set方法修改属性in和out
currentTimeMills():获取当前时间的毫秒数 1970年开始
System.exit():退出Java虚拟机
System.gc():垃圾回收,Java中的对象成为垃圾之后不会马上回收掉,如果想立即回收可以调用System.gc()
System.getProperties():获得系统属性
Runtime:表示系统运行时状态,设计方法是单例模式完成的
exec方法执行命令
8、算数类(Math):该类提供了一些数学运算的方法
PI 圆周率
abs() 绝对值
ceil() 向上取整
floor() 向下取整
round() 得到最接近的整数
max() 返回较大的数
min() 返回较小
pow() 计算一个数的指定次幂
sqrt() 开平方
cbrt() 开立方
random() 随机数
9、随机数(Random):用来生成随机数
nextInt() 随机整数
nextFloat() 随机小数
nextBoolean() 随机布尔
10、工具类(Arrays):提供了对数组的常用操作
binarySearch();对数组进行二分查找
sort(); 对数组进行排序
fill();
toString([]);将数组转为字符串显示形式,打印结果带中括号的
asList([]):将数组变成集合。可以通过集合的方法操作数组,但不能进行增删行为
将集合变成数组:通过Collection中的toArray(T[] a)通常在传递数组时,长度最好定义为集合的size();
Collections:提供了对集合的常用操作
binarySearch(List,key):如果对List进行二分查找,必须要保证该list有序
sort(list):对List集合进行排序
sort(list,Comparator)
max(list):取出集合中的最大值,最小值
fill(list,value)
synchronizedList(list)
reversOrder();---返回的也是比较器
两个工具类中的方法都是静态的