错题集day01
Day80_错题集
先定个小目标:每天做20-30道题把。加油
1、局部内部类可以用哪些修饰符修饰?
abstract 和final
局部内部类式放在代码块或者方法中的。不能有访问控制修饰符,也不能用static修饰。
2、指出下来程序运行的结果是

因为String是被final修饰的类,所以本身的内容是不会改变的,相当于基本数据类型的值传递,在changge方法中给str赋值了“test”,相当于重新创建了一个string类型的变量。
字符型char是可变的。所以变成了gbc
最后输出 good and gbc。
3、如下哪些是 java 中有效的关键字()
native 和 this。
这个关键字常见的坑:
true、false、null都不是关键字
goto、const、是保留的关键字
abstract continue for new
switch default if package
synchronized do goto private
this break double implements
protected throw byte else
import public throws case
enum instanceof return transient
catch extends int short
try char final interface
static void class finally
long strictfp volatile const
float native super while
boolean assert
4、运行代码,结果正确的是:输出true
Boolean flag = false;//赋值flag => false
if(flag = true){//这里flag = true 是赋值操作,flag =>true 后 再判断是否为正确, 所以输出true
System.out.println("true");
}
else{
System.out.println("false");
}
5、transient 变量和下面哪一项有关?
Serializable
和序列化有关,这是一个空接口,起标记作用,具体的序列化由ObjectOutputStream和ObjectInputStream完成。transient修饰的变量不能被序列化,static变量不管加没加transient都不可以被序列化。
6、对于线程局部存储TLS(thread local storage),以下表述正确的是
解决多线程中的对同一变量的访问冲突的一种技术
TLS会为每一个线程维护一个和该线程绑定的变量的副本
Java平台的java.lang.ThreadLocal是TLS技术的一种实现
上面这三个是对的。
这个是错的-- >>每一个线程都拥有自己的变量副本,从而也就没有必要对该变量进行同步了
如果ThreadLocal本地变量的类型是不变类(如 String,Integer,Long等)或线程绝对安全的类,那么在多线程下访问同一个ThreadLocal本地变量时是不需要进行同步的,否则就算是相对线程安全的类(如Vector等)还是需要进行同步的。
7、 假设a 是一个由线程 1 和线程 2 共享的初始值为 0 的全局变量,则线程 1 和线程 2 同时执行下面的代码,最终 a 的结果不可能是1
boolean isOdd = false;
for(int i=1;i<=2;++i){
if(i%2==1){
isOdd = true;
}
else {
isOdd = false;
a+=i*(isOdd?1:-1);
}
}
不管怎样线程对a的操作就是+1后-2
1.线程1执行完再线程2执行,1-2+1-2=-2
2.线程1和2同时+1,再-2不同时,1-2-2=-3
3.线程1和2不同时+1,同时-2,1+1-2=0
4.线程1和2既同时+1又同时-2,1-2=-1
没有结果为1的情况
8、java8中,下面哪个类用到了解决哈希冲突的开放定址法
ThreadLocal
ThreadLocal使用开放定址法解决hash冲突,
HashMap使用链地址法解决hash冲突
9、给定includel.isp文件代码片段,如下:
<% pageContext.setAttribute(“User”,”HAHA”);%>
________________________________ // 此处填写代码
给定include2.jsp文件代码片段如下:
<%=pageContext.getAttribute(“User”)%>
要求运行include1.jsp时,浏览器上输出:HAHA
<%@include file=”include2.jsp”%> -->>>静态包含,相当于不include2.jsp页面内容拷贝到此处,因此可以输出User属性值
<jsp:include page=”include2.jsp” flash=”true”> flash,这是浏览器插件名,不是include指令的属性
<jsp:forward page=”include2.jsp”> 请求转到一个新的页面, 题目用的是page域对象:pageContext,pageContent属性作用范围:仅限于当前jsp页面。所以跳转到其他页面的时候,就没办法起作用了
<% response.sendRedirect(“include2.jsp”); %> 转发重定向,转发的时候pageContent内的属性值不能被传递,因此得不到User属性值
跟上面这个一样。

浙公网安备 33010602011771号