Java小题精炼训练营(篇九)

public class TestObj {

public static void main(String

[] args){

    Object o=new Object(){
    	//重写了equals(),不管参数是什么,都是返回true
        public boolean equals(Object obj){
            return true;
        }
    };
    System.out.println(o.equals("Fred"));
}

}

本题涉及匿名内部类、多态和覆盖三个知识点。 语句

Object o=new Object(){

        public boolean equals(Object obj){
            return true;
        }
    };

创建了一个匿名内部类,并将所创建的匿名对象赋给 Object (多态:子类对象赋给超类引用)。同时,该匿名内部类重写了 Object 类的 equals 方法。

在执行语句

o.equals(“Fred”)

时,根据多态及覆盖原则,会调用匿名内部类重写后的 equals 方法。

B

4、根据下面的程序代码,哪些选项的值返回true?

public class Square {

long width;

public Square(long l) {

width = l;

}

public static void main(String arg[]) {

Square a, b, c;

a = new Square(42L);

b = new Square(42L);

c = b;

long s = 42L;

}

}

a == b

s == a

b == c

a.equals(s)

这题考的是引用和内存。

//声明了3个Square类型的变量a, b, c

//在stack中分配3个内存,名字为a, b, c

Square a, b, c;

//在heap中分配了一块新内存,里边包含自己的成员变量width值为48L,然后stack中的a指向这块内存

a = new Square(42L);

//在heap中分配了一块新内存,其中包含自己的成员变量width值为48L,然后stack中的b指向这块内存

b = new Square(42L);

//stack中的c也指向b所指向的内存

c = b;

//在stack中分配了一块内存,值为42

long s = 42L;

A: a == b

由图可以看出a和b指向的不是同一个引用,故A错

B:s == a

一个Square类型不能与一个long型比较,编译就错误,故B错

c:b == c

由图可以看出b和c指向的是同一个引用,故C正确

d:a equal s

程序会把s封装成一个Long类型,由于Square没有重写Object的equals方法, 所以调用的是Object类的equals方法,源码如下

public boolean equals(Object obj) {

 return (this == obj);

}

其实就是判断两个引用是否相等,故D也错误。

C

5、请问以下代码运行结果是:

try catch

try finally catch

try finally

try catch finally

throws:写在方法声明之后,表示方法可能抛出异常,调用者需要处理这个异常。

throw:写在方法体中,表示方法一定会抛出一个异常,要么try…catch处理,要么throws抛出。

本题正是有了throw,所以才会顺序执行,否则不执行catch块中的语句。

finally块中的代码,不论在try中是否抛出异常,都会执行。但是一旦在try中跑出异常,fianlly块后的代码不再执行

D

6、以下代码运行输出的是

public class Person{

private String name = “Person”;

int age=0;

}

public class Child extends Person{

public String grade;

public static void main(String[] args){

Person p = new Child();

System.out.println(p.name);

}

}

输出:Person

没有输出

编译出错

运行出错

首先不能两个public类,其次child类中无法访问父类的私有变量

1.一个java文件里,public 的类只能出现一个,只能出现一个,只能出现一个,否则,不管你用哪一个类名命名文件名编译器都会报错

2.关于多态。子类继承了父类的所有成员,包括private权限的成员变量,但是继承的子类具有私有变量的拥有权但是没有使用权。

3.private的成员变量,根据权限修饰符的访问控制范围,只有在类内部才能被访问,就算是他的子类,也不能访问。

C

7、假定Base b = new Derived(); 调用执行b.methodOne()后,输出结果是什么?

public class Base

{

public void methodOne()

{

System.out.print(“A”);

methodTwo();

}

public void methodTwo()

{

System.out.print(“B”);

}

}

public class Derived extends Base

{

public void methodOne()

{

super.methodOne();

System.out.print(“C”);

}

public void methodTwo()

{

super.methodTwo();

System.out.print(“D”);

}

}

ABDC

AB

ABCD

ABC

向上转型:父类只能调用父类方法或者子类覆写后的方法,而子类中的单独方法则是无法调用的。

只要是被子类重写的方法,不被super调用都是调用子类方法

A

7、面向对象的基本特征是()

封装

继承

重载

多态

三大基本特征

封装、继承、多态

五大基本原则

1.单一职责原则

就一个类而言,应该仅有一个引起它变化的原因。

2.开放-封闭原则

一个软件实体应当对扩展开放,对修改关闭

3.里氏代换原则

子类型(subtype)必须能够替换它们的基(父)类型

4.依赖倒转(置)原则

要依赖于抽象,不要依赖于具体

5.接口隔离原则

使用多个专门的接口比使用单一的总接口总要好

ABD

8、单例模式中,两个基本要点是

构造函数私有

静态工厂方法

以上都不对

唯一实例

单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。

这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。

特点:

  • 1、单例类只能有一个实例。
  • 2、单例类必须自己创建自己的唯一实例。
  • 3、单例类必须给所有其他对象提供这一实例。

AD

最后

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

深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

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

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

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

AD

最后

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

深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

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

[外链图片转存中…(img-eNKYAIO1-1714834303429)]

[外链图片转存中…(img-YPc3t6Am-1714834303430)]

[外链图片转存中…(img-Nm7OhZJU-1714834303430)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值