首页 > 编程语言 >Java基础面试题(6)

Java基础面试题(6)

时间:2024-03-14 19:00:34浏览次数:33  
标签:面试题 Java 基础 接口 修饰 抽象类 方法 final

76.静态方法和实例方法有何不同?

静态方法和实例方法的区别主要体现在两个方面:

        在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法名" 的方式。而实例方法只有后面这种方式。也就是说,调用静态方法可以无需创建对象。

        静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法), 而不允许访问实例成员变量和实例方法;实例方法则无此限制。

77.static 关键字会改变类中成员的访问权限吗?

        Java 中的 static 关键字不会影响到变量或者方法的作用域。在 Java 中能够影响到访 问权限的只有 private、public、protected(包括包访问权限)这几个关键字。

78.能通过 this 访问静态成员变量吗?

        可以;

79.static 能作用于局部变量么?

        在 C/C++中 static 是可以作用域局部变量的,但是在 Java 中切记:static 是不允许用 来修饰局部变量。不要问为什么,这是 Java 语法的规定。

80.类的属性赋值的位置有哪些?先后顺序为何?

        ①默认初始化

        ②显式初始化/⑤在构造代码块中赋值

        ③构造器中初始化

        ④有了对象以后,可以通过"对象.属性"或"对象.方法"的方式,进行赋值

        ① - ② / ⑤ - ③ - ④

81.final 可以用来修饰哪些结构,分别表示什么意思(***)?

        在 Java 中声明类、变量和方法时,可使用关键字 final 来修饰,表示“最终的”。

        final 修饰的类不能被继承。

        final 修饰的方法不能被子类重写,方法一旦被修饰,JVM 会尝试将其内联,以提高运 行效率。

        final 修饰的变量不可以被改变,如果修饰引用,那么表示引用不可变,引用指向的内 容可变。

        final 修饰的变量我们称之为常量,会在编译阶段存入常量池中。

82.Java 中怎么创建一个不可变对象(***)?

不可变对象是实例,其状态在初始化后不会改变。 例如, String 是一个不可变的类, 一旦实例化,其值就永远不会改变。

        1.对象的状态在构造函数之后都不能被修改,任何修改应该通过创建一个新对象来实现。

        2.所有的对象属性应该都设置为 final。

        3.对象创建要正确,例如:对象的应用不能在构造函数中被泄露出去。

        4.类要设置为 final,确保不要继承 Class 修改了 immutability 特性。

83.如下代码的运行结果?

        String a = "hello2";

        final String b = "hello"; // 编译期常量

        String d = "hello"; // 运行时常量

        String c = b + 2; //hello2

        String e = d + 2; //hello2

        System.out.println((a == c)); //true

        System.out.println((a == e)); //false

84.Java 中的编译期常量是什么?使用它又什么风险(*)?

         公共静态不可变(public static final )变量也就是我们所说的编译期常量,这里的 public 可选的。实际上这些变量在编译时会被替换掉,因为编译器知道这些变量的值,并且知道这 些变量在运行时不能改变。

        这种方式存在的一个问题是你使用了一个内部的或第三方库中的公有编译时常量,但是 这个值后面被其他人改变了,但是你的客户端仍然在使用老的值,甚至你已经部署了一个新 的 jar。为了避免这种情况,当你在更新依赖 JAR 文件时,确保重新编译你的程序。

85.抽象类的意义(*)?

        1、为其他子类提供一个公共的类型。

        2、封装子类中重复定义的内容。

        3、定义抽象方法,子类虽然有不同的实现,但是定义时是一致的。

86.一个抽象类中可以定义构造器吗?

        可以;

87.是否可以这样理解:抽象类就是比普通类多定义了抽象 方法,除了不能直接进行类的实例化操作之外,并没有任何 的不同?

         可以;

88.Java 能不能多继承(***)?

        Java 类和类之间只能是单继承,不能是多继承;但是可以多层继承; Java 接口和接口之间可以是多继承;

89.接口是否能继承接口? 抽象类是否能实现(implements) 接口? 抽象类是否能继承非抽象的类?         

        能,能,能

