1、public、protect、private以及不声明私有性之间区别?
私有性
当前类
同一包下
子孙类
其他类
public
√
√
√
√
protect
√
√
√
×
friendly
√
√
×
×
private
√
×
×
×
不声明时是friendly级别
2、ArrayList和Vector的区别,HashMap和Hashtable的区别?
ArrayList
a.异步,非线程安全;b.由于非同步,性能好;c.数据超过本身容量,只会按本身容量的50%增加,节约内存空间
Vector
a.同步,线程安全;b.由于同步,性能不好;③数据超过本身容量,会翻倍增加,耗内存空间
HashMap
a.异步,非线程安全;b.由于非同步,性能好
HashTable
a.同步,线程安全;b.由于同步,性能不好
3、char型变量能不能定义为一个中文?为什么?
char型变量是用来存储Unicode编码的字符的,unicode编码字符集中包含了汉字,所以,char型变量中当然可以存储汉字啦。
不过,如果某个特殊的汉字没有被包含在unicode编码字符集中,那么,这个char型变量中就不能存储这个特殊汉字。
补充说明:unicode编码占用两个字节,所以,char类型的变量也是占用两个字节。
4、多线程有几种表示方法,都是什么?同步有几种实现方法,都是什么?
多线程有两种实现方法:
方法一:继承Thread类,重写方法run();
方法二:实现Runnable接口,实现方法run();
实现同步有几种方法:
例如:synchronized,wait,notify都可以实现同步。
5、内部类的实现方式?
6、垃圾回收机制,如何优化程序?
程序无法控制直接进行回收,但可以间接设置进行回收,有以下几种方式:
a.将对象设置成null,比如:
student=null
b.重新为引用变量赋值,比如:
Student student = new Student()
student = new Student();
c.对于“三角恋”关系,比如:
Student a = new Student();
Student b = new Student();
Student c = new Student();
a = b;
b = c;
c = a;
以上就是属于“三角恋”关系,如何进行间接设置回收:
a = null;b=null;c=null;
这样就都会在堆上,会被回收。
d.强制回收,System.gc():
但也不能保证立即回收。
7、float型float f=3.4是否正确?
不正确。
精度不准确,应该用强制类型转换,如下所示:float f=(float)3.4 或float f = 3.4f
在java里面,没小数点的默认是int,有小数点的默认是 double;
编译器可以自动向上转型,如int 转成 long 系统自动转换没有问题,因为后者精度更高
double 转成 float 就不能自动做了,所以后面的加上个 f
=========jsp=======
1、jsp有哪些内置对象?作用分别是什么?
九大内置对象,分别为:
Page,pageContext,request,response,session,application,out,config,exception
Page指的是JSP被翻译成Servlet的对象的引用.
pageContext对象可以用来获得其他8个内置对象,还可以作为JSP的域范围对象使用.pageContext中存的值是当前的页面的作用范围》
request代表的是请求对象,可以用于获得客户机的信息,也可以作为域对象来使用,使用request保存的数据在一次请求范围内有效。
Session代表的是一次会话,可以用于保存用户的私有的信息,也可以作为域对象使用,使用session保存的数据在一次会话范围有效
Application:代表整个应用范围,使用这个对象保存的数据在整个web应用中都有效。
Response是响应对象,代表的是从服务器向浏览器响应数据.
Out:JSPWriter是用于向页面输出内容的对象
Config:指的是ServletConfig用于JSP翻译成Servlet后 获得Servlet的配置的对象.
Exception:在页面中设置isErrorPage=”true”,即可使用,是Throwable的引用.用来获得页面的错误信息。
2、jsp有哪些动作?作用分别是什么?
6种动作,分别是:
sp:include:在页面被请求的时候引入一个文件。
jsp:useBean:寻找或者实例化一个JavaBean。
jsp:setProperty:设置JavaBean的属性。
jsp:getProperty:输出某个JavaBean的属性。
jsp:plugin:根据浏览器类型为Java插件生成OBJECT或EMBED标记。
jsp:forward:把请求转到一个新的页面。
1)两种跳转方式区别
a.forward跳转: forward跳转:服务器端跳转,地址栏不改变;
b.response跳转:response.sendRedirect("跳转页面地址"); response跳转:客户端跳转,地址栏改变;
request.getRequestDispatcher("/message.jsp").forward(request, response);
2)两种include方式区别:
有两种实现方法,动态,静态。
动态:用于包含动态页面,并且可以随时检查页面的变化,采用jsp:include动作可以实现,例如:
静态,适合于包含静态页面,不检查页面的变化,采用include伪码实现
=========servlet=======
1、说一说Servlet的生命周期?
a.加载和实例化:创建servlet对象
b.初始化init:建立数据库连接,初始化参数,从ServletConfig拿
c.服务service:处理业务逻辑
d.销毁destory:Servlet从服务中被移除时进行销毁
2、Servlet版本间的不同?
太多不同,我只记得2.5以上的servlet可以多个url映射到同一个servlet
=========jdbc=======
1、连接jdbc的基本流程
a.加载驱动:
Class.forName(driverClass)
b.创建连接:
Connection conn=DriverManager.getConnection(URL, USER, PASSWORD);
c.获取statement或者prepareStatement:
Statement st=conn.createStatement();
或者
PreparedStatement pst=conn.prepareStatement(sql);
d.执行sql:
ResultSet rs=st.executeQuery("select * from user");
或者
pst.execute();
2、Class.forName的作用?为什么要用?
Class.forName(xxx.xx.xx) 返回的是一个类,Java里面任何class都要装载在虚拟机上才能运行。这句话就是装载类用的
A a = (A)Class.forName("pacage.A").newInstance();
这和你A a = new A();是一样的效果。
最后用最简单的描述来区分new关键字和newInstance()方法的区别:
newInstance: 弱类型。低效率。只能调用无参构造。
new: 强类型。相对高效。能调用任何public构造。
=========xml=======