1. 以下代码执行后输出结果为( A)

public class Test
{public static Test t1 = new Test();{System.out.println("blockA");}static{System.out.println("blockB");}public static void main(String[] args){Test t2 = new Test();}}
    A.  blockA  blockB  blockAB.  blockA  blockA  blockBC.  blockB  blockB  blockAD.  blockB  blockA  blockB

解析:

静态域:用staitc声明,jvm加载类时执行,仅执行一次
构造代码块:类中直接用{}定义,每一次创建对象时执行。
执行顺序优先级:静态域,main(),构造代码块,构造方法。
1 静态域 :首先执行,第一个静态域是一个静态变量 public static Test t1 = new Test(); 创建了Test 对象,会执行构造块代码,所以输出blockA。然后执行第二个静态域(即静态代码块)输出blockB。
2 main():Test t2 = new Test()执行,创建Test类对象,只会执行构造代码块(创建对象时执行),输出blockA。
3 构造代码块只会在创建对象时执行,没创建任何对象了,所以没输出
4 构造函数:使用默认构造函数,没任何输出

2.根据以下代码段,执行new Child("John", 10); 要使数据域data得到10,则子类空白处应该填写

(D )。

class Parent {private int data;Parent(){}public Parent(int d){ data = d; }
}
class Child extends Parent{String name;Child(){}public Child(String s, int d){___________________name = s;}
}
A.  data = d;
B.  super.data = d;
C.  Parent(d);
D.  super(d);

解析:

    1.子父类存在同名成员时,子类中默认访问子类的成员,可通过super指定访问父类的成员,格式:super.xx  (注:xx是成员名);2.创建子类对象时,默认会调用父类的无参构造方法,可通过super指定调用父类其他构造方法,格式:super(yy) (注:yy是父类构造方法需要传递的参数)

3. 下面代码的输出是什么?(A)

public class Base{private String baseName = "base";public Base(){callName();}public void callName(){System. out. println(baseName);}
​static class Sub extends Base{private String baseName = "sub";public void callName(){System. out. println (baseName) ;}}public static void main(String[] args){Base b = new Sub();}
}
A.  null
B.  sub
C.  base

解析:

    Base b = new Sub();父类引用指向子类实例对象,向上转型
向上转型后,可以调用父类派生给子类的方法和子类重写父类的方法,但不能调用子类独有的方法
​java的初始化顺序,先初始化父类的成员变量,再初始化父类的构造函数,因为父类里面的构造函数里面的方法在子类中已经进行了重写所以会调用子类的这个方法,但是子类成员变量还没初始化,所以其为null

4.下面这段程序的输出结果是(A)

public class Main {public static void main(String[] args) {split(12);}public static int split(int number) {if (number > 1) {if (number % 2 != 0) System.out.print(split((number + 1) / 2));System.out.print(split(number / 2));}return number;}
}
A.  12136
B.  63121
C.  61213
D.  11236

解析:

    就是if那里判断条件,两条中间没有else分隔,格式也不规范,所以不管是否满足条件,第二个输出语句都会执行!!!!先进后出,所以递归先执行递归到最深处,在栈顶的方法。
sout split(6) = {sout split(3) = {sout split(2) = {sout split(1)return 2}sout split(1)return 3;}return 6
}

5.以下代码输出的是:(A)

public class SendValue{public String str="6";public static void main(String[] args) {SendValue sv=new SendValue();sv.change(sv.str);System.out.println(sv.str);}public void change(String str) {str="10";}
}
A.  6
B.  10
C.  都不对
D.  16

解析:

对于基本数据类型数据的传递,传递的是值,所以方法内的参数的改变不会改变变量的值;
对于引用类型数据的传递,传递的也是值(地址值),即对象引用的副本,那么在方法内对参数内容的改变只能是改变该引用的副本所指向的对象的内容;
所以本题中,方法调用sv.change(sv.str);使得引用副本指向了其他引用,这样没有改变原引用sv.str,它指向对象的还是"6"

6.指出下列程序的结果:(B)

public class Example{String str=new String("tarena");char[]ch={'a','b','c'};public static void main(String args[]){Example ex=new Example();ex.change(ex.str,ex.ch);System.out.print(ex.str+" and ");System.out.print(ex.ch);}public void change(String str,char ch[]){//引用类型变量,传递的是地址,属于引用传递。str="test ok";ch[0]='g';}
}
A.  tarena and abc
B.  tarena and gbc
C.  test ok and abc
D.  test ok and gbc

解析:

