java中常见问题
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元素,具有良好的存取和查找性能
相关文章