- Java基础重点知识总结
- 一、Java基础内置对象
- 1.Object
- 2.String
- 3.StringBuffer/StringBuilder
- 4.BigInteger/BigDecimal
- 5.数组工具类Arrays
- 6.系统工具类System
- 7.时间
- 8.instanceof
- 9.Comparable - compareTo
- 二、高级功能
- 1.反射
- 2.断言
- 3.异常
- 4.日志
- 5.泛型
- 三、集合
- 四、JDK1.8新特性
- 回头继续补充........
- over
可以使用该类型的变量引用任何类型的对象,其中有如下几个方法
-
toString()
-
getClass():获取对象的“运行时”类型
-
finalize():垃圾回收
-
hashCode():返回一个对象的hashCode值
- 如果一个对象的参与计算hashCode值的成员变量没有修改,那么在程序运行期间,每次获取的hashCode值不变
- 如果两个对象hashCode不同,那么这两个一定不“相等”
- 如果两个的hashCode值相同,那么这两个对象不一定“相等”
- 如果两个相等,那么他们的hashCode值一定要相同
-
equals()
用于判断当前对象与指定对象是否相等,默认的实现,等价于“==”,比较对象的内存地址
-
clone()
一个类实现了Cloneable接口,以向Object.clone()方法指示该方法制作该类实例的字段对字段副本是合法的
它有如下特点
- String类是final修饰的,不能被继承
- String类的底层使用数组存储
- String类的对象不可变(没有提供修改字符串中某个字符的方法)
- 字符串常量池中存储字符串常量,可以共享
- 每次修改都会产生新对象,频繁修改的话效率不高
常用API如下
| 序号 | 方法签名 | 方法功能简介 |
|---|---|---|
| 1 | String() | 创建空字符串 |
| 2 | String(String original) | 根据original创建一个新字符串 |
| 3 | static String valueOf(xx value) | 根据value内容创建一个字符串 |
| 4 | String intern() | 将字符串的内容存入常量池 |
| 5 | String concat() | 字符串拼接 |
| 6 | boolean equals(Object obj) | 判断当前字符串与指定字符串内容是否已在,严格区分大小写 |
| 7 | boolean equalsIgnoreCase(String obj) | 判断当前字符串与指定字符串内容是否已在,不区分大小写 |
| 8 | int compareTo(String str) | 比较当前字符串与指定字符串的大小,严格区分大小写 |
| 9 | int compareToIgnoreCase(String str) | 比较当前字符串与指定字符串的大小,不区分大小写 |
| 10 | boolean isEmpty() | 判断当前字符串是否为空 |
| 11 | int length() | 返回当前字符串的长度 |
| 12 | String toLowerCase() | 将当前字符串转为小写 |
| 13 | String toUpperCase() | 将当前字符串转为大写 |
| 14 | String trim() | 去掉当前字符串前后空白符 |
| 15 | boolean contains(xx) | 判断当前字符串中是否包含xx |
| 16 | int indexOf(xx) | 在当前字符串中查找xx第一次出现的下标 |
| 17 | int lastIndexOf(xx) | 在当前字符串中查找xx最后一次出现的下标 |
| 18 | String substring(int beginIndex) | 从当前字符串的[beginIndex, 最后]截取一个子串 |
| 19 | String substring(int beginIndex, int endIndex) | 从当前字符串的[beginIndex, endIndex)截取一个子串 |
| 20 | char charAt(index) | 返回当前字符串[index]位置字符 |
| 21 | char[] toCharArray() | 将当前字符串的内容用一个字符数组返回 |
| 22 | String(char[] value) | 用value字符数组的元素构建一个新字符串 |
| 23 | String(char[] value,int offset, int count) | 用value字符数组的[offset]开始的count个字符构建一个新字符串 |
| 24 | static String copyValueOf(char[] data) | 用data字符数组的元素构建一个新字符串 |
| 25 | static String copyValueOf(char[] data, int offset, int count) | 用data字符数组的[offset]开始的count个字符构建一个新字符串 |
| 26 | static String valueOf(char[] data) | 用data字符数组的元素构建一个新字符串 |
| 27 | static String valueOf(char[] data, int offset, int count) | 用data字符数组的[offset]开始的count个字符构建一个新字符串 |
| 28 | byte[] getBytes() | 将当前字符串按照平台默认字符编码方式编码为字节序列 |
| 29 | byte[] getBytes(字符编码方式) | 将当前字符串按照指定字符编码方式编码为字节序列 |
| 30 | String(byte[] bytes) | 将bytes字节序列按照平台默认字符编码方式解码为字符串 |
| 31 | String(byte[] bytes,String charsetName) | 将bytes字节序列按照指定字符编码方式解码为字符串 |
| 32 | boolean startsWith(xx) | 判断当前字符串是否以xx开头 |
| 33 | boolean endsWith(xx) | 判断当前字符串是否以xx结尾 |
| 34 | boolean matchs(xx) | 判断当前字符串是否满足xx正则 |
| 35 | String replace(xx,yy) | 将当前字符串中所有xx替换为yy |
| 36 | String replaceFirst(xx,value) | 将当前字符串中第一个满足xx正则的字符替换为value |
| 37 | String repalceAll(xx, value) | 将当前字符串中所有满足xx正则的字符替换为value |
| 38 | String[] split(xx) | 将当前字符串按照xx正则拆分为多个字符串 |
| 39 | void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) | 将当前字符串的[srtBegin,srcEnd)部分字符复制到dst字符数组中,dst数组从[dstBegin]开始存储 |
两者的区别
-
String类的对象是不可变字符序列,StringBuffer和StringBuilder的对象是可变字符序列
当前String类创建对象完毕之后,该对象的内容(字符序列)是不能改变的
一旦改变就会得到(返回)一个全新的String
-
StringBuffer:老点,线程安全的,因为它的方法有synchronized修饰
-
StringBuilder:JDK1.5之后引入的,线程不安全,单线程情况下推荐使用
常用API如下
| 序号 | 方法签名 | 方法区功能简介 |
|---|---|---|
| 1 | StringBuffer() | 创建一个空的可变字符序列,默认长度16 |
| 2 | StringBuffer(String str) | 用字符串str内容创建一个可变字符序列 |
| 3 | StringBuffer append(数据类型 b) | 在当前字符序列后面追加b |
| 4 | StringBufferinsert(int index, 数据类型 s) | 在当前字符序列[index]插入s |
| 5 | StringBuffer delete(int start, int end) | 删除当前字符序列[start,end)部分字符 |
| 6 | StringBuffer deleteCharAt(int index) | 删除当前字符序列[index]位置字符 |
| 7 | void setLength(int newLength) | 修改当前字符序列的长度为newLength |
| 8 | void setCharAt(int index, char ch) | 替换当前字符序列[index]位置字符为ch |
| 9 | StringBuffer reverse() | 将当前字符序列内容反转 |
| 10 | StringBuffer replace(int start, int end, String str) | 替换当前字符序列[start,end)部分字符为str |
| 11 | int indexOf(String str) | 在当前字符序列中开始查找str第一次出现的下标 |
| 12 | int indexOf(String str, int fromIndex) | 在当前字符序列[fromIndex]开始查找str第一次出现的下标 |
| 13 | int lastIndexOf(String str) | 在当前字符序列中开始查找str最后一次出现的下标 |
| 14 | int lastIndexOf(String str, int fromIndex) | 在当前字符序列[fromIndex]开始查找str最后一次出现的下标 |
| 15 | String substring(int start) | 截取当前字符序列[start,最后]部分构成一个字符串 |
| 16 | String substring(int start, int end) | 截取当前字符序列[start,end)部分构成一个字符串 |
| 17 | String toString() | 将当前可变字符序列的内容用String字符串形式表示 |
| 18 | void trimToSize() | 如果缓冲区大于保存当前字符序列所需的存储空间,则将重新调整其大小,以便更好地利用存储空间。 |
| 19 | int length() | 返回当前字符序列的长度 |
| 20 | char charAt(int index) | 返回当前字符序列[index]位置字符 |
| 21 | void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) | 将当前字符串的[srtBegin,srcEnd)部分字符复制到dst字符数组中,dst数组从[dstBegin]开始存储 |
大数,为了解决基本的整数or浮点数精度不能够满足需求
-
BigInteger:实现任意精度的整数运算
-
BigDecimal:实现任意精度的浮点数运算
java.util.Arrays
此类包含用于操作数组的各种方法(例如排序和搜索)
| 序号 | 方法签名 | 方法功能简介 |
|---|---|---|
| 1 | static int binarySearch(数据类型[] a, 数据类型 key) | 使用二分查找法在a数组中查找key的下标 |
| 2 | static 数据类型[] copyOf(数据类型[] original, int newLength) | 根据original复制一个新数组长度为newLength |
| 3 | static 数据类型[] copyOfRange(数据类型[] original, int from, int to) | 根据original的[from,to)部分复制一个新数组 |
| 4 | static boolean equals(数据类型[] a1, 数据类型[] a2) | 比较两个数组内容是否一致 |
| 5 | static void fill(数据类型[] a, 数据类型val) | 用val的值填充a数组 |
| 6 | static void sort(数据类型[] a) | 将a数组按照自然排序规则实现升序排列 |
| 7 | static void sort(数据类型[] a, Comparator c) | 将a数组按照c指定的定制比较规则实现升序排列 |
| 8 | static String toString(数据类型[] a) | 将数组的元素拼接为一个字符串返回 |
-
static long currentTimeMillis():获取系统时间的毫秒值
-
static void exit(x):退出JVM
-
static void arraycopy(原数组, 原数组的起始下标, 目标数组, 目标数组的起始下标,一共复制几个元素)
-
static void gc():通知垃圾回收器工作
-
static String getProperty(系统属性名)
java.util.Date
- new Date():获取系统日期时间
- new Date(long 毫秒):根据毫秒值来获取日期时间
- long getTime():获取该日期时间对应的毫秒值,距离1970-1-1 0:0:0
java.util.Calendar
日历
如何创建/获取Calendar的对象?
- 创建子类对象:GregorianCalendar
Calendar calendar = new GregorianCalendar();
- 获取指定时区的日历对象
- getInstance()
- getInstance(TimeZone 时区) 或 getInstance(Locale 语言环境)
- getInstance(TimeZone, Locale)
-
get(字段名)
例如:int year = get(Calendar.YEAR);
java.text.DateFormat
日期时间格式化
// 使用它的子类:SimpleDateFormat
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// 把日期转字符串
String str = sf.format(Date的日期对象);
// 把字符串解析为日期
Date d = sf.parse(字符串);
java.time
LocalDate/LocalTime/LocalDateTime
-
now():获取当前的日期或时间
-
of(x,x,x):获取指定的日期或时间
-
withXxx(), plusXxx(), minusXxx():修改日期和时间,修改后要重新接收新对象
-
isLeapYear():判断是否是闰年
-
between(x,y):间隔两个日期或时间
-
…
Java关键字(一)——instanceof - YSOcean - 博客园 (cnblogs.com)
9.Comparable - compareToComparable接口中只有一个compareTo方法,它用于与指定的对象进行比较以进行排序。 当此对象小于、等于或大于指定对象时,返回一个负整数、零或正整数
二、高级功能 1.反射用几个用处
- 运行时获取类信息、分析类能力
- 运行时检查实例对象,通过java.lang.reflect中的三个类Field、Method、Constructor
- 实现泛型
关于类加载的机制,看JVM篇
java.lang.Class类
可以访问Java运行时系统为所有对象维护的一个运行时的类型标识,我觉得也可以叫他是字节码对象
获取Class对象的四种方式
- 类型名.class
- 对象.getClass()
- Class.forName(类型全名称)
- ClassLoader的类加载器对象.loadClass(类型全名称)
关于反射的应用这里不展开详细说明,就简单列举一下,回头再补充
- 获取类型的详细信息
- 创建任意引用类型的对象
- 操作任意类型的属性
- 调用任意类型的方法
- 获取泛型父类信息
- 读取注解信息
也就是所谓的Assertion,是jdk1.4后加入的新功能,它主要使用在代码开发和测试时期,用于对某些关键数据的判断,如果这个关键数据不是你程序所预期的数据,程序就提出警告或退出
语法
-
assert expression;
expression代表一个布尔类型的表达式,如果为真,就继续正常运行,如果为假,程序退出
-
assert expression1 : expression2;
expression1是一个布尔表达式,expression2是一个基本类型或者Object类型,如果expression1为真,则程序忽略expression2继续运行;如果expression1为假,则运行expression2,然后退出程序。
举例说明
int i = 3;
assert i==6;
System.out.println("如果断言正常,我就被打印");
断言功能用于软件的开发和测试,是禁止用于生产环境中的代码
3.异常这个就不说了,后面会做统一异常返回的结果类
4.日志这个就不说了,后面会做统一日志处理的类
5.泛型以后补充
三、集合首先看看菜鸟教程的集合框架图
我觉得涉及到的知识点大概如下
- 有哪些集合
- 集合之间的差别
- 线程安全/效率
- 算法
1
回头继续补充… over


