作者:爱塔居
作者简介:一个普普通通的大三学生,喜欢总结和分享知识。
文章简介:通过刷题和总结的方式,对自己的知识查缺补漏,增强自己对知识的了解,增强自己的编程水平。希望大家能一起进步。
选择题
1. 在 Java 中,存放字符串常量的对象属于( )类对象。
A Character
B String
C StringBuffer
D Vector
首先解释这道题:
Character是char的包装类类型,是字符类。
String明显可以存放字符串常量类:
StringBuffer是不能存放字符串常量的,会报错。
Vector 这是一个集合类。
🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀
拓展:
我又看了别人的几篇博客,顺便联系一下他们提到的经典面试题。
(1)
String s1 = new String(“hello”) ;
String s2 = new String(“hello”) ;
以上代码创建了几个对象?(2)String s = new String(“A”+“B”) ; 创建多少个对象?
(3)String s = new String(“ABC”) + “ABC” ; 创建多少个对象?
研究了一会儿,觉得没必要研究。
这个问题答案特别多,我能理解的就是会先看常量池,如果没有就创建一个对象在常量池。new String也会创建一个对象。然后,有争议的点,就是引用算不算创建一个对象。然后,最开始的时候,常量池中有没有这个字符串。
我们且当引用也算是创建对象。
题(2)中,常量池创建了三次对象,"A","B","AB"
在堆区创建一次对象,引用一次对象。一共五次。
(3)在常量区,“ABC","ABCABC",创建两次对象。
堆一次,引用一次。一共四次。
2.已知如下类定义:
class Base {
public Base (){
//...
}
public Base ( int m ){
//...
}
public void fun( int n ){
//...
}
}
public class Child extends Base{
// member methods
}
如下哪句可以正确地加入子类中?
A private void fun( int n ){ //...}
B void fun ( int n ){ //... }
C protected void fun ( int n ) { //... }
D public void fun ( int n ) { //... }
这题,我是这么看的,chlid是base的子类。在子类里面,就是重写。在同一个类,重载。父类子类的关系就是重写。对比了一下,返回值类型和参数类型和个数是一样的。然后,我们还有一点就是,子类的权限要大于等于父类。父类中是public,所以只能是public了。选D。
🍇🍇🍇🍇🍇🍇🍇🍇🍇🍇🍇🍇🍇🍇🍇🍇🍇🍇🍇🍇🍇🍇🍇🍇🍇🍇🍇🍇🍇🍇🍇
- public: 公有成员,在任何地方都可以被访问。
- private: 私有成员,只能在类内部被访问。
- protected: 保护成员,在类内部和派生类中可以被访问
3. 下列选项中属于面向对象编程主要特征的是()
A 继承
B 自顶向下
C 模块化
D 逐步求精
面向对象编程主要特征的是继承、封装、多态、组合。
结构化程序设计原则:模块化、自顶向下、逐步求精。
4.关于下列程序段的输出结果,说法正确的是:( )
public class MyClass{
static int i;
public static void main(String argv[]){
System.out.println(i);
}
}
A 有错误,变量i没有初始化。
B null
C 1
D 0
成员变量没有初始化,默认给0。
成员变量是独立于方法外的变量,局部变量是类的方法中的变量。i是方法外定义的变量,属于成员变量。
注意:成员变量可以被public,protect,private,static等修饰符修饰,而局部变量不能被控制修饰符及 static修饰。
成员变量未设置初始值时,默认值:
int:0
short:0
byte:0
long:0
double:0.0
float:0.0
boolean:false
String:null
5.不考虑反射,关于私有访问控制符 private 修饰的成员变量,以下说法正确的是()
A 可以三种类所引用:该类自身、与它在同一包中的其他类,在其他包中的该类的子类
B 可以被两种类访问和引用:该类本身、该类的所有子类
C 只能被该类自身所访问和修改
D 只能被同一个包中的类访问
public:允许跨类、跨包访问。
protect:允许类本身的方法和子类访问
private:只能被该类访问。
6. 类声明中,声明一个类不能再被继承的关键字是()
A public
B abstract
C final
D static
public肯定可以的。abstract是抽象类,可以被继承。static是静态类,也可以被继承。
final修饰的类是无法被继承的。
7.
假设 A 类有如下定义,设 a 是 A 类的一个实例,下列语句调用哪个是错误的?()
public class A
{
public int i;
static String s;
void method1(){}
static void method2(){}
}
A System.out.println(a.i);
B a.method1();
C A.method1();
D A.method2();
Java的Static关键字的作用_嘻嘻你好呀的博客-CSDN博客
可以通过上面这篇别人的博客,重温一下static。
考察的点:static修饰的成员可以直接被类名调用。
A用实例去调用i,肯定是可以的。B用实例a,去调用method1,肯定也是可以的。
重点就在于C、D。
method2被static修饰,所以可以直接被类名A调用。