java高频率基础面试题

java高频率基础面试题

一、是否可以从一个static方法内部发出对非static方法的调用?

(视频教程推荐:java课程)

不可以。因为非static方法是要与对象关联在一起的,必须创建一个对象后,才可以在该对象上进行方法调用,而static方法调用时不需要创建对象,可以直接调用。也就是说,当一个static方法被调用时,可能还没有创建任何实例对象,如果从一个static方法中发出对非static方法的调用,那个非static方法是关联到哪个对象上的呢?这个逻辑无法成立,所以,一个static方法内部发出对非static方法的调用。

二、Integer与int的区别

立即学习“Java免费学习笔记(深入)”;

int是java提供的8种原始数据类型之一。Java为每个原始类型提供了封装类,Integer是java为int提供的封装类。int的默认值为0,而Integer的默认值为null,即Integer可以区分出未赋值和值为0的区别,int则无法表达出未赋值的情况。

例如:要想表达出没有参加考试和考试成绩为0的区别,则只能使用Integer。在JSP开发中,Integer的默认为null,所以用el表达式在文本框中显示时,值为空白字符串,而int默认的默认值为0,所以用el表达式在文本框中显示时,结果为0,所以,int不适合作为web层的表单数据的类型。

在Hibernate中,如果将OID定义为Integer类型,那么Hibernate就可以根据其值是否为null而判断一个对象是否是临时的,如果将OID定义为了int类型,还需要在hbm映射文件中设置其unsaved-value属性为0。

另外,Integer提供了多个与整数相关的操作方法,例如,将一个字符串转换成整数,Integer中还定义了表示整数的最大值和最小值的常量。

三、Math.round(11.5)等於多少?Math.round(-11.5)等于多少?

Math类中提供了三个与取整有关的方法:ceil、floor、round,这些方法的作用与它们的英文名称的含义相对应。

例如,ceil的英文意义是天花板,该方法就表示向上取整,Math.ceil(11.3)的结果为12,Math.ceil(-11.3)的结果是-11;floor的英文意义是地板,该方法就表示向下取整,Math.ceil(11.6)的结果为11,Math.ceil(-11.6)的结果是-12;最难掌握的是round方法,它表示“四舍五入”,算法为Math.floor(x+0.5),即将原来的数字加上0.5后再向下取整,所以,Math.round(11.5)的结果为12,Math.round(-11.5)的结果为-11。

这里有一些笔误,floor的英文意义是地板,该方法就表示向下取整,Math.floor(11.6)的结果为11,Math.floor(-11.6)的结果是-12;

(更多相关面试题推荐:java面试题及答案)

四、Overload和Override的区别?Overloaded的方法是否可以改变返回值的类型?

Overload是重载的意思,Override是覆盖的意思,也就是重写。

重载Overload表示同一个类中可以有多个名称相同的方法,但这些方法的参数列表各不相同(即参数个数或类型不同)。

重写Override表示子类中的方法可以与父类中的某个方法的名称和参数完全相同,通过子类创建的实例对象调用这个方法时,将调用子类中的定义方法,这相当于把父类中定义的那个完全相同的方法给覆盖了,这也是面向对象编程的多态性的一种表现。子类覆盖父类的方法时,只能比父类抛出更少的异常,或者是抛出父类抛出的异常的子异常,因为子类可以解决父类的一些问题,不能比父类有更多的问题。子类方法的访问权限只能比父类的更大,不能更小。如果父类的方法是private类型,那么,子类则不存在覆盖的限制,相当于子类中增加了一个全新的方法。

至于Overloaded的方法是否可以改变返回值的类型这个问题,要看你倒底想问什么呢?这个题目很模糊。如果几个Overloaded的方法的参数列表不一样,它们的返回者类型当然也可以不一样。但我估计你想问的问题是:如果两个方法的参数列表完全一样,是否可以让它们的返回值不同来实现重载Overload。这是不行的,我们可以用反证法来说明这个问题,因为我们有时候调用一个方法时也可以不定义返回结果变量,即不要关心其返回结果。

例如,我们调用map.remove(key)方法时,虽然remove方法有返回值,但是我们通常都不会定义接收返回结果的变量,这时候假设该类中有两个名称和参数列表完全相同的方法,仅仅是返回类型不同,java就无法确定编程者倒底是想调用哪个方法了,因为它无法通过返回结果类型来判断。

