知识点总结

1:面试题:

在Java中获取一个类的字节码文件对象的方式有几种?

有三种:

1)public final Class getClass():获取正在运行的类; (返回字节码文件对象)

2)在Java中任意类型的class属性 举例: Class c = 类名.class

3)Class类提供的一个静态方法

public static Class forName(String classPathName) :参数为当前类的全限定名称

2:Object类的toString()

public String toString():返回对象的字符串表示形式。

结果应该是一个简明扼要的表达,容易让人阅读。 建议所有子类覆盖此方法(否则,打印出来的是地址值!)

public int hashCode():返回对象的哈希码值,不同的对象,它的哈希码值不同

(理解为 "地址值",它不是实际意义的地址值----通过哈希算法算出来的)

3:Object的克隆方法:创建并返回此对象的"副本"----前提是自定义的类型必须实现Cloneable接口,否则无法克隆!

protected Object clone() throws CloneNotSupportedException

如果一个接口没有成员变量,连成员方法都没有,将这类接口称为"标记接口"

Cloneable接口:某个类如果能够实现这个接口,那么这个类对象就可以克隆!

4:Object类的垃圾回收方法

protected void finalize()throws Throwable--跟gc垃圾回收器有关系

当jvm开启垃圾回收器的时候,就会回收堆内存中没有更多引用的对象(new 出来的东西)

当前垃圾回收器开始运行,会调用Object类的finalize()方法,来回收对象,子类重写了,会调用子类的finalize方法

5:String类:代表字符串,是一个常量,创建之后,其值不能更改!

举例:

String s = "abc" ; 格式 开发中定义字符串就这个格式!

字符串的底层就是一个字符数组组成!char[]--->String

构造方法:

public String():创建字符串对象

public String(String original):将指定的字符串传进去,构造一个字符串对象

public String(char[] value):将字符串数组---构造成String

public String(char[] value,int offset,int count):将一部分字符数组转换成String

public String(byte[] bytes)将字节数组---构造成String

public String(byte[] bytes, int offset,int length):将一部分字节数组---构造成String

如果存在类型转换问题:

已知char[]--->String public String(char[] value)

已知byte[]--->String public String(byte[] bytes)

如果仅仅表示定义一个String对象---推荐的格式

String 变量名 = "字符串常量" ;

6:考点:

==和equals的区别:

==:连接的是两个引用类型的数据,比较的是两个对象的地址是否相同

Object的equals():默认比较的是两个对象的地址值是否相同,子类重写了equals(),就比较两个对象的内容是否相同

字符串常量相加:

先相加,然后看结果,是否在常量池中,如果有,直接返回值地址;否则开空间

字符变量相加:

先在常量池开辟空间,然后在操作;

7:String类中常用的获取功能:

1)public char charAt(int index) 获取指定索引值对应的字符

2)public int length() :字符串特有功能:获取字符串长度

3)public String concat(String str):拼接功能 将指定的字符串拼接到该字符串末尾,获取新的字符串

4)public int indexOf(String str)返回指定字符串第一次出现索引值

public int lastIndexOf(String str):返回指定子字符串最后一次出现的索引值

5)public String[] split(String regex):字符串拆分功能

6)截取功能

public String substring(int beginIndex,int endIndex)

从指定位置开始,截取到endIndex-1处结束,包前不包后

public String substring(int beginIndex)

从指定位置开始默认截取到末尾!

8:String类的常用的转换功能

public byte[] getBytes(): 将字符串转换成字节数组 (编码过程:将能看懂的东西--->变成看不懂的!)

(使用平台默认字符集)

public char[] toCharArray() :将字符串转换成字符数组 (使用居多)

public static String valueOf(常见的基本类型int/long/double/float/boolean/Object):

String的万能方法:将上面的常用类型--转换成String

public String toUpperCase():将指定字符串转换成大写

public String toLowerCase():将指定字符串转换成小写

9:String类判断功能以及其他功能:

public boolean constains(String str):判断大串中是否包指定的子字符串

public boolean equals(Object anObject)):比较两个字符串内容是否相同