90.abstract class 和 interface 的区别(***)?

        1、抽象类是由 abstract 修饰的类,接口不是类。

         2、抽象类可以定义任意访问权限的数据、抽象方法、普通成员方法; 接口只能定义公 共的静态的常量、公共抽象方法;

         3、对于子类而言,它只能继承一个抽象类,但是却可以实现多个接口。如果一个类实现 了接口,它必须实现接口中声明的所有方法;但是类可以不实现抽象类声明的所有抽象方法, 但是前提该类必须也得声明为抽象类。

         4、抽象层次不同。抽象类是对类抽象,而接口是对行为的抽象。抽象类是对整个类整 体进行抽象,包括属性、行为,但是接口却是对类局部(行为)进行抽象。

         5、跨域不同。抽象类所跨域的是具有相似特点的类,而接口却可以跨域不同的类。

         6、设计层次不同。抽象类是自底向上抽象而来的,接口是自顶向下设计出来的。

         7、抽象类和接口都不能被实例化。

标签:面试题,Java,基础,接口,修饰,抽象类,方法,final
From: https://blog.csdn.net/qq_69240236/article/details/136669488

相关文章

  • 网络编程1 基础概念+Socket编程
    网络编程1基础概念+Socket编程协议概念:协议事先约定好,大家共同遵守的一组规则,如交通信号灯.从应用程序的角度看,协议可理解为数据传输和数据解释的规则;可以简单的理解为各个主机之间进行通信所使用的共同语言.分层模型OSI是OpenSystemInterconnection的缩写,意......
  • Java中的Map集合如何根据key值排序?
    Java中的Map集合如何根据key值排序(HashMap<String,Object>)?Map集合的键(key)默认是按照它们的hashCode排序的,这在有时间不符合业务排序。如果你想要根据Map的key值进行排序,一般以下有几种方法可以实现。方法一:使用TreeMap使用TreeMap类,它会自动根据key的自然顺序或自定义比较器......
  • java Spring boot2.7整合jetcache讲解CreateCache的area属性配置
    上文Springboot2.7整合jetcache远程redis缓存方案我们实现了一个redisjetcache缓存方案我们可以在application文件中的jetcacheremote下再加一组配置就先叫sms我们可以设置CreateCache上的area属性默认值是default这里我们可以修改成我们写的s......
  • HarmonyOS 发送系统通知 基础通知
    harmonyos中提供了各种不同功能的通知来满足我们不同的业务需求本文呢我们先来看最基本的通知它的场景和使用方式最基本的是当应用被切入后台而应用内部发生了一些变化就可以用通知的方式来提醒用户就比如我们微信被切到了后台而这时别人发消息过来了那......
  • Python每日三道经典面试题(九)
    1.解释re模块的split()、sub()、subn()方法?Python的re模块提供了强大的字符串处理能力,主要用于字符串的搜索、匹配、替换和拆分等操作。其中split()、sub()和subn()是re模块中常用的几个方法,用于字符串的拆分和替换。split()方法功能:split()方法用于按照匹配的模式分割......
  • 【前端Vue】Vue从0基础完整教程第2篇:day-08【附代码文档】
    Vue从0基础到大神学习完整教程完整教程(附代码资料)主要内容讲述:vue基本概念,vue-cli的使用,vue的插值表达式,{{gaga}},{{if(obj.age>18){}}},vue指令,综合案例-文章标题编辑vue介绍,开发vue的方式,基本使用,如何覆盖webpack配置,目录分析与清理,vue单文件组件的说明,vue通......
  • HTML基础语法
    HTML特性:1.空白折叠现象1.文字间折为一个空格<p>helloworld!</p>2.标签内壁空白忽略<p>helloworld!</p>2.转义字符<p>小于号<</p><p>大于号></p><p>空格&nbsp;</p><p>版权号&copy;</p>我们今天学习了......
  • 想零基础转行Python开发,怎么学习呢?
    转行零基础学Python编程开发难度大吗?从哪学起?近期很多小伙伴问我,如果自己转行学习Python,完全0基础能否学会呢?Python的难度到底有多大?今天,小编就来为大家详细解读一下这个问题。学习Python编程难吗?首先,我们普及一下编程语言的基础知识。用任何编程语言来开发程序,都是为了......
  • androidstudio不能选择java作为开发语言
    给我整笑了,。。。太久没用Androidstudio今天打开一堆错误,如:出现AppCompatActivity一直爆红问题,出现cannotresolvesymbolAppCompatActivity问题,出现Version28(intendedforAndroidPieandbelow)isthelastversionofthelegacysupportlibrary等问题,解决一个立马出现......
  • Web Audio API 第1章 基础篇
    WebAudioAPI第1章基础篇我查了一下WebAudioAPI蝙蝠书居然在2013年就出版了我又看了一下我的“豆瓣读书”频道内,这本书加入到“在读”标签是在2021年了一直没有坚持看这本书的原因有两点,一是本书是英文版的,不像中文看的那么流畅二是在前端开发业务中一直没有遇......