Java基础笔试练习(九)

文章主要讲述了Java中的String、StringBuilder和StringBuffer的区别,强调String的不可变性,以及JVM堆内存中的不同区域如eden、survivor和old区。还涉及类的初始化顺序和线程安全的讨论,以及Java编程中的反射API应用。
摘要由CSDN通过智能技术生成

{

str = “welcome”;

}

public static void main(String[] args)

{

String str = “1234”;

changeStr(str);

System.out.println(str);

}

}

A.1234

B.welcome

C.空

D.不确定

答案:

A

解析:

string的值是不可改变的,所有试图更改String的行为都会创建一个新的String.

10.关于String,StringBuilder以及StringBuffer,描述错误的是()


A.对String对象的任何改变都不影响到原对象,相关的任何change操作都会生成新的对象

B.StringBuffer是线程安全

C.StringBuilder是线程安全

D.可以修改StringBuilder和StringBuffer的内容

答案:

C

解析:

A,java中的字符串存储在字符串常量区,不会改变,发生改变是会新创建一个对象

B,StringBuffer是线程安全的StringBuilder

C,StringBuilder跟StringBuffer功能相同,区别是StringBuilder不是线程安全的

D,StringBuilder和StringBuffer底层都是以字符数组存放的,可以修改内容

11.以下哪个不属于JVM堆内存中的区域()?


A.survivor区

B.常量池

C.eden区

D.old区

答案:

B

解析:

jvm堆分为:新生代(一般是一个Eden区,两个Survivor区),老年代(old区)。

常量池属于 PermGen(方法区)

12.运行下面代码,输出的结果是


class A {

public A() {

System.out.println(“class A”);

}

{

System.out.println(“I’m A class”); }

static {

System.out.println(“class A static”); }

}

public class B extends A {

public B() {

System.out.println(“class B”);

}

{

System.out.println(“I’m B class”); }

static {

System.out.println(“class B static”); }

public static

void main(String[] args) {

new B();

}

A.

class A static

class B static I’m A class

class A I’m B class

class B

B.

class A static I’m A class

class A class B static

I’m B class class B

C.

class A static class B static

class A I’m A class class B

I’m B class

D.

class A static class A I’m A

class class B static

class B I’m B class

答案:

A

解析:

①父类静态变量和静态代码块(按照声明顺序);

②子类静态变量和静态代码块(按照声明顺序);

③父类成员变量和代码块(按照声明顺序);

④父类构造器;

⑤子类成员变量和代码块(按照声明顺序);

⑥子类构造器。

13.下列语句正确的是:?


A.形式参数可被字段修饰符修饰

B.形式参数不可以是对象

C.形式参数为方法被调用时真正被传递的参数

D.形式参数可被视为local variable

答案:

D

解析:

14.以下程序输出结果是?


String str =

“”;

System.out.print(str.split(“,”).length);

A.0

B.1

C.出现异常

答案:

B

解析:

15.public class contained in a Java program file must have the same name as the file, except for the extension “.java”.


A.FALSE

B.TRUE

答案:

A

解析:

题目的意思是:除去扩展名.java的部分,包含在java文件里的Java里的公共类必须与文件的名字相同。

但是公共的内部类是不需要和文件的名字相同的。

16.其中"c.getDeclaredMethods"的作用是:


import java.lang.reflect.Method;

public class DumpMethods{

public static void main(String[] args) {

try {

Class c=Class.forName(args[0]);

Method m[]=c.getDeclaredMethods();

for (int i = 0; i < m.length; i++) {

System.out.println(m[i].toString());

}

} catch (Throwable e) {

System.err.println(e);

}

}

}

A.取得类的公有方法对象

B.取得类的所有公有方法名称

C.取得类的所有方法对象

D.选项都不正确

答案:

D

解析:

public Method[] getMethods()返回某个类的所有公用(public)方法包括其继承类的公用方法,包括它所实现接口的方法。

public Method[] getDeclaredMethods()对象表示的类或接口声明的所有方法,包括公共、保护、默认(包)访问和私有方法,但不包括继承的方法。包括它所实现接口的方法。

17.运行代码,输出的结果是()


public class P {

public static int abc = 123;

static{

System.out.println(“P is init”);

}

}

public class S extends P {

static{

System.out.println(“S is init”);

}

}

public class Test {

public static void main(String[] args) {

System.out.println(S.abc);

}

}

A.P is init 123

B.S is init P is init 123

C.P is init S is init 123

D.S is init 123

答案:

A

解析:

属于被动引用不会出发子类初始化

1.子类引用父类的静态字段,只会触发子类的加载、父类的初始化,不会导致子类初始化

2.通过数组定义来引用类,不会触发此类的初始化

3.常量在编译阶段会进行常量优化,将常量存入调用类的常量池中, 本质上并没有直接引用到定义常量的类,因此不会触发定义常量的类的初始化。

18.java中Hashtable, Vector, TreeSet, LinkedList哪些线程是安全的?


A.Hashtable

B.Vector

C.TreeSet

D.LinkedList

答案:

AB

解析:

HashMap是线程安全的HashMap

Vector是线程安全的ArrayList

TreeSet和LinkedList都不是线程安全的

19.下面哪些赋值语句是正确的()


A.long test=012

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

最后

由于细节内容实在太多了,为了不影响文章的观赏性,只截出了一部分知识点大致的介绍一下,每个小节点里面都有更细化的内容!

小编准备了一份Java进阶学习路线图(Xmind)以及来年金三银四必备的一份《Java面试必备指南》

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门即可获取!
Java开发知识点,真正体系化!**

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

最后

由于细节内容实在太多了,为了不影响文章的观赏性,只截出了一部分知识点大致的介绍一下,每个小节点里面都有更细化的内容!

[外链图片转存中…(img-CakeSjWU-1712023764902)]

小编准备了一份Java进阶学习路线图(Xmind)以及来年金三银四必备的一份《Java面试必备指南》

[外链图片转存中…(img-3ZCbsbka-1712023764902)]

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门即可获取!

  • 16
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值