java 常用类
Object
Object是所有java类共同的祖先。如果没有用extends,那么这个类将直接继承Object类。
Object类有一个默认构造方法,构造子类实例时,都会优先使用这个构造方法。
public Object(){}
方法:
- equals(Object obj): 比较两个对象是否相等,只有当两个变量引用一个实例时才会为真。
- notify()
- notifyAll()
- wait()
- hashCode(): 返回对象哈希码。
- toString(): 返回当前对象字符串表示。如果println方法参数时Object,那么先会调用toString()
- finalize(): 垃圾回收时先调用这个方法
- getClass(): 返回运行时类。java引用变量有两种类型,编译时类型和运行时类型。运行时类型就是引用的实例。
String 和 StringBuffer
String是不可变类,里面字符串永远不会改变(也就是平常用双引号括起来的那些),StringBuffer是可变类
String
构造方法:
- String()
- String(String value):
- String(char[] value): 会把字符数组转换成字符串
- String(byte[] bytes): 会用本地默认编码把字节数组变成字符串
- String(byte[] bytes, String charsetName): 根据charsetName指定的编码,构造字符串。
方法:
- length()
- char charAt(int index): 返回index上的字符
- getChars(int srcBegin, int srcEnd, char[] dst, int dstbegin): 从当前字符串复制字符到dst中,srcBegin开始取字符,到srcEnd-1结束
- equals(object str): 判断两个字符串是否相等
- equalsIgnoreCase(): 忽略大小写
- int compareTo(String str): 比较字符串大小
- indexOf()和lastIndexOf(): 在字符串中检索特定字符或字符串,indexOf()从开始位置查找,另一个从后面开始查找
System.out.println(str.indexOf('e'));
System.out.println(str.indexOf("ea", 2)); //从2开始 - concat(String str): 把str加载末尾
- substring(): 返回子串,参数中可以有开始和结束位置
- String[] split(String regex): 根据参数把字符串分成几个子串,例如根据空格分隔
- replaceAll(String regex, String replacement): 把原来字符串中regrex换成replacement。replaceFirst()只替换第一个
- trim(): 把字符串首尾空格删除
- String valueOf(): 把基本类型转换成String类型。
- toUpperCast()/toLowerCast(): 把字符串变成大小写
“hello” 和 new String(“hello”)区别
第一种: String s1 = “hello”
第二种: String s2 = new String(“hello”)
第一种方式hello是立即数,Java虚拟机只会分配一次内存(在data节中)。第二种方式是建立一个对象,每次新建一个对象都会重新分配一次内存。所以用第一种方式赋相同值给两个变量用equal()比较时true,而而第二种不是。
StringBuffer
构造方法:
- StringBuffer()
- StringBuffer(int length)
- StringBuffer(String str):缓冲区初始字符串是str,并且提供16字节的额外缓冲区
方法:
- length()
- append(): 向缓冲区内添加字符串
- toString(): 返回缓冲区内字符串
- charAt(int index)
- setCharAt(int index, char c): 在index处放c
- getChars(int Begin, int end, char[] dst, int dstBegin):
- subString()
- insert(int offset, String str): 在offset位置插入字符串(字符串首位置在offset处)
String和StringBuffer区别
String是不可变类。即使看上去提供了replaceAll()的修改方法实际上它是创建了一个新的字符串。而StringBuffer是在自身基础上进行修改。
String覆盖了equals()方法。
String对象可以用+号进行拼接,而StringBuffer不可以
正则表达式
就是用一些特殊字符来代替多个字符进行匹配
特殊字符 | 作用 |
---|---|
. | 任意字符 |
[…] | 匹配中括号中所有数据,例如[abc]可以匹配a或b或c |
... | 匹配除括号数据外的任意数据 |
\s | 空白符(空格,tab,换行,换页,回车) |
\S | 非空白符 |
\d | 任意数字 |
\D | 任意非数字 |
\w | 大小写字母和数字 |
\W | 除了大小写和数字外的字符 |
格式化字符串
String类的静态方法format()用于创建格式化字符串
- String format(String format, Object… args)
- String format(Locale locale, String format, Object… args): locale指定语言
例:Date date = new Date();
Date date = new Date();
System.out.println(String.format(Locale.CHINESE, "%tc", date));
日期,时间格式化
符号 | 含义 |
---|---|
%tb | 月份简称,8月 |
%dB | 全称 |
%ta | 星期几 |
%tA | 星期几全称 |
%ty | 2位年份,如20 |
%tY | 4位年份,如2020 |
%tm | 月份,08 |
%te | 一月中第几天 |
%tj | 一年中第几天 |
%tc | 具体时间和日期 |
%tF | 年-月-日,四位年 |
%tD | 年/月/日,两位年 |
时间 | |
%tH | 24时制(00-23) |
%tI | 十二小时(01-12) |
%tk | 24时(0-23) |
%tl | 12时(0-12) |
%tM | 分钟 |
%tS | 秒 |
%tL | 毫秒 |
%tN | 微秒 |
%tp | 上午下午标记 |
%tz | 时区偏移量 |
%tZ | 时区缩写 |
常规类型
符号 | 含义 |
---|---|
%b | 布尔类型 |
%B | 大写 |
%h,%H | 哈希码 |
%s | 字符串 |
%S | 大写字符串 |
%c | 字符 |
%C | 大写 |
%d | 十进制整数 |
%o | 八进制 |
%x | 十六进制 |
%f | 浮点数 |
%e | 科学记数法表示的十进制 |
%n | 换行 |
例:System.out.println(Stirng.format("hi%s", "小红");
System.out.println(String.format("%c%n", 'A');
使用大致和c语言类似。
转换符号 | 含义 |
---|---|
转换符号 | 它是在%后面字符前面的,例如”%+d” |
+ | 为数字添加正负号 |
- | 左对齐 |
0 | 数字前补零,例如 “%04d” 表示如果数字不满四位前面要补零 |
( | 添加括号,例如(“%(d”, 99) ,输出 (99) |
# | 如果是十六或十进制前面添加0x或0,如果是浮点数添加小数点 |
包装类
每个基本类型都有一个包装类。包装类就是对应基本类型然后首字母大写(int,char除外)。例如int Integer float Float.char是Character
构造方法:
都可以用字符串作为参数来构造。Boolean类型可以用”true”或”false”。
除了Character和Boolean外其他类都是继承于Number类。
Number类方法如下:
- byteValue(): 返回Number对象的byte类型
- intValue():
- longValue()
- shortValue()
- doubleValue()
floatValue()
包装类都覆盖了toString()方法
- 都有parsexxx(String str)静态方法,可以把字符串转化成相应数据。例如parseint(“123”)
包装类自动装箱和拆箱
就是在基本类型和包装类之间进行转换。可以直接用基本类型赋值给包装类,也可以直接用包装类赋值给基本类型。
Integer a = 3; |
Math类
Math类里面基本上都是静态方法,并且他的构造方法时private,不能有实例。而且是final类型,不能有子类。
方法:
- abs()
- ceil(): 向上取整
- floor(): 向下取整
- max()
- min()
- random(): 返回0到1间double类型的随机数。包括0,不包括1
- round(): 四舍五入整数
- sin()
- cos()
- tan()
- exp(): 根号x
- sqrt(): x的平方
- pow(): 幂运算
Random类
和Math类似
方法:
- nextInt(): 返回一个int型随机数,随机数大于等于0
- nextInt(int n): n是随机数最大值
- nextLong()
- nextFloat()
- nextDouble()
- nextBoolean()
处理时间类
Date
Date类以毫秒方法日期。
Date date = new Date(); |
DateFormat
它可以定制日期格式
Date date = new Date(); |
BigInteger BigDecimal
BigInteger可以接受任意位的整数运算。他有add(BigInteger b),subtract(BigInteger b) multiply(BigInteger b) divide(BigInteger b)等方法来进行四则运算
BigDecimal可以进行精确的浮点数运算。对于加减乘都是准确的,对于除法可以指定小数位和舍入模式。
divide(BigDeciaml b, int scale, RoundingMode more)more是舍入模式。