1.Java内部类和子类之间有什么区别?

答案:内部类是指在一个外部类的内部再定义一个类,内部类对外部类有访问权限,可以访问类 中定义的所有变量和方法。子类是从父类(superclass)中继承的类,子类可以访问父类所有public和protected的字段和方法。

2.Java语言中有哪些常见的访问说明符,有什么意义?

答案:Java中的访问说明符是放在类名之前,用于定义访问范围的关键字,常见的访问说明符有 以下几类:Public:公共,能被项目中的任何一个Class、Method、Field访问。Protected:受保护,能被同类或子类访问,不能从外部访问。Default:默认,只能被同一个包的Class、Method、Field访问。Private:私有,只能被本类访问。

3.静态方法和静态变量的目的是什么?

答案:静态变量被类的所有实例共用,静态类只能访问类的静态变量,或调用类的静态方法。

4.什么是数据封装及其意义? 

答案:封装是面向对象编程中用于在单个单元中组合属性和方法。封装可以帮助程序员遵循模块化方法进行软件开发,每个对象都有自己的一组方法和变量,并且 可以独立于其他对象来执行其功能。另外,封装也有数据隐藏的目的。

5.什么是 singleton class(单例类)?并给出其用法的实际例子。 

答案:单例类只能有一个实例,必须自己创建自己的唯一实例,必须给所有其他对象提供这一实 例。单例使用场景的最佳实践是由于某些驱动程序限制或由于许可问题的限制只能连接数据库。

6.什么是循环?Java中有哪些循环? 

答案:循环用于编程中重复执行语句,Java中的循环有三类:1、for循环 for循环用于执行指定重复次数的语句,当程序员明确知道循环次数可以使用for循环。2、While循环 当语句满足条件时开始进行重复执行,直到语句不再满足条件退出循环。While循环中在执行语 句之前先检查是否满足条件。3、do while循环 Do while 和while循环基本类似,唯一不同的是do while是先执行语句再检查条件,也就是说do while循环至少会执行一次语句。

7.什么是无限循环?如何声明无限循环? 

答案:无限循环是指无条件执行,无限运行。无限循环可以由定义中断语句块来结束。

8.continue和break语句有什么区别? 

答案:break和continue都是循环中的重要关键词,break语句是结束整个循环过程, continue语句只结束本次循环,而不是终止整个循环的执行。

9.Java中的double和float变量有什么区别?

答案:float是单精度浮点数,内存中占用4字节,double是双精度浮点数,内存中占用8字节。

10.Java中的Final关键字是什么意思?请举例说明 

答案:final是Java中的关键字,有“无法改变” 、 “终态”的含义,final类不能被继承,没有子 类,final类中的方法默认是final的,且不能被子类的方法覆盖,但可以被继承。final成员变量表示常量,只能被赋值一次,赋值后值不再改变。final不能用于修饰构造方 法。下面的例子中,const_val被声明且赋值为常量100:Private Final int const_val=100 而当一个方法被声明为final之后,它不能被子类覆盖,而且会比其他方法都快。

11.举例说明什么是三元运算符?

答案:三元运算符,也称为条件运算符,根据布尔值来决定将哪个值分配给变量,它被表 示为...?...:... 在下面的示例中,如果rank为1,status=Done,否则status=Pending

12.如何在Java中生成随机数?

答案:使用Math.random()可以生成0.1到1.0范围内的随机数字,然后通过数学方法实现生成 符合要求的随机数。

13.举例说明什么是default switch case? 

答案:在switch语句中,如果没有case条件匹配,那么它会就会执行default后面的语句。在下面的例子中,当score既不是1也不是2时,就会执行default之后的语句。

14.Java中所有派生类的基类是什么? 

答案:java.lang.object

15.Java中的main()方法可以返回任何数据吗? 

答案:java中的main()方法不能返回任何数据,它的返回类型始终是void。

16.什么是Java Packages?其意义是什么?

答案:为了更好地组织类,Java 提供了包机制,用于区别类名的命名空间。包的作用:1、把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用。 2、如同文件夹一样,包也采用了树形目录的存储方式。同一个包中的类名字是不同的,不同的 包中的类的名字是可以相同的,当同时调用两个不同包中相同类名的类时,应该加上包名加以区 别。因此,包可以避免名字冲突。 3、包也限定了访问权限,拥有包访问权限的类才能访问某个包中的类。

17.我们可以声明一个抽象类,但是没有任何抽象方法吗? 

答案:是的,我们可以声明一个抽象类,且不包含任何抽象方法,但是一旦一个类中含有 一个抽象方法,那么该类必须声明为抽象。

18.Java中的抽象类和接口有什么区别?

