【Java面试题】15道经典的java面试题(附答案)

Java是一种可以跨平台的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。今天,中国网页设计给大家分享15道较为经典的Java面试题,希望对你将来在企业面试中能有所帮助!

1、面向对象的特征有哪些方面?

2、访问修饰符public,private,protected的区别?

3、String 是最基本的数据类型吗? 是否可以继承String 类?

答:String不是基本数据类型,而是一个类(class),是C++、java等编程语言中的字符串。

String类是不可变的,对String类的任何改变,都是返回一个新的String类对象。 String 对象是 System.Char 对象的有序集合,用于表示字符串,并且该值是不可变的。

因为,java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。

而java的8大基本数据类型分别是:

整数类 byte, short, int, long

浮点类 double, float

逻辑类 boolean

文本类 char

4、short s1 = 1; s1 = s1 + 1;有错吗?

答案:这是考查Java基本数据类型转换规则。

赋值表达式等号两侧的转换的规则是右侧的向左侧的看齐,即右侧表达式要转换到和左边的类型一样。

short s1 = 1; s1 = s1 + 1;

错! s1 + 1,s1是short类型,1是int型,s1会自动转换为int型的1,与1相加后,得到int型的2,要向左侧的short类型的s1看齐,即需要通过强制类型转换。正确写法:s1 = (short) (s1 + 1);

short s1 = 1; s1 += 1;

正确! 执行s1+=1;其实执行的是s1 = (short) (s1 + 1); 其中会有一个强制转换的过程。

short s1=1,s2=1;short s3=s1+s2;

这两句代码也有编译错误,有些人会说了,难道同类型的数据还需要类型转换?答案是否定的,那么这里为什么会有编译错误呢,报错的原因主要是从数据安全方面考虑的,s1+s2的默认类型是int,因为如果s1的值接近short类型取值范围的最大值,同时s2的值也接近short类型取值范围的最大值,那么s1+s2的肯定超出了short的取值范围,此时二者之和就是int型的数据,此时就需要强制把左边的int型数据转换为右边的short型。有些人又说了,我明明写的s1为1,s2也为1,那为什么还报错,呵呵呵呵,因为此时还不知道s1和s2的值到底是多少,此处省去n个字。所以这两句代码正确的写法应该是short s1=1,s2=1;short s3=(short)(s1+s2);

5、float f=3.4;是否正确?

答案:不正确。
原因:精度不准确,应该用强制类型转换,如下所示:float f=(float)3.4 或float f = 3.4f
在java里面,没小数点的默认是int,有小数点的默认是 double;

编译器可以自动向上转型,如int 转成 long 系统自动转换没有问题,因为后者精度更高
double 转成 float 就不能自动做了,所以后面的加上个 f;

6、Java有没有goto?

答案:goto是java语言中的保留字,目前还没有在java中使用。

但是,但是你想过没有,为什么面试官要问你这个问题?他是要考察你的知识面是否广泛!!!
那么当你遇到这个题目时,你应该这样答: 其实goto这个词是C语言中的,goto语句通常与条件语句配合使用,可用来实现条件转移, 构成循环,跳出循环体等功能。而在结构化程序语言中一般不主张使用goto语句, 以免造成程序流程的混乱,使理解和调试程序都产生困难。但是在java语言中,goto这个词只是作为了保留字,还没有使用。

7、int和Integer有什么区别?

8、&和&&的区别?

9、栈(stack)、堆(heap)和静态区(static area)的用法

10、Math.round(11.5) 等于多少?

Math类中提供了三个与取整有关的方法:ceil、floor、round,这些方法的作用与它们的英文名称的含义相对应,例如,ceil的英文意义是天花板,该方法就表示向上取整,所以,Math.ceil(11.3)的结果为12,Math.ceil(-11.3)的结果是-11;floor的英文意义是地板,该方法就表示向下取整,所以,Math.floor(11.6)的结果为11,Math.floor(-11.6)的结果是-12;最难掌握的是round方法,它表示“四舍五入”,算法为Math.floor(x+0.5),即将原来的数字加上0.5后再向下取整,所以,Math.round(11.5)的结果为12,round(-11.5)就是-11.5+0.5=-11,向下取值就是-11,所以round(-10.5)=-11。

