1.k=20;k+=k-=k-k;求k
实际上是在考运算符的优先级。答案应该是40.
注意 举例++,++在左,操作数先加一,然后放入表达式中运算。++在右,先把操作数放入表达式运算,然后再加一。
2.class A extends DemoOne,DemoTwo{}
这样写是不对的,一个类不可以同时继承两个类,因为javaz中不支持多继承。
3.抽象类 abstract 不可以被实例化,可以继承一个类,实现多个接口。
4.重载和重写
重载(overload)是多个同名函数同时存在于一个类中,具有不同的参数个数/类型。注意重载方法的返回值都一样。所以不能用返回值区分重载方法
重写(override)是父类与子类之间多态的体现,子类中定义某方法与父类中的某方法具有相同的方法名,返回值类型和参数表,该方法被重写。新方法覆盖原有方法,所以方法重写又叫做方法覆盖。
5.集合的继承关系
6.类中的方法,可以与类同名,但是这是一个坏习惯。
7.jdbc中sql语句的执行结果存放在哪个类中?ResultSet
8.collection接口的方法
,注意compareTo()方法并不是Collection接口定义的。
9.基本数据类型的范围
byte类型整数,-128~127
short类型整数:-32768~32767
int类型整数:
long类型整数:
char类型:char=97,char='aa'都可,但是char="aa";不可以
flaot和double的区别是
在内存中占有的字节数不同
单精度浮点数在机内占4个字节
双精度浮点数在机内占8个字节
有效数字位数不同
单精度浮点数有效数字8位
双精度浮点数有效数字16位
所能表示数的范围不同
单精度浮点的表示范围:-3.40E+38 ~ +3.40E+38
双精度浮点的表示范围:-1.79E+308 ~ +1.79E+308
boolean :boolean a =null;是不对的,Boolean a=(Boolean)null;才可以。
10.java的关键字
数据类型:
Boolean(布尔型)int long short byte float double char class interface(接口)
流程控制:
if else do while for switch case default break continue return try(捕获异常) catch(处理异常) finally(有没有处理异常都执行)
修饰符:
public protected private final void static strictfp(严格 精确) abstract(抽象的 transient(短暂) synchronized(线程 同步) volatile(易失) native(本地)
动作:
package import(引入) throw(抛出一个异常对象 throws(声明一个异常对象 可能被抛出) extends(继承) implements(实现) this(本类) super(父类 超类) instanceof(实例) new
11.类的作用域
注意private可以被继承,但是不能被子类访问。
作用域 当前类 同一package 子孙类 其他package
public √ √ √ √
protected √ √ √ ×
default是同一个包下可访问。
private √ × × ×
12.final static abstract
final可继承,不可重写
static不可以修饰类和构造器
abstract
13.forward与redirect的区别
也就是forward内部跳转 和redirect重定向跳转的区别
第一,forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器.浏览器根本不知道服务器发送的内容从哪里来的,所以它的地址栏还是原来的地址.
redirect是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址.所以地址栏显示的是新的URL.
第二,从数据共享来说,forward:转发页面和转发到的页面可以共享request里面的数据.,redirect:不能共享数据.
第三,从效率来说,forward:高,redirect:低.
14.error与Exception的区别
Error类和Exception类的父类都是throwable类,他们的区别是:
Error类一般是指与虚拟机相关的问题,如系统崩溃,虚拟机错误,内存空间不足,方法调用栈溢等。对于这类错误的导致的应用程序中断,仅靠程序本身无法恢复和和预防,遇到这样的错误,建议让程序终止。
Exception类表示程序可以处理的异常,可以捕获且可能恢复。遇到这类异常,应该尽可能处理异常,使程序恢复运行,而不应该随意终止异常。
Exception类又分为运行时异常(Runtime Exception)和受检查的异常(Checked Exception ),运行时异常;ArithmaticException,IllegalArgumentException,编译能通过,但是一运行就终止了,程序不会处理运行时异常,出现这类异常,程序会终止。而受检查的异常,要么用try。。。catch捕获,要么用throws字句声明抛出,交给它的父类处理,否则编译不会通过。
15.数据库连接池的工作原理
连接池的核心思想是连接的复用,通过建立一个数据库连接池以及一套连接使用、分配和管理策略,使得该连接池中的连接可以得到高效,安全的复用,避免了数据库连接频繁建立和关闭的开销。
连接池的工作原理主要由三部分组成,分别为连接池的建立,连接池中连接的使用管理,连接池的关闭。
第一、连接池的建立。一般在系统初始化时,连接池会根据系统配置建立,并在池中建立几个连接对象,以便使用时能从连接池中获取,连接池中的连接不能随意创建和关闭,这样避免了连接随意建立和关闭造成的系统开销。java中提供了很多容器类,可以方便的构建连接池,例如Vector,stack等。
第二、连接池的管理。连接池管理策略是连接池机制的核心,连接池内连接的分配和释放对系统的性能有很大的影响。其策略是:
当客户请求数据库连接时,首先查看连接池中是否有空闲连接,如果存在空闲连接,则将连接分配给客户使用;如果没有控线连接,则查看当前所开的连接数是否已经达到最大连接数,例如如果没有达到就重新创建一个请求的客户;如果达到,就按设定的最大等待时间进行等待,如果超出最大等待时间,则抛出异常给客户。
当客户释放数据库连接时,先判断该连接的引用次数是否超过了规定值,如果超过了就从连接池中删除该连接,否则就保留为其他客户服务。该策略保证了数据库连接的有效复用,避免了频繁建立释放连接所带来的系统资源的开销。
第三、连接池的关闭。当应用程序退出时,关闭连接池中所有的链接,释放连接池相关资源,该过程正好与创建相反。
转自(http://www.cnblogs.com/newpanderking/p/3875749.html)