override可以翻译为覆盖,从字面就可以知道,它是覆盖了一个方法并且对其重写,以求达到不同的作用。对我们来说最熟悉的覆盖就是对接口方法的实现,在接口中一般只是对方法进行了声明,而我们在实现时,就需要实现接口声明的所有方法。除了这个典型的用法以外,我们在继承中也可能会在子类覆盖父类中的方法。在覆盖要注意以下的几点:

1、覆盖的方法的标志必须要和被覆盖的方法的标志完全匹配,才能达到覆盖的效果;

2、覆盖的方法的返回值必须和被覆盖的方法的返回一致;

3、覆盖的方法所抛出的异常必须和被覆盖方法的所抛出的异常一致,或者是其子类;

4、被覆盖的方法不能为private,否则在其子类中只是新定义了一个方法,并没有对其进行覆盖。

Overload对我们来说可能比较熟悉,可以翻译为重载,它是指我们可以定义一些名称相同的方法,通过定义不同的输入参数来区分这些方法,然后再调用时,VM就会根据不同的参数样式,来选择合适的方法执行。在使用重载要注意以下的几点:

1、在使用重载时只能通过不同的参数样式。例如,不同的参数类型,不同的参数个数,不同的参数顺序(当然,同一方法内的几个参数类型必须不一样,例如可以是fun(int,float),但是不能为fun(int,int));

2、不能通过访问权限、返回类型、抛出的异常进行重载;

3、方法的异常类型和数目不会对重载造成影响;

4、对于继承来说,如果某一方法在父类中是访问权限是priavte,那么就不能在子类对其进行重载,如果定义的话,也只是定义了一个新方法,而不会达到重载的效果。

五、接口是否可继承接口?抽象类是否可实现(implements)接口?抽象类是否可继承具体类(concreteclass)?抽象类中是否可以有静态的main方法?

接口可以继承接口。抽象类可以实现(implements)接口,抽象类可以继承具体类。抽象类中可以有静态的main方法。

稿定抠图 稿定抠图

AI自动消除图片背景

稿定抠图 76 查看详情 稿定抠图

备注:只要明白了接口和抽象类的本质和作用,这些问题都很好回答,你想想,如果你是java语言的设计者,你是否会提供这样的支持,如果不提供的话,有什么理由吗?如果你没有道理不提供,那答案就是肯定的了。

只要记住抽象类与普通类的唯一区别就是不能创建实例对象和允许有abstract方法。

六、Java中实现多态的机制是什么?

靠的是父类或接口定义的引用变量可以指向子类或具体实现类的实例对象,而程序调用的方法在运行期才动态绑定,就是引用变量所指向的具体实例对象的方法,也就是内存里正在运行的那个对象的方法,而不是引用变量的类型中定义的方法。

七、abstractclass和interface语法上有什么区别?

1、抽象类可以有构造方法,接口中不能有构造方法。

2、抽象类中可以有普通成员变量,接口中没有普通成员变量

3、抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。

4、抽象类中的抽象方法的访问类型可以是public,protected和(默认类型,虽然

eclipse下不报错,但应该也不行),但接口中的抽象方法只能是public类型的,并且默认即为public abstract类型。

5、抽象类中可以包含静态方法,接口中不能包含静态方法

6、抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是publicstatic final类型,并且默认即为publicstatic final类型。

7、一个类可以实现多个接口,但只能继承一个抽象类。

(相关教程推荐:java入门教程)

八、abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?

abstract的method不可以是static的,因为抽象的方法是要被子类实现的,而static与子类扯不上关系!

native方法表示该方法要用另外一种依赖平台的编程语言实现的,不存在着被子类实现的问题,所以,它也不能是抽象的,不能与abstract混用。例如,FileOutputSteam类要硬件打交道,底层的实现用的是操作系统相关的api实现;例如,在windows用c语言实现的,所以,查看jdk的源代码,可以发现FileOutputStream的open方法的定义如下:

private native void open(Stringname) throwsFileNotFoundException;

如果我们要用java调用别人写的c语言函数,我们是无法直接调用的,我们需要按照java的要求写一个c语言的函数,又我们的这个c语言函数去调用别人的c语言函数。由于我们的c语言函数是按java的要求来写的,我们这个c语言函数就可以与java对接上,java那边的对接方式就是定义出与我们这个c函数相对应的方法,java中对应的方法不需要写具体的代码,但需要在前面声明native。

