下面程序的输出是:()
String x="fmn";
x.toUpperCase();
String y=x.replace('f','F');
y=y+"wxy";
System.out.println(y);
A.FmNwxy
B.fmnwxy
C.wxyfmn
D.Fmnwxy
解析:
正确答案: D
String x=“fmn”; “fmn”是在常量池里的不可变对象。
x.toUpperCase(); 在堆中new一个"FMN"对象,但无任何引用指向它。
String y=x.replace(‘f’,‘F’); 在堆中 new一个"Fmn"对象,y指向它。
y=y+“wxy”; 在堆中 重新new一个"Fmnwxy"对象, 修改y指向,现在y指向它。
字符串常量无法改变值,只能改变引用指向。
题目:
下列类定义中哪些是合法的抽象类的定义?()
A.abstract Animal{abstract void growl();}
B.class abstract Animal{abstract void growl();}
C.abstract class Animal{abstract void growl();}
D.abstract class Animal{abstract void growl(){System.out.println( “growl”);};}
解析:
正确答案: C
- 首先,类的修饰符,都应该在class关键字之前,AB错;
- 抽象方法不能有方法体,D错。
题目:
以下描述错误的一项是( )? A.程序计数器是一个比较小的内存区域,用于指示当前线程所执行的字节码执行 到了第几行,是线程隔离的 B.原则上讲,所有的对象都是在堆区上分配内存,是线程之间共享的 C.方法区用于存储JVM加载的类信息、常量、静态变量,即使编译器编译后的代码等数据,是线程隔离的 D,Java方法执行内存模型,用于存储局部变量,操作数栈,动态链接,方法出口等信息,是线程隔离的解析:
正确答案: C
JAVA的JVM的内存可分为3个区:堆(heap)、栈(stack)和方法区(method)
栈区:
每个线程包含一个栈区,栈中只保存方法中(不包括对象的成员变量)的基础数据类型和自定义对象的引用(不是对象),对象都存放在堆区中
每个栈中的数据(原始类型和对象引用)都是私有的,其他栈不能访问。
栈分为3个部分:基本类型变量区、执行环境上下文、操作指令区(存放操作指令)。
堆区:
存储的全部是对象实例,每个对象都包含一个与之对应的class的信息(class信息存放在方法区)。
jvm只有一个堆区(heap)被所有线程共享,堆中不存放基本类型和对象引用,只存放对象本身,几乎所有的对象实例和数组都在堆中分配。
方法区:
又叫静态区,跟堆一样,被所有的线程共享。它用于存储已经被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。
题目:
抽象类方法的访问权限默认都是public。( ) A.正确 B.错误解析:
正确答案: B
关于抽象类
JDK 1.8以前,抽象类的方法默认访问权限为protected
JDK 1.8时,抽象类的方法默认访问权限变为default关于接口
JDK 1.8以前,接口中的方法必须是public的 JDK 1.8时,接口中的方法可以是public的,也可以是default的
JDK 1.9时,接口中的方法可以是private的
题目:
ResultSet中记录行的第一列索引为? A.-1 B.0 C.1 D.以上都不是解析:
答案:C
ResultSet跟普通的数组不同,索引从1开始而不是从0开始
题目:
下列不是 Java 关键字的是 ( ) A.abstract B.false C.native D.sizeof解析:
正确答案: B D
Java中的关键字有哪些?
答:1)48个关键字:abstract、assert、boolean、break、byte、case、catch、char、class、continue、default、do、double、else、enum、extends、final、finally、float、for、if、implements、import、int、interface、instanceof、long、native、new、package、private、protected、public、return、short、static、strictfp、super、switch、synchronized、this、throw、throws、transient、try、void、volatile、while。
2)2个保留字(现在没用以后可能用到作为关键字):goto、const。
3)3个特殊直接量:true、false、null。
题目:
在Java线程状态转换时,下列转换不可能发生的有()? A.初始态->运行态 B.就绪态->运行态 C.阻塞态->运行态 D.运行态->就绪态解析:
正确答案: A C
只有就绪态和运行态可以直接相互转换,其他都是单向的。
题目:
下面有关forward和redirect的描述,正确的是() ? A.forward是服务器将控制权转交给另外一个内部服务器对象,由新的对象来全权负责响应用户的请求 B.执行forward时,浏览器不知道服务器发送的内容是从何处来,浏览器地址栏中还是原来的地址 C.执行redirect时,服务器端告诉浏览器重新去请求地址 D.forward是内部重定向,redirect是外部重定向 E.redirect默认将产生301 Permanently moved的HTTP响应解析:
正确答案: B C D
1.从地址栏显示来说
forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器.浏览器根本不知道服务器发送的内容从哪里来的,所以它的地址栏还是原来的地址.
redirect是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址.所以地址栏显示的是新的URL.2.从数据共享来说
forward:转发页面和转发到的页面可以共享request里面的数据.
redirect:不能共享数据.3.从运用地方来说
forward:一般用于用户登陆的时候,根据角色转发到相应的模块.
redirect:一般用于用户注销登陆时返回主页面和跳转到其它的网站等.4.从效率来说
forward:高.
redirect:低.



