Java堆描述正确的是_Java面试题 每日一练(4.9)

本文介绍了Java内存区域的相关知识,包括堆内存的作用、变量的存储位置,并提供了多道Java面试题,涵盖数据类型转换、驱动加载方式、线程状态转换、数组特性等知识点,帮助读者加深对Java内存管理的理解。
摘要由CSDN通过智能技术生成

1.下列Java代码中的变量a、b、c分别在内存的____存储区存放。

class` `A {

``private` `String a = “aa”;

``public` `boolean methodB() {

``String b = “bb”;

``final String c = “cc”;

``}

}

堆区、堆区、堆区

堆区、栈区、堆区

堆区、栈区、栈区

堆区、堆区、栈区

静态区、栈区、堆区

静态区、栈区、栈区

解析:

当一个方法执行时,每个方法都会建立自己的内存栈,在这个方法内定义的变量将会逐个放入这块栈内存里,随着方法的执行结束,这个方法的内存栈也将自然销毁。因此,所有在方法中定义的局部变量都是放在栈内存中的;在程序中创建一一个对象时,这个对象将被保存到运行时数据区中,以便反复利用(因为对象的创建成本通常较大),这个运行时数据区就是堆内存。堆内存中的对象不会随方法的结束而销毁,即使方法结束后, 这个对象还可能被另一个引用变量所引用(在方法的参数传递时很常见),则这个对象依然不会被销毁。只有当一个对象没有任何引用变量引用它时,系统的垃圾回收器才会在合适的时候回收它。

正确答案:C

2.Which lines of the following will produce an error?

byte a1 = 2, a2 = 4, a3;

short s = 16;

a2 = s;

a3 = a1 * a2;

Line 3 and Line 4

Line 1 only

Line 3 only

Line 4 only

解析:高位向低位直接转化会报错,byte、char、short参与运算都会变成int类型

正确答案:A

3.下面哪一项不是加载驱动程序的方法?

通过DriverManager.getConnection方法加载

调用方法 Class.forName

通过添加系统的jdbc.drivers属性

通过registerDriver方法注册

解析:

DriverManager.getConnection方法返回一个Connection对象,这是加载驱动之后才能进行的

加载驱动方法示例:

Class.forName(“com.microsoft.sqlserver.jdbc.SQLServerDriver”);

DriverManager.registerDriver(new com.mysql.jdbc.Driver());

System.setProperty(“jdbc.drivers”, “com.mysql.jdbc.Driver”);

正确答案:A

4.在Java线程状态转换时,下列转换不可能发生的有()?

初始态->运行态

就绪态->运行态

阻塞态->运行态

运行态->就绪态

解析:只有就绪态和运行态可以直接相互转换,其他都是单向的

8a38a86b44e854885ea73f83c4d3f81b.png

正确答案:AC

5.在Java中,下列说法错误的有( )

数组是一种对象

数组属于一种原生类

int number = []{31,23,33,43,35,63};

数组的大小可以任意改变

解析:

A:数组是对象,int float char这些基本类型不是对象。关于如何判断基本类型和对象,参考下面的:

行为:

基本类型只是一个值,没有任何行为

对象类型有自己的行为

内存分配:

基本类型在栈内分配

对象在堆内分配

对象引用保存在栈内

引用与值:

基本类型是值类型,仅表示一个值,保存在栈内

引用类型分两部分,对象引用保存在栈内,对象保存在堆内,

访问变量,是使用的引用找对象

B:不是,属于引用数据类型,因为声明数组需要分配堆栈空间

D:大小一旦指定,不能改变

正确答案 BCD

6.在jdk1.5之后,下列 java 程序输出结果为______。

int` `i=``0``;

Integer j = ``new` `Integer(``0``);

System.out.println(i==j);

System.out.println(j.equals(i));

true,false

true,true

false,true

false,false

对于不同的环境结果不同

程序无法执行

解析:自动装箱与拆箱

正确答案 B

7.下列说法正确的有( )

环境变量可在编译source code时指定

在编译程序时,所能指定的环境变量不包括class path

javac一次可同时编译数个Java源文件

javac.exe能指定编译结果要置于哪个目录(directory)

解析:

a选项-d即可设置系统属性

c选项一次编译多个java文件用javac *.java. 即可编译当前目录下的所有java文件

d选项-s指定存放生成的源文件的位置

正确答案 ACD

8.下面有关forward和redirect的描述,正确的是() ?

forward是服务器将控制权转交给另外一个内部服务器对象,由新的对象来全权负责响应用户的请求

执行forward时,浏览器不知道服务器发送的内容是从何处来,浏览器地址栏中还是原来的地址

执行redirect时,服务器端告诉浏览器重新去请求地址

forward是内部重定向,redirect是外部重定向

redirect默认将产生301 Permanently moved的HTTP响应

解析:

1.从地址栏显示来说

forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器.浏览器根本不知道服务器发送的内容从哪里来的,所以它的地址栏还是原来的地址.

redirect是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址.所以地址栏显示的是新的URL.

2.从数据共享来说

forward:转发页面和转发到的页面可以共享request里面的数据.

redirect:不能共享数据.

3.从运用地方来说

forward:一般用于用户登陆的时候,根据角色转发到相应的模块.

redirect:一般用于用户注销登陆时返回主页面和跳转到其它的网站等.

4.从效率来说

forward:高.

redirect:低.

正确答案 BCD

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值