关于synchronized与abstract合用的问题,我觉得也不行,因为在我几年的学习和开发中,从来没见到过这种情况,并且我觉得synchronized应该是作用在一个具体的方法上才有意义。而且,方法上的synchronized同步所使用的同步锁对象是this,而抽象方法上无法确定this是什么。

九、内部类可以引用它的包含类的成员吗?有没有什么限制?

完全可以。如果不是静态内部类,那没有什么限制!

如果你把静态嵌套类当作内部类的一种特例,那在这种情况下不可以访问外部类的普通成员变量,而只能访问外部类中的静态成员,例如,下面的代码:

class Outer{static int x;static class Inner    {        voidtest()        {              syso(x);        }    }}

十、String s = “Hello”;s = s + “world!”;这两行代码执行后,原始的String对象中的内容到底变了没有?

没有。因为String被设计成不可变(immutable)类,所以它的所有对象都是不可变对象。在这段代码中,s原先指向一个String对象,内容是 “Hello”,然后我们对s进行了+操作,那么s所指向的那个对象是否发生了改变呢?答案是没有。这时,s不指向原来那个对象了,而指向了另一个 String对象,内容为”Hello world!”,原来那个对象还存在于内存之中,只是s这个引用变量不再指向它了。

通过上面的说明,我们很容易导出另一个结论,如果经常对字符串进行各种各样的修改,或者说,不可预见的修改,那么使用String来代表字符串的话会引起很大的内存开销。因为String对象建立之后不能再改变,所以对于每一个不同的字符串,都需要一个String对象来表示。这时,应该考虑使用StringBuffer类,它允许修改,而不是每个不同的字符串都要生成一个新的对象。并且,这两种类的对象转换十分容易。

同时,我们还可以知道,如果要使用内容相同的字符串,不必每次都new一个String。例如我们要在构造器中对一个名叫s的String引用变量进行初始化,把它设置为初始值,应当这样做:

public class Demo {private String s;...public Demo {s = "Initial Value";}...}

而非

s = new String("Initial Value");

后者每次都会调用构造器,生成新对象,性能低下且内存开销大,并且没有意义,因为String对象不可改变,所以对于内容相同的字符串,只要一个String对象来表示就可以了。也就说,多次调用上面的构造器创建多个对象,他们的String类型属性s都指向同一个对象。

上面的结论还基于这样一个事实:对于字符串常量,如果内容相同,Java认为它们代表同一个String对象。而用关键字new调用构造器,总是会创建一个新的对象,无论内容是否相同。

至于为什么要把String类设计成不可变类,是它的用途决定的。其实不只String,很多Java标准类库中的类都是不可变的。在开发一个系统的时候,我们有时候也需要设计不可变类,来传递一组相关的值,这也是面向对象思想的体现。不可变类有一些优点,比如因为它的对象是只读的,所以多线程并发访问也不会有任何问题。当然也有一些缺点,比如每个不同的状态都要一个对象来代表,可能会造成性能上的问题。所以Java标准类库还提供了一个可变版本,即StringBuffer。

以上就是java高频率基础面试题的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1020926.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月2日 01:19:43
下一篇 2025年12月2日 01:20:03