答案:抽象类和接口之间的主要区别在于,抽象类可以拥有任意范围的成员数据,同时也 可以拥有自己的非抽象方法,但是接口方式中,它仅能够有静态、不能修改的成员数据, 同时它所有的方法都必须是抽象的。抽象类是对类抽象,而接口是对行为的抽象。抽象类是对整个类整体进行抽象,包括属性、行 为,但是接口却是对类局部(行为)进行抽象。一个类可以实现多个接口,但它只能扩展一个抽象类。

19.接口对抽象类的性能影响是什么? 

答案:与抽象类相比,接口性能较慢。一个类只能扩展一个抽象类,却能实现许多接口, 随着接口在类中的实现,也会给开发人员带来额外负担。

20.Java中导入包时,其子包是否会被导入?

答案:在Java中导入包时,其子包不会被导入,如果有需要,开发者必须单独导入。开发 者需要单独导入它们。

21.类中的main方法可以声明为private?

答案:Java中main方法必须是public,如果是private,那么它虽然在编译时不会出错,但 是在运行时会出错。

22.我们能不能通过引用向函数传递参数? 

答案:不能,我们只能通过引用将值传递给函数。

23.对象在java中如何序列化? 

答案:序列化是指把Java对象转换为字节序列的过程,只能将支持 java.io.Serializable 接 口的对象写入流中,每个 serializable 对象的类都被编码。

24.Java中的try...catch是用于异常处理吗?

答案:try后面往往会跟着catch或finally,try抛出的任何异常都会被捕获在catch中,在代 码终止前的要执行的任务放在finally中。

25.有没有什么办法在出现异常时跳过finally? 

答案:当在try中出现异常时,如果存在catch,会先被catch捕获,否则会执行到finally。异 常发生时肯定会执行finally,除非在try的末尾有强制中止代码:System.exit(0);

26.什么时候类的构造函数会被调用? 

答案:每次用new来创建对象时,都会调用构造函数。例如,下例中new创建了两个对象,构造函数也被调用了两次。

27.一个类可以有多个构造函数吗? 

答案:是的,一个类可以有多个具有不同参数的构造函数,创建对象的构造函数取决于创建对象 时传递的参数。

28.我们可以覆盖类的静态方法吗?

答案:我们不能覆盖静态方法,静态方法属于一个类而不是单个对象,并且在编译时解析 (而不是在运行时)。

29.在下面的例子中,输出是什么?

答案: 输出为:Displaying from subclass Displaying from superclass

30.String是Java的数据类型吗? 

答 案 :String 不 是 Java 的 原 始 数 据 类 型 , Java 中 创 建 一 个 string 时 , 实 际 上 是 创 建 了 Java.Lang.String类的对象,这个对象可以使用String类的所有内置方法。

31.下面的示例中,共创建了多少个String对象?

答案:共创建了两个java.Lang.String类的对象。s1和s3是对同一个对象的引用。

32.为什么Java中的String被称为Immutable? 

答案:Java中,string对象是不可变的, 一旦赋值不可更改,如果更改,则会创建一个新对象。在下面的示例中,str是值为“Value One”的字符串对象:

当分配一个新值时,将创建一个新的String对象,并将引用移动到新对象。

33.数组和向量之间有什么区别? 

答案:数组是对相同原始类型的数据进行组合,本质上是静态的,而矢量本质上是动态的,并且 可以容纳不同数据类型的数据。

34.什么是多线程? 

答案:多线程是一个编程概念,可以在单个程序中以并发方式执行多个任务。同一个进程的多个 线程堆栈共享,有助于程序的性能改进。

35.为什么在ava中使用Runnable Interface? 

答案:Runnable接口在Java中用于实现多线程应用程序,Java.Lang.Runnable接口由一个支持 多线程的类来实现。

36.Java中实现多线程的两种方法是什么? 

答案:1、通过使用Java.Lang.Runnable Interface,通过Run()方法来启用多线程。2、编写一个扩展Java.Lang.Thread类的类。

37.当数据需要进行大量更改时, String和StringBuffer谁是更好的选择?

答案:StringBuffers本质上是动态的,我们可以改变StringBuffer对象的值,而String是不可变 的,每次数据更改都会创建一个新的String对象,增加额外开销,所以在数据更改很多的情况 下,StringBuffer是一个更好的选择。

38.每个switch语句后使用break的目的是什么?

答案:switch使用break可以在执行完这个语句后中断,如果不使用break,那么它将把所有情况 都执行一遍。

39.如何在Java中完成垃圾回收?

答案:Java中,对象不被引用时,垃圾回收就会发生,对象会被自动销毁,调用System.gc() 方法或Runtime.gc()方法。

40.可以在Main()方法前执行代码? 

答案:如果我们要在类加载时,对象创建之前执行语句,可以在类中使用静态代码块,这样即使 在main方法中创建对象之前,此静态代码块中的语句都将在加载类时执行一次。以上是前40道Java面试问题和答案,之后不定时更新剩下的面试题,希望同学们在学好技术的基础上,也能理解和掌握这些知识,祝大家早日拿到满意的offer!(申明:以上面试题均为网络整理)