public boolean equalsIgnoreCase(String anotherString)):忽略大小写比较

public boolean startsWith(String prefix):字符串是否以指定的前缀开头

public boolean endsWith(String str):字符串是否以指定的后缀结尾

其他功能:

public String replace(char oldChar,char newChar)替换功能:使用指定的新的字符替换以前的字符

public String trim():删除前后两端空格

应用场景:trim(): 使用io(intput输入 Output输出)流进行 读写复制(文件内容在网络中传输)

文件内容前后有一些空字符出现,获取到文件内容之后,先去trim()去除两端空格

10:面试题:

String s1 = "hello" ;

String s2 = "hel" ;

这个两个字符串按照字典顺序比较结果是怎么计算的?

--->两个字符串--->底层是以字符数组存储-获取字符数组长度,获取长度的最小值

使用最小值作为 while循环条件, 如果没有取到最小值,一直循环,

循环逻辑:

通过获取两个字符数组的每一个字符,如果都相同,最终临界条件达到 ,两个字符数组长度相减

如果获取到字符,如果两个字符不相等,直接是两个字符---对应的ASCII码表的值相减---直接得到字典顺序的值!

11:面试题:

s1和s2有什么区别?

String s1 = "hello" ;

String s2 = new String("hello") ;

第一个格式:

创建一个对象,直接在常量池中创建;

第二个格式:

需要在堆内存开辟空间,而且指向常量池地址:内存创建了两个对象!

两个都是创建字符串实例,但是推荐第一种,从内存角度考虑,消耗内存资源不严重!

12:System类

java.lang.System:不能实例化:提供了静态字段(静态变量)

public static final PrintStream out :标准 打印输出流

public static final PrintStream err 标准错误输出流

public static final InputStream in 标准输入流

System类常用的成员方法:

public static long currentTimeMillis() 计算当前系统时间毫秒值 (很少单独用)

用来计算当前某个程序的时间复杂度(运行效率)

public static void gc() 收到开启垃圾回收器 ---会调用finalize(),回收没有更多引用的对象

public static void exit(int status): 参数为0:终止jvm

public static void arraycopy(

Object src, //原对象

int srcPos, //原对象中的某个位置

Object dest, //目标对象

int destPos, //目标对象的某个位置

int length) //指定的长度

13:BigDecimal这个类是对小数可以进行精确计算的!

构造方法:

public BigDecimal(String val):将String类型数据构造成BigDecimal

将double数据---使用"小数字符串"

成员方法:

public BigDecimal add(BigDecimal augend):求和

public BigDecimal subtract(BigDecimal subtrahend):相减

public BigDecimal divide(BigDecimal divisor):小数除法

public BigDecimal divide(BigDecimal divisor,int roundingMode):除法,第二个参数舍入模式

BigDecimal提供的模式 public static final int ROUND_HALF_UP:四舍五入

...

public BigDecimal divide(BigDecimal divisor,

int scale,//保留几位小数

int roundingMode) //舍入模式

public BigDecimal multiply(BigDecimal multiplicand):乘法

14:java.util.Random:伪随机数生成器 可以产生随机数 比Math.random()麻烦

两个构造方法:

public Random() :无参构造方法(推荐)

public Random(long seed):有参构造,创建一个指定long类型的变量的随机数生成器

两个成员方法:

public int nextInt(): 产生伪随机数在,取值是int类型 的范围内

public int nextInt(int n):产生0-n之间的随机数(推荐)

15:StringBuffer的添加/删除的功能

添加:

public StringBuffer append(任意java类型) 可以将任意类型的元素添加(在末尾追加)到字符串缓冲区中,返回值是字符串缓冲区本身

public StringBuffer insert(int offset,任意java类型):在指定位置处的序列前面插入新的序列

删除:

public StringBuffer deleteCharAt(int index):在指定位置处删除指定的字符,返回字符串缓冲区本身

public StringBuffer delete(int start,int end):从指定位置start处开始到end-1处的字符序列删除,返回值字符串缓冲区本身

开发中使用居多:追加功能以及删除 deletCharAt(int index)使用居多

StringBuffer的特有功能:

