1被final修饰的方法不能被重载
2finalize垃圾回收器将对象从内存中清除之前做必要的清理工作,这个方法在Object类中定义的,所以所有的类都会继承这个方法
3匿名内部类是没有名称的内部类,不能继承其他的类,但可以作为接口被其他内部类实现
4静态内部类(c++:statiic nest class;java:inner class)主要区别是是否能够指向外部类的引用上
如:Inner class (1)创建一个静态内部类的对象
(2)这个静态内部类不能引用外部类对象
5&是位运算符;&&是布尔逻辑运算符
6HashMap和Hashtable
同:
(1)都实现了Map接口
(2)实现了通过某一个键获取对应的内容
异:
(1)HashMap可以有一个null键和多个Null值;Hashtable不能有 null键和 null值
(2) HashMap是异步的;Hashtable是同步的,速度比较慢
7Collections和Collection区别:
(1)Collections是工具类,它包含了各种有关集合操作的静态方法
(2)Collection是接口,它是各种集合结构 的父接口
7switch()是一个整数表达式,参数可以是short int char byte;long 和 string都不行
8方法的参数是一个对象,该方法修改了这个对象的属性值,属于值传递,因为参数的值就是对象的引用,对象的内容虽然发生了变化,但是对象的引用却没有改变
9(x).equals(y)==true其hashcode一定是相同的,反之hashcode相同,x与y却不一定相同,所以如果一个集合中如果有多个对象的hashcode相同的话,那么会很大的影响到这个集合的性能
10try-catch-finally 如果try中有return那么finally会在return之前执行
11String类是java的内部类,又final修改,故不能被继承
12所有的子类构造器都要求在第一行调用父类的构造器,如果没有则调用默认的构造器
13int和Interger的区别
int (1)int是基本数据类型,默认初始化是
(2)使用时不用new一个对象,不需要额外的引用空间保存辅助信息
(3)由于不是类,所以没有相应的一些功能方法使用,在一些地方有局限
Interge (1)Interger是一个对象,是引用数据类型,默认初始值是null
(2)使用时通过new创建一个对象,需要额外的空间保存一些辅助信息
(3)封装了一些方法,可供使用
(4)自动进行封箱和拆箱(类型转换)
14重写方法时子类的修饰限定符等于或等于父类的修饰限定符
15字符流和字节流区别
(1)传输数据的“颗粒大小”
字节流:以字节位单位,传输的是一个字节或多个字节
字符流以字符为单位,传输是一个字符或多个字符
(2)传输数据的数据类型
字节流处理任意的数据类型如mp3,字符,图片,avi
字符流只能处理字符
(3)JDK为每种流提供的抽象类以供继承
字节流InputStream/OutputStream
字符流Reader和Writer
结论:只要处理纯的文本字符数据,就要优先使用字符流,其他的都使用字节流
16得到class的3中方法
(1)对象.getClass()
(2)类.class
(3)Class.forName("类名")
17事务特性:
(1)传播行为
a.PAFAGATION_SUPPORT如果当前有一个事务,那么就采取事务的方式进行处理,如果没有事务,就采用非事务的方式进行处理
b.PAFAGATION_NOT_SUPPORT如果当前有一个事务,那么挂起这个事务,以非事务的方式处理完后,再进行继续之前的事务处理
c.PAFAGATION_REQUIRED_NEW如果当前有一个事务,那么再创建一个新的,这两个事务是无关的,即子事务提交,父事务回滚,那么提交时也是会提交的
d.PAFAGATION_NESTED如果当前有一个事务,那么再创建一个新的,这两个事务是相依赖的,即子事务提交,父事务回滚,那么子事务也回滚
e.PAFAGATION_REQUERED如果有父事务,那么就使用它,如果没有父事务,那么就创建一个父事务,再使用它
f.PAFAGATION_MANATORY必须有一个父事务
g.PAFAGATION_NEVER不能有事务,如果有会报错
(2)隔离级别:
a.ISOLATION_READ_UNCOMMITTED(读未提交,会产生脏读、重复读、幻读)
b.ISOLATION_READ_COMMITTED(读已提交,避免了脏读)
c.ISOLATION_REPEATABLE_READ(避免了重复读)
d.ISOLATION_SEREALIABLE(顺序读,避免了幻读)
f:ISOLATION_DEFAULT默认 这个默认的隔离级别是和具体的数据库是相关的 不同的数据库有不能的默认隔离级别
(3)属性:隔离性(对应事务的隔离级别)、一致性、原子性、连续性
18
==(比较地址)
(1)对于基本数据类型来说,表示两个值是否相同
(2)对于引用数据类型来说,表示两个变量在推中的存储地址是否一样,即栈的内容是否相同
equals(比较内容)
(1)表示两个变量是否是同一个对象的引用,即堆中的内容是否一样
结论:内容相同地址可能不同即equals为true,==不一定为true
19对于堆和栈的初步理解
(1)函数的参数和局部变量存放在栈中
(2)全局变量和静态初始化变量存放在全局(静态)初始化区,全局和静态未初始化变量存放在全局(静态)未初始化区
(3)常量放在常量区
(4)在堆区分配内存区域
举一个实例程序来说明:
//main.cpp
int a = 0;//全局变量初始化区
char *p1;//全局变量未初始化
main()
{
int b;//栈
char s[] = "abc";//栈
char *p2;//栈
char *p3 = "123456";//123456/0在常量区,p3在栈上(栈中保存的是地址,指向堆区或常量区中的内容<这样理解不知道对还是不对,请指正,谢谢>)
static int c = 0;//全局(静态)初始化区
p1 = (char*)malloc(10);//在堆区中分配10个字节的区域
p2 = (char*)malloc(20);//在堆区中分配20个字节的区域
strcpy(p1,"123456") //编译器可能会对p1和p3进行优化,均指向同一个常量区中的内容
}
20接口和抽象类
从哪些方面进行比较 接口 抽象类
a.普通方法 公有的、没有方法体的 公有的,可以有方法体的也可以没有方法体的
1方法 b.静态方法 不能包含(静态方法为了让类名.静态方法名) 可以包含
c.构造方法---->(根据意义引出的静态代码块) 不能包含(构造方法为了实例化类,静态代码块也是在加载类的时候执行,均是为了给当前类中的属性赋值)
2常量 a.静态常量 可以包含静态常量常量(public static final) 可以
b.非静态常量 不可以(非static必须在实例化的时候调用) 可以
21StringBuffer是线程安全,重量级;StringBuilder是非线程安全,轻量级