java random用法_JAVA面试题(1)相关推荐

  1. java foreach用法_Java十大简单性能优化

    以下是Java中最容易进行的10个性能优化: 1.使用StringBuilder 这几乎是所有Java代码中的默认设置.尽量避免+操作员.当然,您可能会争辩说它StringBuilder无论如何都是语 ...

  2. java list用法_Java List 用法详解及实例分析

    Java List 用法详解及实例分析 Java中可变数组的原理就是不断的创建新的数组,将原数组加到新的数组中,下文对Java List用法做了详解. List:元素是有序的(怎么存的就怎么取出来,顺 ...

  3. java super用法_Java基础面试题汇总

    blog.csdn.net/ThinkWon/article/details/104390612 Java概述 何为编程 编程就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结 ...

  4. java instanceof用法_Java基础高频面试题汇总(1.4W字详细解析)

    注:由于公众号文章推送规则的改变,所以为了大家能够准时收到我们的文章推送,请记得将公众号:JAVA编程语言 设为星标-这样就不会错过每一篇精彩的推送啦~ 1. Java语言有哪些特点 (1)简单易学. ...

  5. futuretask java 并发请求_Java面试题整理一(侧重多线程并发)

    1..是否可以在static环境中访问非static变量? 答:static变量在Java中是属于类的,它在所有的实例中的值是一样的.当类被Java虚拟机载入的时候,会对static变量进行初始化.如 ...

  6. java secretkey用法_Java SecretKeyFactory.generateSecret方法代码示例

    本文整理汇总了Java中javax.crypto.SecretKeyFactory.generateSecret方法的典型用法代码示例.如果您正苦于以下问题:Java SecretKeyFactory ...

  7. java treemap用法_java TreeMap用法

    最近工作遇到需要按一个model中不同的列进行排序的问题,查了一下JDK API文档,发现,java中可以排序的工具类和接口共有五个SortedMap .SortedSet.TreeMap .Tree ...

  8. java treemap用法_Java TreeMap put()用法及代码示例

    TreeMap的java.util.TreeMap.put()方法用于将映射插入Map.这意味着我们可以将特定的键及其映射到的值插入到特定的映射中.如果传递了现有键,则以前的值将被新值替换.如果传递了 ...

  9. java future用法_Java中的多线程知识点

    如果对什么是线程.什么是进程仍存有疑惑,请先Google之,因为这两个概念不在本文的范围之内. 用多线程只有一个目的,那就是更好的利用cpu的资源,因为所有的多线程代码都可以用单线程来实现.说这个话其 ...

最新文章

  1. python实现md5加密_Python实现md5加密验证访问接口总结
  2. java环境变量详解---找不到或无法加载主类
  3. 与基础事务管理器的通信失败 存货申请_金九银十跳槽季,恶补分布式事务
  4. Java 中的某些方法为什么要求传入一个 Class 对象
  5. Linux之GDB调试命令
  6. 【CTF WEB】反序列化
  7. Vim自动补全神器YouCompleteMe的配置
  8. silverlight寻奇
  9. 提升企业网站流量转化率的核心是什么
  10. VMware Fusion CentOS7 下载安装及手动配置静态IP
  11. (高级)Matlab绘制中国地图超全教程详解
  12. 台服android 模拟器,公主连结抽卡模拟器
  13. ps可以去视频水印h吗
  14. 200 OK (from cache) 与 304 Not Modified
  15. [木野狐]ViewState 剖析(翻译兼笔记)
  16. mysql查询第一行
  17. linux下打开windows txt文件中文乱码问题
  18. android 调用系统相机拍照保存,android 调用系统照相机,保存后回到前一个activity...
  19. tkmbatis 日志_springboot+maven+tk.mybatis+generator逆向工程
  20. 瑞工热敏票据打印机不自动裁切的设置

热门文章

  1. 链表c++代码的实现
  2. 语音识别学习日志 2019-7-17 语音识别基础知识准备6 {维特比算法(Viterbi Algorithm)}
  3. 语音识别学习日志 2019-7-14 语音识别基础知识准备3 {Kmean算法分析与HMM(Hidden Markov Model)模型}
  4. Linux chattr 与 lsattr命令
  5. Flink 双流 Join 的3种操作示例
  6. 模拟驾驶能力输出,赋能客户提升稳定性信心
  7. 海量结构化数据解决方案-表格存储场景解读
  8. 读完《云原生架构白皮书》,我们来谈谈开放应用模型(OAM)
  9. Nexus协议,闲鱼一体化开发的幕后玩家
  10. KubeCon 2018 参会记录 —— FluentBit Deep Dive