相关推荐

  • 介绍一下DAO组织的发展历史

    DAO 组织的发展历程是从理论设想走向实际应用并不断完善和多元化,具体表现为:1. 概念起源于 2006 年 Daniel Suarez 的《Daemon》,2013 年 Daniel Larimer 提出 DAC 概念,2014 年 Vitalik Buterin 正式提出 DAO 并奠定理论基础…

    2025年12月8日
    000
  • 比特币又创历史新高度,市场风险偏好明显升温

    比特币在科技股的带动下,首次突破11.2万美元大关,再次刷新历史纪录,年度涨幅接近20%。市场风险偏好显著上升,但短期内仍需关注宏观经济与政策变动对行情的影响。 比特币(Bitcoin)于台湾时间今日凌晨三点一度飙升至112,000美元以上,这是自5月22日以来再次打破历史高点。根据OKX数据显示,…

    2025年12月8日
    000
  • 稳定币是谁发行的 稳定币有哪几种

    稳定币是加密货币世界中不可或缺的基石,它通过与美元等稳定资产挂钩,有效解决了加密货币市场的价格波动问题。对于投资者而言,稳定币不仅是避险工具,更是连接传统金融与数字资产世界的关键桥梁,这篇文章将详细介绍稳定币的主要类型及其发行方。 2025年稳定币交易所: 欧易okx官网直达: 币安官网直达: 火币…

    2025年12月8日
    000
  • USDT、USDC、DAI有什么区别?

    选择一个安全可靠的加密货币交易所是新手和资深投资者进入数字资产世界的第一步。本文将为您盘点当前市场上的主流交易所,并详细解析三种最主要的美元稳定币usdt、usdc和dai之间的区别,帮助您做出更明智的决策。 2025年稳定币交易所: 欧易okx官网直达: 币安官网直达: 火币htx官网直达:  U…

    2025年12月8日
    000
  • 为何比特币与英伟达市值同创历史新高

    英伟达和比特币市值同创新高,反映了市场对人工智能和数字化价值储存的乐观情绪。1. 英伟达因在AI芯片领域的垄断地位,成为AI革命的核心受益者;2. 比特币受现货ETF获批和减半事件推动,逐步被主流投资市场接纳;3. 两者同步上涨的背后逻辑在于对计算能力的依赖及市场对科技创新的追捧,标志着AI重塑生产…

    2025年12月8日
    000
  • 什么是Stablechain(USDT的稳定链)?为什么USDT推出Stablechain?

    目录 什么是stablechain? Stablechain在Tether生态系统中的角色 USDT的Stablechain关键特性 Tether的Stablechain用例 为什么USDT推出自己的Stablechain? 常见问题 Stablechain与其他USDT网络有什么区别? Stabl…

    2025年12月8日
    000
  • U-Coin与比特币:可扩展性和用例的比较分析,谁值得长期持有?

    在数字资产领域,比特币是无可争议的王者,而u-coin等新兴项目则以其创新的技术和应用场景发起挑战。本文旨在深入对比分析比特币与u-coin在可扩展性和核心用例上的根本差异,为希望进行长期持有的参与者提供一个清晰的决策框架。 核心对比:两大数字资产的基本定位 在深入细节之前,理解两者最基本的定位至关…

    2025年12月8日
    000
  • 最有潜力的虚拟货币2025 如何寻找下一个百倍币

    要发现具备巨大潜力的数字资产,需从技术创新、团队背景、通证经济模型、社区活跃度及市场叙事五个维度系统评估。1. 技术创新与实际用途:项目应解决真实问题并带来技术突破;2. 团队背景与透明度:创始团队需经验丰富且公开透明;3. 通证经济模型:设计需激励长期持有而非短期抛售;4. 社区活跃度与生态系统:…

    2025年12月8日
    000
  • 什么是稳定币?3分钟看懂

    稳定币是一种特殊的加密货币,其价值与现实世界中的稳定资产(如美元)挂钩,旨在提供价格稳定性。它们就像是连接传统金融与加密世界的桥梁,让用户在享受区块链技术优势的同时,规避比特币等主流加密货币的剧烈价格波动。 2025年稳定币交易所: 欧易okx官网直达: 币安官网直达:   火币htx官网直达: 什…

    2025年12月8日
    000
  • 什么是代币化股票?如何运作的?它们安全吗?代币化股票深度指南

    目录 简单定义:现实世界股票的数字包装机制:代币背后的架构模型一:发行商-平台分离模型模型二:垂直整合的经纪商-发行商模型(Robinhood 方法)清晰的比较:代币化股票 vs. 传统股票 vs. 差价合约利与弊:现代投资者的平衡观点优点(优点)潜在风险(缺点)结论:投资的未来就在这里 传统金融 …

    2025年12月8日
    000
  • 加密货币最大的交易所是哪个?实力与争议全面解析

    币安(Binance)是目前最大的加密数字资产交易平台。1.从交易体量看,其24小时交易额远超其他平台,流动性深度领先;2.用户基础庞大,注册用户数突破一亿,带来显著网络效应;3.全球布局广泛,业务覆盖多数国家和地区;此外,币安拥有丰富的产品矩阵、强大的技术安全保障体系以及庞大的生态系统支持,但同时…

    2025年12月8日
    000
  • 排名前十的主流币有哪些?盘点2025全球十大主流虚拟货币

    2025年十大主流虚拟货币包括比特币、以太坊、币安币、索拉纳、瑞波币、卡尔达诺、雪崩协议、狗狗币、Chainlink和波卡。1. 比特币作为“数字黄金”凭借稀缺性和网络共识保持领先地位;2. 以太坊以智能合约为核心,支撑DeFi、NFT等应用持续发展;3. 币安币依托BNB链及广泛生态应用场景展现强…

    2025年12月8日
    000
  • 2025年值得关注的十大加密货币项目(最新更新)

    2025年值得关注的十大加密货币项目涵盖DeFi协议、Web3基础设施及NFT与元宇宙三大领域。1. DeFi协议方面,Compound (COMP) 凭借稳健治理和机构探索持续领先;Uniswap (UNI) 以集中流动性提升资金效率巩固优势;Aave (AAVE) 通过多链部署和现实资产代币化创…

    2025年12月8日
    000
  • Cardano的智能合约演变:Alonzo升级对2025年的影响

    cardano作为一个采用同行评审研究驱动的区块链平台,自诞生以来就致力于构建一个更具可扩展性、互操作性和可持续性的去中心化生态系统。其发展路线图被划分为多个时代(byron, shelley, goguen, basho, voltaire),每个时代都承载着平台演进的关键里程碑。其中,gogue…

    2025年12月8日
    000
  • 必知的 56 个币圈术语,拥抱加密货币新机遇

    掌握加密货币术语是理解这一新兴金融领域的关键。1. 区块链是加密货币的底层技术,具有去中心化、不可篡改和公开透明等特点;2. 加密货币是以密码学原理为基础的虚拟货币,如比特币、以太坊等;3. 存储用于存储私钥和公钥,分为热存储和冷存储;4. 私钥是访问加密货币资产的关键,需妥善保管;5. 公钥可公开…

    2025年12月8日
    000
  • 以太坊的可扩展性飞跃:第2层解决方案如何塑造未来

    以太坊第2层(L2)扩展解决方案通过链下处理交易显著提升效率并降低成本,主要方案包括1.Rollups(乐观Rollup和零知识Rollup)在L2执行计算、L1存储数据;2.状态通道适用于链下高频交互;3.侧链提供独立区块链与L1连接;L2通过批量处理交易、降低Gas费使微支付和高频交易成为可能;…

    2025年12月8日
    000
  • 稳定币怎样实现复利, reinvest收益还是提现更优?

    稳定币作为加密货币市场中的特殊存在,其价值通常锚定美元等法定货币,波动性极低,提供了相对稳定的价值储存手段。在数字资产领域,实现资产增值是许多参与者的目标,而利用稳定币进行复利操作,便是一种常见的策略。复利,即“利滚利”,将所产生的收益继续投入,从而使下一期计算利息的本金变大,实现资金的指数级增长。…

    2025年12月8日
    000
  • 最有前途的加密货币是哪些?加密货币普通人买能赚钱吗?

    普通人参与加密货币市场能否赚钱取决于多种因素,机遇与风险并存。本文介绍了比特币、以太坊、索拉纳、BNB和卡尔达诺等主流项目,其看点分别在于市场共识、智能合约生态、高性能公链、平台资源支持及技术严谨性;潜在机遇包括高增长潜力、技术创新和低准入门槛,但风险同样显著,如价格波动大、技术复杂、安全问题和监管…

    2025年12月8日
    000
  • 加密货币主流公链有哪些?2025加密货币主流公链排行榜前十名汇总

    随着区块链技术的不断成熟和应用场景的拓宽,公链赛道的竞争也愈发激烈。本文将为您梳理并预测2025年最具影响力和发展潜力的十大主流公链,帮助您洞察行业格局,把握未来趋势。 2025加密货币主流交易平台汇总 1、币安Binance:  () 2、欧易OKX:  () 3、HTX火币:  ()  2025…

    2025年12月8日 好文分享
    000
  • 人工智能代币是什么?全球十大人工智能代币排名榜单已更新

    人工智能(ai)代币是驱动去中心化ai网络和应用发展的加密资产,它们将区块链技术与人工智能相结合,旨在创造一个更加开放、民主和高效的ai生态系统。本文将为您详细介绍全球范围内备受关注的十大ai代币项目,帮助您快速了解这一创新领域的领先者及其独特价值。 什么是人工智能代币? 人工智能代币是基于区块链技…

    2025年12月8日 好文分享
    000

发表回复

登录后才能评论
关注微信