java中常见问题

  1. new 对象说明

new对象开辟新的空间值

构造方法

1.系统会自己创建无参构造方法的,要使用无参构造,this表示当前shiliehua变量

2.同一个类中,可以通过this调用无参构造方法

封装

1.需要隐藏对象的信息,不允许外部程序直接访问

2.通过该类提供的方法来实现对隐藏信息的操作和访问

3.隐藏对象信息

4.留着访问的接口

5.只能通过特定的方法使用

static

1.被static关键字修饰的方法或者变量不需要依赖于对象来进行访问,只要类被加载了,

就可以通过类名去进行访问。虽然在静态方法中不能访问非静态成员方法和非静态成员变量,

但是在非静态成员方法中是可以访问静态成员方法/变量的

 

2.静态代码块>构造代码块>构造方法

方法重载,重写,继承,super关键字,多态

a.方法重载

1.同一个类中

2.方法名相同,参数列表不同(参数顺序,个数,类型不一致)

3.方法返回值,访问修饰符任意

b.方法重写

1.有子类继承关系

2.方法名相同,方法参数完全相同(参数顺序,个数,类型),方法返回值相同

3.与方法的参数名无关的哦哦哦

c 继承

1.单继承  extends 关键字

2.子类(派生类)    父类(超类,基类)

d.super关键字

1.可以在类方法和对象方法中使用

2.在对象方法中可以使用super关键字,调用当前对象从父类继承中过来的方法名。

e.多态

1.必须要有继承关系

异常,try-catch-finally

1.程序出现编译期间异常

2.try-catch-finally

  try块后可接零个或者多个catch块,如果没有catch块,则必须跟一个finally块

  try-catch多重捕获是,exception应该放在最后面的哦

String   与StringBuffer,StringBuilder,JAVA集合List、Map、Set——Map

1.是否可变的角度

a.   String类中使用字符数组保存字符串,因为有“final”修饰符,所以String对象是不可变的。

b.   StringBuffer和StringBuilder都继承自AbstractStringBuilder类,在AbstractStringBuilder中也是使用字符数组保存字符串,但没有“final”修饰符,所以两种对象都是可变的。

2.是否多线程安全

a.String中的对象是不可变的,也就可以理解为常量,所以是线程安全的

AbstractStringBuilder是StringBuffer和StringBuilder的公共父类,定义了一些字符串的基本操作,如append、insert、indexOf等公共方法。

 

StringBuffer对方法加了同步锁(synchronized) ,所以是线程安全的
 

public synchronized StringBuffer append(String str)

    toStringCache = null;

    super.append(str);

    return this;

}

StringBuilder并没有对方法进行加同步锁,所以是非线程安全的

public StringBuilder append(String str) {
     super.append(str);
     return this;
}

3.map是通过键值对的形式,key-value形式

每一对键值对以Entry对象形式保存

key可以重复,value不可以重复

 

HashMap

底层数据结构:数组+链表

 

list  java.utli

a.list数据源进行替换操作
 

注意 .set(index, element); 和 .add(index, element); 的不同;

b.利用list中索引位置重新生成一个新的list(截取集合);
 

.subList(fromIndex, toIndex);

c.ArrayList动态插入的时候,在列表中尾部,删除数据有用的
 

d.HashSet是set的一个重要实现类,称为哈希集,Hashset中的元素无序并且不可重复,HashSet中只允许一个null元素,具有良好的存取和查找性能


点赞