    当我们new一个字符串,给它赋值之后,那么当前对象的值就固定了,永远不会改变。比如String str=new String("tarena"),那么str的值就是test,这是因为在String源码当中是用char数组来按顺序存储字符串中的每一个字符的,并且这个char数组是用final修饰的,这意味着一旦我们给字符串赋值之后,这个对象的值就永远不会改变。可是当我们在一个类当中的某个方法里面,给这个对象str赋值了一个新的字符串,它这时候的值是多少呢?比如这时str="good",str的值就是good,(你可以在这个方法里面写输出语句,输出这个引用,就知道怎么回事了)可不是说引用的值不可以改变么?这里改变的不是引用的值,而是引用str指向的常量不一样了而已,而这个引用的生命周期和当前方法的一样的,也就是方法结束,引用被杀死,也结束了,那么它刚才指向good的这个引用,就结束了,所以在这个方法结束之后,再输出引用str的值,自然就是引用str之前指向的值了,也就是tarena。但为什么char数组可改变???因为字符对象的指向的值被新的字符对象由a改成了g,所以改变了char数组的值。

7.以下程序的执行结果是:(A)

public class Test{static boolean foo(char c){System.out.print(c);return true;}public static void main( String[] argv ){int i = 0;for ( foo('A'); foo('B') && (i < 2); foo('C')){i++ ;foo('D');}}
}
A.  ABDCBDCB
B.  ABCDABCD
C.  编译时出错
D.  运行时抛出异常

8.下面代码将输出什么内容:(B)

public class SystemUtil{public static boolean isAdmin(String userId){return userId.toLowerCase()=="admin";}public static void main(String[] args){System.out.println(isAdmin("Admin"));}
}
A.  true
B.  false
C.  1
D.  编译错误

解析:

    在源码中 toLowerCase 是重新 new String()所以为 == 是比较对象是否是同一个对象,所以为 false 。

9.下面有关java final的基本规则,描述错误的是?(B)

A.  final修饰的类不能被继承
B.  final修饰的成员变量只允许赋值一次,且只能在类方法赋值
C.  final修饰的局部变量即为常量,只能赋值一次。
D.  final修饰的方法不允许被子类覆盖

解析:

    final修饰的方法,不允许被子类覆盖。final修饰的类,不能被继承。final修饰的变量,不能改变值。final修饰的引用类型,不能再指向别的东西,但是可以改变其中的内容。

10.关于static说法不正确的是( D)

A.  可以直接用类名来访问类中静态方法(public权限)
B.  静态块仅在类加载时执行一次
C.  static方法中不能有用this调用的方法
D.  不可以用对象名来访问类中的静态方法(public权限)

解析:

    静态方法属于类本身,可以使用类名调用。
​静态块只执行一次。
​static块和方法不能出现this和super
​可以的,实例对象也可以调用静态方法

面向对象习题(附带解析)相关推荐

  1. python编程基础是什么-Python面向对象编程基础解析(一)

    1.什么是面向对象 面向对象(oop)是一种抽象的方法来理解这个世界,世间万物都可以抽象成一个对象,一切事物都是由对象构成的.应用在编程中,是一种开发程序的方法,它将对象作为程序的基本单元. 2.面向 ...

  2. 计算机组成原理译码器选择,计算机组成原理第三章习题参考解析.doc

    计算机组成原理第三章习题参考解析 第3章习题参考答案 1.设有一个具有20位地址和32位字长的存储器,问 (1) 该存储器能存储多少字节的信息? (2) 如果存储器由512K×8位SRAM芯片组成,需 ...

  3. 重磅:为ES6系列设计的2套习题+答案解析

    ES6系列共20期的连载已经完满结束,但是我们对ES6的学习还不能停止. 学习ES6的重要性不言而喻,毕竟是JavaScript开发的趋势,所有开发者和运行平台都要向ES6规范靠拢.ES6知识已经成为 ...

  4. 蒋本珊计算机组成原理知识点笔记,计算机组成原理习题答案解析(蒋本珊)

