1.预留关键字:
const goto 是java的预留关键字,就是现在java语言中没有使用这两个单词,单词没有特殊的含义,将来用不用不知道。
2.变量在内存【jvm的内存】中的体现:
jvm的内存划分【jvm运行时的数据区划分】
1.寄存器:存放执行程序的指令地址【基本上是系统来管理】
2.本地方法栈:为执行本地的方法来服务的资源【由系统管理的】
3.栈内存:加载java的方法的相关信息并执行方法的区域
4.堆内存:加载类对象的相关信息的
5.方法区:加载类的相关信息、静态信息、常量池等信息
3.静态变量和非静态变量的区别
①.所属不同:
静态变量:属于类
非静态变量:
全局变量:属于对象
局部变量:属于方法
②.内存中的位置不同:
静态变量:存储在方法区的静态区
非静态变量:
全局变量:堆空间的对象空间里
局部变量:栈空间的方法中
③.声明周期不一样:
静态变量:随着类的加载而加载,随着类的消失而消失
非静态变量:
全局变量:随着对象的创建而创建,随着对象的消失而消失
局部变量:随着方法的调用而产生,随着方法的执行完毕就消失
④.访问方式不一样
静态变量:类名.属性名 或者类名.getter和setter方法
非静态变量:
全局变量:对象名.属性名或者对象名.getter和setter方法,或者直接使用
局部变量:直接使用变量名使用。
4.重载和重写的对比:
重载:
①.同一类中
②.方法名相同
③.参数列表不同
重写:
①.在两个类中【子父类】
②.方法名相同
③.参数列表相同
④.返回值类型相同
⑤.修饰符可以不同但是子类的权限大于等于父类的权限
5.==和equals的区别:
==:可以比较所有的数据类型
基本数据类型:比较的就是数值大小
引用数据类型:比较的对象的地址值的大小【本质比较的还是值得大小】
注意:Object类得equals方法底层其实使用的就==比较,所以地址值的比较
equals():只能比较引用数据类型的对象,不能比较基本数据类型
类中没有重写equals方法:
调用就是父类【Object】中的equals方法比较的是地址值
类中冲洗equals方法:比较的是对象中属性的内容值是否一致。
6.StringBuilder和StringBuffer的对比:
相同点:
1.他们都是字符串缓冲区,它里面的字符串可以改变
2.他们的功能是一摸一样的,使用也是一摸一样的使用方法
不同点:
1.出现的时机不同【StringBuffer是早期出现】
2.StringBuffer是线程安全的,效率是低的
3.StringBuilder是线程不安全的,效率高
7.集合和数组的对比:
数组:
创建后只能存放单一数据类型【所有的数据类型】创建前可以存放任意数据类型
创建后长度不能改变
基本上没有功能【方法】
集合:
属于类和接口体系【本身也是引用数据类型】
集合只能存放引用数据类型,不能存放基本数据类型
集合长度自动维护,所以可变
集合拥有自己的操作方法
8.List中set方法和add方法对比:
add方法是一个插入方法,会使集合的元素增加不是覆盖行为
set方法是一个修改方法,不会使集合的元素增加是一个覆盖行为
9.HashMap和HashTable的不同:
相同点:都是Map集合的典型实现类
功能的使用是一摸一样的
不同点:
①:出现的时间不同【HashTable早于HashMap】
②:HashTable是线程安全的,HashMap是线程不安全的
③:HashTable是效率低的,HashMap是效率搞得
④:HashTable的key和value不支持null值;HashMap支持null值
10.缓冲流的两个方法close()和flush()对比:
相同点:都可以刷新缓冲区,将内容书写到目标文件中
不同点:
flush():
1.刷新缓冲区,调用者是输出缓冲流对象属于输出缓冲流
2.flush方法调用后io流的对象继续存在,并能顾继续使用close();
close():
1.关闭流对象的,调用者可以是所有流对象,属于所有io流
2.close方法调用io流对象就消失了,不能使用,再使用会streamclsed异常
注意事项:
flush方法虽然有刷新缓冲区的作用,但是不建议频繁使用。频繁的使用消除了缓冲区的作用。