1.文件流中read 与readLine 的区别
read方法功能:读取单个字符。 返回:作为一个整数(其范围从 0 到 65535 (0x00-0xffff),返回文件中所有内容的char型码,如果已到达流末尾,则返回 -1
readLine方法功能:读取一个文本行。通过下列字符之一即可认为某行已终止:换行 ('\n')、回车 ('\r') 或回车后直接跟着换行。 返回:包含该行内容的字符串,不包含任何行终止符,如果已到达流末尾,则返回 null
2.Math.floor
floor -- 原意 地板。
数学函数,求一个浮点数的地板,就是求一个最接近它的整数,它的值小于或等于这个浮点数。
例如: Math.floor(0.60) -- 0 Math.floor(0.40) -- 0 Math.floor(5) -- 5 Math.floor(5.1) -- 5 Math.floor(-5.1) -- -6 Math.floor(-5.9) -- -6
3.静态方法和静态代码块
一个类可以使用不包含在任何方法体中的静态代码块,当类被载入时,静态代码块被执行,且只被执行一次,静态块常用来执行类属性的初始化.
在继承中,静态代码块内容先执行,接着执行父类非静态代码块和构造方法,然后执行子类非静态代码块和构造方法。
使用类的静态方法时,注意:
a在静态方法里只能直接调用同类中其他的静态成员(包括变量和方法),而不能直接访问类中的非静态成员。这是因为,对于非静态的方法和变量,需要先创建类的实例对象后才可使用,而静态方法在使用前不用创建任何对象。
b 静态方法不能以任何方式引用this和super关键字,因为静态方法在使用前不用创建任何实例对象,当静态方法调用时,this所引用的对象根本没有产生。
class Parent{ static String name = "hello"; { System.out.println("parent block"); } static { System.out.println("parent static block"); } public Parent(){ System.out.println("parent constructor"); } } class Child extends Parent{ static String childName = "hello"; { System.out.println("child block"); } static { System.out.println("child static block"); } public Child(){ System.out.println("child constructor"); } } public class StaticIniBlockOrderTest { public static void main(String[] args) { new Child();//语句(*) } } 当执行完语句(*)时,打印结果是这样一个顺序 : parent static block child static block parent block parent constructor child block child constructor
4.创建并使用一个类的流程
a.编译java源文件,在硬盘上生成一个二进制.class文件
b.jvm加载.class文件,将类读入一块内存(方法区)中
c.应用程序调用方法区的类及其方法。
5.关于代码出现问题的解决思路:
a.认真看出错提示 b.从类,方法出发找错误原因,一定要看完整个流程
c.catch要放在文件最后 d.测试时返回一个正确的值 e.get set的对象初始化一个,不要上面声明一下,下面又初始化一个
6.hibernate的一级缓存机制和延缓加载机制
一级缓存机制:a.如果session被查询,session会先到缓存中查找是否有被查询的对象,如果有,则取出,没有则从数据库里面查询
b.session需要实时维护在缓存中的数据,保证缓存中的数据跟数据库的数据的一致性,一旦用户对缓存的数据进行更改,session会立即将数据更新到数据库
延缓加载机制:a.当访问实体对象的时候,并不是立即到数据库中查找,而是在真正需要的使用实体对象时候,才去数据库查找数据。(返回一个代理对象,其中没有数据,但是做好了取数据的准备)