    1. WORD格式.整理版 第一章 电子数字计算机和电子模拟计算机的区别在哪里?解:电子数字计算机中处理的信息是在时间上离散的数字量,运算的过程是不连续的:电子模拟计算机中处理的信息是连续变化的物理量 ...

  5. 软件项目管理第4版课后习题[附解析]第六章

    软件项目管理第4版课后习题[附解析]系列文章目录 第一章 第二章 第三章 第四章 第五章 第六章 第七章 第八章 第九章 第十章 第十一章 第十二章 第十三章 第十四章 第十五章 第十六章 期末复习题 ...

  6. 范里安中级微观经济学(第9版)分析笔记和课后习题答案解析-完整版 范里安《微观经济学:现代观点》(第9版)笔记和课后习题详解!

    范里安中级微观经济学(第9版)分析笔记和课后习题答案解析-完整版  摘自硕达学习网 范里安<微观经济学:现代观点>(第9版)笔记和课后习题详解! 最新电子书(题库) 范里安微观经济学现代观 ...

  7. zcpa matlab,matlab习题结果解析.doc

    matlab习题结果解析 习题与解答 第1 章P30 1. Matlab 菜单栏的使用 1)利用菜单栏使Matlab 桌面只显示命令窗口和菜单栏:再恢复默认设置. 2)在我的文档文件夹中建立一个以自己 ...

  8. 计算机科学与基础 简答题,计算机科学基础习题与解析

    计算机科学基础习题与解析 语音 编辑 锁定 讨论 上传视频 <计算机科学基础习题与解析>是2020年清华大学出版社出版的图书,作者是余宏华.刘小丽. 书    名 计算机科学基础习题与解析 ...

  9. 软件项目管理第4版课后习题[附解析]第十章

    软件项目管理第4版课后习题[附解析]系列文章目录 第一章 第二章 第三章 第四章 第五章 第六章 第七章 第八章 第九章 第十章 第十一章 第十二章 第十三章 第十四章 第十五章 第十六章 期末复习题 ...

  10. 软件项目管理第4版课后习题[附解析]第八章

    软件项目管理第4版课后习题[附解析]系列文章目录 第一章 第二章 第三章 第四章 第五章 第六章 第七章 第八章 第九章 第十章 第十一章 第十二章 第十三章 第十四章 第十五章 第十六章 期末复习题 ...

最新文章

  1. 在页面之间传递信息--查询字符串
  2. 计算机组成原理第3版谢树煜,计算机组成原理(第3版)
  3. 6万广州人坐过无人出租车,过半月薪一万以上 | 中国首份Robotaxi乘客调研报告...
  4. python接口自动化4-绕过验证码登录(cookie)
  5. 乡村振兴谋定齐鲁样板-农业大健康·周荣江:国情讲坛创新
  6. IO流中文件和文件夹的删除程序举例
  7. rasa算法_(十八)基于RASA开始中文机器人实现机制
  8. Nginx使用HTTPS建立与上游服务器的网络通信
  9. 5G 背面:物联网的变局!
  10. Android Measure测量实际应用心得(一)
  11. UVALive - 7345 The Hypnotic Spirals 高等数学+几何知识
  12. 新猿木子李:0基础学python培训教程 什么是前端
  13. 影响债市行情的主要因素_决定债券收益的十大因素
  14. 编译原理 子集构造法实现
  15. Worktile官网下载
  16. 《C++ primer plus》学习笔记
  17. 晶体谐振器和晶体振荡器的优缺点分析
  18. RTE2022即将开幕 声网发布RTE行业首本专业书籍《实时万象》
  19. c语言质变量变,从量变到质变------------学习的必由之路
  20. [Angular] 使用 ng-alain

热门文章

  1. Modelsim添加altera仿真库
  2. 数字逻辑电路仿真电路:与非门组成的三人表决器
  3. 初中生用计算机作弊,初中生“考试作弊”惯用的3个手段,全中是学渣,学霸:长见识了...
  4. 活动、节假日、促销等营销方式的因果效应评估——方法模型篇(二)
  5. tkinter-Text详解
  6. FPS中子弹飞行轨迹随视点位置变化而变化的问题
  7. Linux中测试Wifi带宽
  8. TexturePacker序列号申请
  9. python处理心电图_【技术博客】Python玩转信号处理与机器学习入门
  10. 如何选择拨号服务器!