1,java作用域
作用域 当前类 同一package 子孙类 其他package
public √ √ √ √
protected √ √ √ ×
default √ √ × ×
private √ × × ×
2,ceil(天花板)表示向上取整,floor(地板)表示向下取整,round四舍五入
3,Servlet的生命周期init service doGet和doPost destory
4,SOA面向服务架构:服务即功能所以可以说是面向功能架构。功能又是以接口的形式表现出来,所以也可以是面向接口架构。
优点是1跨语言2,解耦合
5,线程之间的通信方式 ①全局变量 ②参数 ③消息队列 ④同步 sychronized ⑤while循环轮查 ⑥wait/notify
6,abstract和interface的区别
首先接口是特殊的抽象类
类型 抽象类 接口
普通成员变量 √ ×
静态成员变量 √ public static final
抽象方法 public protect public abstract
非抽象方法 √ ×
构造方法 √ ×
静态方法 √ ×
继承一个抽象类 实现多个接口
7,==和equal的区别
equal是对对象的内容进行比较的,可以判断两个对象的内容是否相同。
而==则是对基本数据类型或者引用类型进行比较,判断两个数据的值是否相同,如果对对象进行==则是判断两个对象是否为同一对象。
8.当str.getBytes("GBK")后对char[i]和0比较小于0则为汉字
9,创建线程的两个方法
new Thread(){run()}.start new Thread(new Runnable(){ run() } ){}.start
10,常见的运行时异常 越界(数组char) 类找不到 空指针 类型转换异常
11,lock具有sychronize的全部功能,但是lock需要手动释放(在finally)
12,final全局变量,初始化必须赋值
13,转型时 编译看左边,运行看右边
14,静态内部类不可以直接访问外围的非静态数据,非静态内部类可以直接访问外围类的数据,包括私有数据
15,子类覆盖父类要遵循“两同两小一大”(从返回值类型着手)返回值类型与父类不一致,所以不可能是方法的重写
“两同”即方法名相同,形参列表相同
“两小”指的是子类方法返回值类型应比父类方法返回值类型更小或相等,子类方法声明抛出的异常类应比父类方法声明抛出的异常类更小或相等。
(注:看到有网友有这样的疑问,父类方法返回值是double,子类修改成int为什么不行呢?
这是因为返回值类型更大或者更小,是对于同一类型而言的。也就是说,返回值的类型需要有继承关系才去考虑大小这个概念。类型不同,肯定不是方法重写)
“一大”指的是子类方法的访问权限应比父类方法的访问权限更大或相等。
注意:覆盖方法和被覆盖方法要么都是类,法,要么都是实例方法,不能一个是类方法一个是实例方法,否则编译出错。
16,Java 类执行顺序:1,父类的静态变量和静态块赋值(按照声明顺序)2,自身的静态变量和静态块赋值(按照声明顺序)3,父类成员变量和块赋值(按照声明顺序)4,父类构造器赋值5,自身成员变量和块赋值(按照声明顺序)6,自身构造器赋值
17,创建Statement是不传参的,PreparedStatement是需要传入sql语句
Statement sta=con.createStatement();<br>ResultSet rst=sta.executeQuery(“select * from book”);
PreparedStatement pst=con.prepareStatement(“select * from book”); ResultSet rst=pst.executeQuery();
18、子类的构造方法总是先调用父类的构造方法,如果子类的构造方法没有明显地指明使用父类的哪个构造方法,子类就调用父类不带参数的构造方法。
而父类没有无参的构造函数,所以子类需要在自己的构造函数中显示的调用父类的构造函数。
构造函数不能被继承,构造方法只能被显式或隐式的调用。