每日10道JAVA题答案(20180619)

本文深入讲解Java中的关键概念,包括私有变量、标识符规则、字符串处理、内部类使用及线程管理等内容,并对比了String、StringBuffer与StringBuilder的性能差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目

1.D



2.A
private是私有变量,只能用于当前类中,题目中的main方法也位于当前类,所以可以正确输出


3.ACD
Java标识符由数字,字母和下划线(_),美元符号($)组成。在Java中是区分大小写的,而且还要求首位不能是数字。
最重要的是,Java关键字 不能当作Java标识符。


4.C
效率:StringString(大姐,出生于JDK1.0时代) 不可变字符序列     <StringBuffer(二姐,出生于JDK1.0时代)  线程安全的可变字符序列    <StringBuilder(小妹,出生于JDK1.5时代) 非线程安全的可变字符序列   。Java中的String是一个类,而并非基本数据类型。string是值传入,不是引用传入。 StringBuffer和StringBuilder可以算是双胞胎了,这两者的方法没有很大区别。但在线程安全性方面,StringBuffer允许多线程进行字符操作。 这是因为在源代码中StringBuffer的很多方法都被关键字 synchronized  修饰了,而StringBuilder没有。 StringBuilder的效率比StringBuffer稍高,如果不考虑线程安全,StringBuilder应该是首选。另外,JVM运行程序主要的时间耗费是在创建对象和回收对象上。


5.AD
内部类其实和类的属性没什么区别,只是在声明的时候必须是Outer.Inner a,
就像int a 一样,至于静态内部类和非静态内部类new的时候有点区别,
Outer.Inner a=new Outer().new Inner()(非静态,先有Outer对象才能有属性)
 Outer.Inner a=new Outer.Inner()要把Outer.Inner看成一部分,就像类变量一样


6.A
第一次String a="1234"时,会在常量池中创建一个常量1234,String b=1234时,常量池中已经有了该常量,
所以直接取,a和b的地址一样,所以地址值相等;String c = newString("1234")重新new了对象,
在堆内存中开辟了新的空间,所以地址值不想等,而equals方法比较的是值是否相等


7.A
join()的作用是:“等待该线程终止”,这里需要理解的就是该线程是指的主线程等待子线程的终止。
也就是在子线程调用了join()方法后面的代码,只有等到子线程结束了才能执行。


8.B
复制的效率System.arraycopy>clone>Arrays.copyOf>for循环,这个有兴趣自己测试一下就知道了。这里面在System类源码中给出了arraycopy的方法,是native方法,也就是本地方法,肯定是最快的。而Arrays.copyOf(注意是Arrays类,不是Array)的实现,在源码中是调用System.copyOf的,多了一个步骤,肯定就不是最快的。


9.B
类的加载包括:加载,验证,准备,解析,初始化。
选项A:生成java.lang.Class对象是在加载时进行的。生成Class对象作为方法区这个类的各种数据的访问入口。
选项B:既然是对象成员,那么肯定在实例化对象后才有。在类加载的时候会赋予初值的是类变量,而非对象成员。
选项C:这个会调用。可以用反射试验。
选项D:类方法解析发生在解析过程。
10.C
A 省略构造函数,编译器会自动生成。
D 构造函数可以重载
B 方法是可以和类名同名的,和构造方法唯一的区别就是,构造方法没有返回值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

StrideBin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值