【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%的人还看了以下文章

  • tomcat配置中autodeploy 和reloadable的区别和使用场景

    tomcat配置中的autodeploy 和reloadable: <Context docBase=”xxx” path=”/xxx” reloadable=”true”/> <Context docBase=”xxx” path=”/xxx” autoDeploy=”true”/> 替换WEB-INF/lib目录中的jar文件或W…

    2018年12月25日
    3.6K0
  • 快收藏!破解WiFi密码的Python程序源码泄露了

    通过 Python 脚本实现 WIFI 密码的暴力破解,从而实现免费蹭网。 泄露的Python程序源码: import pywifi from pywifi import const import time import datetime # 测试连接,返回链接结果 http://www.125jz.com/ 分享 def wifiConnect(pwd):…

    2023年1月29日
    2.7K0
  • servlet共享变量实现计数器功能(servlet入门)

    servlet类中定义的成员变量,被所有的客户线程共享。 要求利用servlet共享变量实现计数器功能。 Count.java package com.servlet; import java.io.I.*; import javax.servlet.*; import javax.servlet.http.*; public class Count ext…

    2018年11月27日
    3.3K0
  • python 初学者练手上机实操七-列表、元组练习

    一、定义列表fruits 其中元素包[‘苹果’,’梨’,’香蕉’,’菠萝’,’草莓’,’桔子’,’橙子’,’木瓜’,’西瓜’,’哈密瓜’,’香瓜’,使用循环语句输出列表中的元素,但不输出菠萝。 要求: 1、新建一个“list.py”文件。 2、编写程序。 3、调试程序。 4、排除错误。 二、创建一个名称为list1的空列表 创建一个包含整形数据1,2,3的l…

    2023年6月15日
    8020
  • 输入python显示不是内部命令的原因及解决方法

    问题原因:没有将python的安装路径添加到环境变量中。 解决方法: 首先在桌面上右键点击“此电脑”,选择“属性”,弹出系统界面选择“高级系统设置”,进入系统属性界面后在“高级”选项中选中“环境变量”。 然后在“系统变量”中找到变量Path,双击Path变量进入编辑界面。 接着在编辑环境变量对话框中点击“新建”,添加Python的安装路径,之后一直点确定即可…

    2023年5月18日 编程开发
    1.1K1
  • Python 8大知识点——附详细实例代码。

    目录 1. for – else 2.lambda函数 3.列表推导式 4.列表索引的各种骚操作 5.三元表达式 6.巧用断言assert 7.while语句 8.with – as 1. for – else 什么?不是 if 和 else 才是原配吗?No,你可能不知道,else 是个脚踩两只船的家伙,for 和 else 也是一对,而且是合法的。十大装…

    2023年1月14日
    5330

发表回复

登录后才能评论