题目整理

本文探讨了Java编程中类方法与实例方法的区别,强调类方法不能调用实例方法的错误观点,并举例说明。此外,文章介绍了结构型设计模式,包括适配器、桥接、组合、装饰、外观、享元和代理模式的基本概念和应用场景。最后,文章涉及了Struts框架的工作原理以及JDK中ConcurrentHashMap的线程安全实现,并讲解了浏览器的History对象及其属性和方法。

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

一、在类方法中调用本类的类方法可以直接调用

类方法:属于整个类,不能有与类对象有关的内容,具体限制如下:

  • 类方法中不能引用对象变量
  • 类方法中不能调用类的对象方法
  • 在类方法中不能使用super、this关键字
  • 类方法不能被覆盖

实例方法:属于类的某个对象,几乎没什么限制

在类方法中绝不能调用实例方法。——错(可通过生成类的实例对象来调用)

二、(单选题)下面程序的运行结果(t2>t3

        Object obj=new Object();
        List aList=new ArrayList();
        List bList=new LinkedList();
        
        long t1=System.currentTimeMillis();
        for(int i=0;i<50000;i++){
            aList.add(0,obj);
        }
        long t2=System.currentTimeMillis()-t1;
        
        t1=System.currentTimeMillis();
        for(int i=0;i<50000;i++){
            bList.add(0,obj);
        }
        long t3=System.currentTimeMillis()-t1; 

因为ArrayList的add慢,LinkedList的add快

三、结构型模式

结构型模式是描述如何将类对象结合在一起,形成一个更大的结构。

结构模式描述两种不同的东西:类与类的实例。故可以分为类结构模式和对象结构模式。

在GoF设计模式中,结构型模式有:

  • 适配器模式 Adapter
    • 适配器模式是将一个类的接口转换成客户希望的另外一个接口。
    • 适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
    • 两个成熟的类需要通信,但是接口不同,由于开闭原则,我们不能去修改这两个类的接口,所以就需要一个适配器来完成衔接过程。
  • 桥接模式 Bridge
    • 桥接模式将抽象部分与它的实现部分分离,使它们都可以独立地变化。
    • 它很好的支持了开闭原则和组合锯和复用原则。
    • 实现系统可能有多角度分类,每一种分类都有可能变化,那么就把这些多角度分离出来让他们独立变化,减少他们之间的耦合。
  • 组合模式 Composite
    • 组合模式将对象组合成树形结构以表示部分-整体的层次结构。
    • 组合模式使得用户对单个对象和组合对象的使用具有一致性。
  • 装饰模式 Decorator
    • 装饰模式动态地给一个对象添加一些额外的职责
    • 就增加功能来说,它比生成子类更灵活。
    • 也可以这样说,装饰模式把复杂类中的核心职责和装饰功能区分开了,这样既简化了复杂类,有去除了相关类中重复的装饰逻辑。
    • 装饰模式没有通过继承原有类来扩展功能,但却达到了一样的目的,而且比继承更加灵活,所以可以说装饰模式是继承关系的一种替代方案。
  • 外观模式 Facade
    • 外观模式为子系统中的一组接口提供了统一的的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
    • 外观模式中,客户对各个具体的子系统是不了解的,所以对这些子系统进行了封装,对外只提供了用户所明白的单一而简单的接口,用户直接使用这个接口就可以完成操作,而不用去理睬具体的过程,而且子系统的变化不会影响到用户,这样就做到了信息隐蔽。
  • 享元模式 Flyweight
    • 享元模式为运用共享技术有效的支持大量细粒度的对象。
    • 因为它可以通过共享大幅度地减少单个实例的数目,避免了大量非常相似类的开销。.
    • 享元模式是一个类别的多个对象共享这个类别的一个对象,而不是各自再实例化各自的对象。这样就达到了节省内存的目的。
  • 代理模式 Proxy
    • 为其他对象提供一种代理,并由代理对象控制对原对象的引用,以间接控制对原对象的访问。

四、(单选题) 给定includel.isp文件代码片段,如下,横线处应填写的是(B)

<% pageContext.setAttribute(“User”,”HAHA”);%>
______ // 此处填写代码
给定include2.jsp文件代码片段如下: 
<%=pageContext.getAttribute(“User”)%> 
要求运行include1.jsp时,浏览器上输出:HAHA

B选项是静态包含,相当于不include2.jsp页面内容拷贝到此处,因此可以输出User属性值 。

JSP 共有以下 6 种基本动作:

  • jsp:include:在页面被请求的时候引入一个文件;
  • jsp:useBean:寻找或者实例化一个JavaBean;
  • jsp:setProperty:设置 JavaBean 的属性;
  • jsp:getProperty:输出某个 JavaBean 的属性;
  • jsp:forward:把请求转到一个新的页面;
  • jsp:plugin:根据浏览器类型为 Java 插件生成 OBJECT 或 EMBED 标记。

五、Struts框架

答案:B
A,structs可以进行文件上传
B,structs基于MVC模式,MVC是模型,视图,控制器,是一种设计模式
C,structs框架让流程结构更清晰
D,structs需要很多 action类,会增加类文件数目

六、

选D。

A:JDK1.8 的 ConcurrentHashMap 采用CAS+Synchronized保证线程安全。 JDK1.7 及以前采用segment的分段锁机制实现线程安全,其中segment继承自ReentrantLock,因此采用Lock锁来保证线程安全。

B中,HashMap定义规则如下:

public class HashMap<K,V>  extends AbstractMap<K,V> 
                           implements Map<K,V>, Cloneable, Serializable

C:应该是Arrays.asList(),其将一个数组转化为一个List对象,这个方法会返回一个ArrayList类型的对象, 这个ArrayList类并非java.util.ArrayList类,而是Arrays类的内部类: 

七、(不定项选择题) 以下关于Histroy对象的属性或方法描述正确的是(A、D)

考察的是浏览器的内置对象管理模型,简称BOM(Browser Object Model)中的Histroy属性和方法。 

  • length 返回浏览器历史列表中的URL数量。所以C中表述的长度信息是错误的。 
  • back() 加载 history列表中的前一个URL。 
  • forward() 加载  history  列表中的下一个URL。 
  • go() 加载history列表中的某个具体页面。所以B的表述刷新当前页面是错误的。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值