public StringBuffer reverse() :字符串缓冲区反转功能,将字符串缓冲区中所有的字符序列反转!

16:StringBuffer其他功能:

替换功能

public StringBuffer replace(int start,int end,String str)

使用指定的字符串str从指定位置开始到end-1处进行替换,返回该字符串缓冲区本身

public String substring(int start):从指定位置开始截取,默认截取到末尾,返回被截取后的字符串

public String substring(int start,int end):从指定位置开始截取到指定位置end-1处,返回被截取后的字符串

17:面试题:

String和StringBuffer的区别?

String特点:字符串是一个常量,一旦被创建,其值不能被更改

String作为形式参数,形参的改变不会影响实际参数;

而除过String这个引用类型之外,形式参数的改变直接影响实际参数!

StringBuffer特点:

字符串缓冲区支持可变的字符串,线程安全,执行效率低!

18:Iterator iterator():Collection专有迭代器(遍历集合) (过渡)

Iterator迭代器接口:

boolean hasNext(): 判断迭代器里面是否下一个可以遍历的元素

E next():获取迭代器的下一个元素 (和迭代器中的类型一致)

19:数组长度是固定的,如果这个需求在变化,又需要存储10个学生,这个时候数组不适合长度可变的需求

集合:

集合是一个容器,它可以存储不同数据类型的元素,但是这些元素必须为引用数据类型,集合长度可变!

集合和数组区别?

1)长度区别

数组:固定

集合:可变

2)存储数据类型的区别?

数组:可以存储基本数据类型,也可以存储引用数据类型

集合:只能存储引用类型 集合<泛型>

3)存储元素的区别?

数组:数组存储的元素的数据类型必须一致

集合:如果没有明确<泛型>,可以存储任意的引用类型(包含Object)

20:增强for:是在集合/数组中存储的引用类型中使用居多,代替集合迭代器的,简化书写代码

格式:

for(集合中存储的数据类型 变量名 : 集合对象){

使用这个变量名即可;

}

注意:

要使用增强for遍历集合,集合对象不能null;

防止空指针异常,在使用增强for之前,对集合进行非空判断!

21:List集合特点:

元素有序(存储和取出一致),而且元素可以重复!

22:Set集合:

元素唯一的,无序(存储和取出不一致)

23:List集合是Collection集合的子接口,它集合遍历方式:

1)Collection的Object[] toArray()

2)Collection的Iterator iterator() ;

3)使用size()+ 存储的数据类型 get(int index)通过角标获取元素内容 :普通for循环格式

4)ListIterator listIterator()List集合的专有遍历方式 :列表迭代器

5)增强for循环

24:使用List集合解决并发修改异常

解决方案:

1)集合遍历,集合添加

2)迭代器遍历,迭代器添加元素

List继承Collection--->Iterator是Collection的专有迭代器,没有提供添加功能,而

List集合专有遍历方式ListIterator:列表迭代器

25:Vector:底层数组,查询快,增删慢,线程安全的,执行效率低!

Vector集合的特有功能:

遍历方式:Collection的Object[] toArray()

Collection的Iterator iterator()

List接口提供的 size()+get(int index)

List接口提供的ListIterator listiterator()

特有遍历方式

public Enumeration elements()--->相当于集合的迭代器

Enumeration接口:枚举组件

boolean hasMoreElements()---->相当于boolean hasNext()

E nextElement() ---->相当于E next()

public E elementAt(int index)--->相当于List的get(int index)+size方法相结合

增强for

添加:

public void addElement(E obj)--->相当于List的add()

public E elementAt(int index)--->相当于List的get(int index)

26:Set接口特点:

无序(存储和取出不一致),不能保证迭代次序,但是可以唯一!

HashSet : 存储和取出,保证元素唯一!

---底层是HashMap实例(哈希表)

TreeSet : 存储和取出,同时需要进行排序的取出!

---底层是依赖TreeMap实例(红黑树结构)

HashSet集合依赖于HashMap---->间接与hash()---->依赖于hashCode(),put()方法--->equals方法

存储String类型,字符串重写过来equals和hashCode(),元素唯一!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值