目录
在 myjsp.jsp 中,关于下面的代码说法错误的是: ( )
下面有关forward和redirect的描述,正确的是() ?
以下代码段执行后的输出结果为
public class Test {
public static void main(String args[]) {
int x = -5;
int y = -12;
System.out.println(y % x);
}
}
正确答案: D 你的答案: D (正确)
-1
2
1
-2
来源:https://www.nowcoder.com/questionTerminal/7b4ec6887dc04af992ce10dadfb532bb
Y(被除数) % X(除数)
当除数与被除数的符号相同时,取余和取模的结果是完全相同的; 当除数与被除数的符号不相同时,结果不同。
具体说,取余结果的符号与被除数相同;取模结果的符号与除数相同。
1.取余 rem(3,2)=1 rem(-3,-2)=-1 rem(3,-2)=1 rem(-3,2)=-1
2.取模 mod(3,2)=1 mod(-3,-2)=-1 mod(3,-2)=-1 mod(-3,2)=1
java语言的下面几种数组复制方法中,哪个效率最高?
正确答案: B 你的答案: D (错误)
for 循环逐一复制
System.arraycopy
Array.copyOf
使用clone方法
来源:https://www.nowcoder.com/questionTerminal/e7c2d52c9cf0476bbba6aae6713dd303
总结:
(1)从速度上看:System.arraycopy > clone > Arrays.copyOf > for
(2)for的速度之所以最慢是因为下标表示法每次都从起点开始寻位到指定下标处(现代编译器应该对其有进行优化,改为指针),另外就是它每一次循环都要判断一次是否达到数组最大长度和进行一次额外的记录下标值的加法运算。
(3)查看Arrays.copyOf的源码可以发现,它其实本质上是调用了System.arraycopy。之所以时间差距比较大,是因为很大一部分开销全花在了Math.min函数上了。public static byte[] copyOf(byte[] original, int newLength) { byte[] copy = new byte[newLength]; System.arraycopy(original, 0, copy, 0, Math.min(original.length, newLength)); return copy; }
(4)查看System.arraycopy的源码,可以发现它实质上是通过Jni调用本地方法,及c/c++已经编译成机器码的方法,所以快。
public static native void arraycopy(Object src, int srcPos, Object dest, int destPos, int length);
(5)native方法,但并未手写,需要JNI转换。
在 myjsp.jsp 中,关于下面的代码说法错误的是: ( )
<%@ page language="java" import="java.util.*" errorPage="error.jsp" isErrorPage="false" %>
正确答案: A 你的答案: C (错误)
该页面可以使用 exception 对象
该页面发生异常会转向 error.jsp
存在 errorPage 属性时,isErrorPage 是默认为 false
error.jsp 页面一定要有isErrorPage 属性且值为 true
来源:https://www.nowcoder.com/questionTerminal/b07dfbf3f5d7428aacb7387f48084030
exception是JSP九大内置对象之一,其实例代表其他页面的异常和错误。
只有当页面是错误处理页面时,即isErroePage为 true时,该对象才可以使用。
对于C项,errorPage的实质就是JSP的异常处理机制,发生异常时才会跳转到 errorPage指定的页面,没必要给errorPage再设置一个errorPage。
所以当errorPage属性存在时, isErrorPage属性值为false
下面代码的输出是什么?
public class Base
{
private String baseName = "base";
public Base()
{
callName();
}
public void callName()
{
System. out. println(baseName);
}
static class Sub extends Base
{
private String baseName = "sub";
public void callName()
{
System. out. println (baseName) ;
}
}
public static void main(String[] args)
{
Base b = new Sub();
}
}
正确答案: A 你的答案: B (错误)
null
sub
base
来源:https://www.nowcoder.com/questionTerminal/c2bfb1512dfa4a7eab773a5871a52402
new Sub()