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;
int b = new Integer(4);

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();
System.out.prtinln(date);

输出
Sun Aug21 17:32:05 CST 2016

DateFormat

它可以定制日期格式

Date date = new Date();
SimpleDateFormat f = new SimpleDateFormat("yyyy-MMMM-dd-EEEE");
这些都是表示显示几位的年月日的.E是星期

BigInteger BigDecimal

BigInteger可以接受任意位的整数运算。他有add(BigInteger b),subtract(BigInteger b) multiply(BigInteger b) divide(BigInteger b)等方法来进行四则运算

BigDecimal可以进行精确的浮点数运算。对于加减乘都是准确的,对于除法可以指定小数位和舍入模式。

divide(BigDeciaml b, int scale, RoundingMode more)more是舍入模式。