11、String 和StringBuilder、StringBuffer 的区别?  char 型变量中能不能存贮一个中文汉字?为什么?

12、用最有效率的方法计算2乘以8?

答案:2 << 3,
因为将一个数左移n 位,就相当于乘以了2 的n 次方,那么,一个数乘以8 只要将其左移3 位
即可,而位运算cpu 直接支持的,效率最高,所以,2 乘以8 等於几的最效率的方法是2 << 3。

//计算2*8=2*23
System.out.println(2<<3);//8=2的3次方为8
//计算2*16=2*24
System.out.println(2<<4);//16=2的4次方为16
//计算3*8=2*23
System.out.println(3<<3);//8=2的3次方为8
//计算5*8=5*23
System.out.println(5<<3);//8=2的3次方为8
//计算6*4=6*22
System.out.println(6<<2);//4=2的2次方为4

13、数组有没有length()方法?String 有没有length()方法?

14、构造器(constructor)是否可被重写(override)?

15、重载(Overload)和重写(Override)的区别。重载的方法能否根据返回类型进行区分?

125jz网原创文章。发布者:江山如画,转载请注明出处:http://www.125jz.com/2418.html

(0)
江山如画的头像江山如画管理团队
上一篇 2018年8月1日 下午8:36
下一篇 2018年8月2日 上午8:15

99%的人还看了以下文章

  • ASP.NET(C#)学习笔记一:注释、常量与变量

    ASP.NET(C#)的注释 多行注释: /* */ 单行注释: //计算圆的面积:Pi*r*r 实例1:注释的使用 /*以下程序由www.125jz.com站长于2018.1.30日开发,测试通过。     完成功能:计算圆的面积*/     public partial class W…

    2018年1月30日
    2.0K0
  • 人工智能基础测试

    1、 print(“Hi”) print(“3*6”) 程序输出结果:(5分) A、 Hi 18 B、 Hi 3*6 C、 Hi 3*6 D、 Hi 18 2、人工智能的概念最早是由哪一位科学家提出来的()(5分) A、 麦卡锡 B、 图灵 C、 冯·诺依曼 D、 马明斯基 3、下列关于人工智能的叙述不正确的有…

    2023年6月2日
    5610
  • MySql数据库Timestamp、time、datetime 区别及使用详解

    对于数据库来说,有多种日期时间字段可供选择,如 timestamp 和 datetime 。 不仅新手,包括一些有经验的程序员还是比较迷茫,究竟我该用哪种类型来存储日期时间呢? 一个完整的日期格式如下:YYYY-MM-DD HH:MM:SS[.fraction],它可分为两部分:date部分和time部分,其中,date部分对应格式中的“YYYY-MM-DD…

    编程开发 2018年5月2日
    6.1K1
  • Java课程设计报告-记事本源代码有流程图

    Java课程设计报告 题 目:简单记事本程序的设计年级专业:计算机科学与技术  软件工程学 号:学生姓名:指导老师: 目    录 摘要… 1 前言… 2 1需求分析… 2 1.1需求分析… 2 1.2功能设计… 3 2.概要设计… 3 2.1程序设计思路… 3 2.2程序运…

    2019年10月4日
    2.0K0
  • oracle 计算时间差,包含年、月、日、时、分、秒

    在做系统时,如图书管理系统、车辆管理系统、事务管理系统等,经常需要我们计算两个日期相差多少天,图书是否应该归还,事情是否完成等。 今天给大家分享oracle 中如何计算时间差! oracle时间差是以天数为单位,所以换算成年月,日 select floor(to_number(sysdate-to_date(‘2018-11-02 15:55:03’,’yy…

    2018年2月13日
    3.1K0
  • MVC详解:模型(Model)-视图(View)-控制器(Controller)

    MVC(模型-视图-控制结构)是软件开发中常用的一种架构模式。它强制性的将输入、处理和输出分开。使应用程序被分成三个核心部件:模型 (Model)、视图(View)和控制(Controller)。它们各自处理自己的任务,有效地分离存储数据和展示数据功能模块以降低它们之间的耦合度。 MVC体系结构: 模型层主要负责保存和访问业务数据,执行业务逻辑和操作。这一层…

    2020年2月23日
    4.5K0

发表回复

登录后才能评论