※Java基础 常见面试题

目录

1.面向对象是什么?

2.JDK,JRE,JVM有什么区别?

3.Java基本数据类型?

4.在进行小数运算时,可以使用double吗?

5.什么是逻辑与(&)和短路与(&&)? 

 6.switch...case判断条件可以用字符串类型吗?

7.如何定义一个方法 

8.你能说明方法中return的用法吗? 

9. 面向对象三大特征是什么?

10.重写和重载有什么区别? 

11. 接口和抽象类有什么区别?

12.Java常用的循环方式有哪些? 

13. break,continue有什么区别?

14.什么是嵌套循环?如何跳出循环?你觉得嵌套多了会有什么问题?

 15.不写类的构造器可以吗?如果写了类的有参构造器还会有无参构造器吗?

16.类的构造器可以被重写,重载吗?

17.基本类型"=="和引用类型"==" 有什么区别?

18.你能说说Java中this和super关键字吗?

19.请说说final关键字

20.请说说static关键字


1.面向对象是什么?

面向对象思想概述:
    Java是一种面向对象的高级编程语言。
    面向对象:是用代码去高度模拟现实世界的事物,从而让软件为任务处理业务,为人类服务。
    高级语言:代码看起来很像人类的自然语言。 

2.JDK,JRE,JVM有什么区别?

JVM是java虚拟机;我们常说的hotsport是java虚拟机的一种实现.
JRE是java最小运行环境;它包含JVM和系统类库.
JDK是java最小开发环境;它包含JRE+编译运行工具.

3.Java基本数据类型?

byte(1) short(2) int(4) long(8)

float(4) double(8)

boolean(1)

char(2个字节)

4.在进行小数运算时,可以使用double吗?

精度要求不高 √
对精度要求较高 ×
例如银行项目中对资金的一些计算,如果使用double可能会丢失精度,导致结果不正确.(可以使用JDK提供的BigDecimal​​​​​​进行计算)

5.什么是逻辑与(&)和短路与(&&)? 

A与B 如果A为false 逻辑与继续判断B 短路与则不会继续执行

 6.switch...case判断条件可以用字符串类型吗?

在JDK1.7之前只能用整型;
在JDK1.7开始可以用字符串类型;

7.如何定义一个方法 

修饰词 返回值类型 方法名 参数列表 方法体

8.你能说明方法中return的用法吗? 

方法无返回值时,用于结束方法;
方法有返回值时,用于结束方法并返回值给调用方;

9. 面向对象三大特征是什么?

封装:

封装的作用:
    1.可以提高安全性。
    2.可以实现代码的组件化。

封装的规范:
    1.建议成员变量都私有:用private修饰。
       private修饰的方法,成员变量,构造器等只能在本类被直接访问。
    2.提供成套的getter+setter方法暴露成员变量的取值和赋值。
       public修饰符,是公开的意义。

封装的核心思想:合理隐藏,合理暴露。

继承:

继承的作用?
    “可以提高代码的复用”,相同代码可以定义在父类中。
    然后子类直接继承父类,就可以直接使用父类的这些代码了。
    (相同代码重复利用)

子类更强大:子类不仅得到了父类的功能,它还有自己的功能。

继承的特点:
    子类继承了一个父类,子类就可以直接得到父类的属性(成员变量)和行为(方法)了。

 多态:

多态的形式:
    父类类型 对象名称 = new 子类构造器;
    接口    对象名称 = new 实现类构造器;

    父类类型的范围 > 子类类型范围的。

多态的概念:
    同一个类型的对象,执行同一个行为,在不同的状态下会表现出不同的行为特征。

多态的识别技巧:
    对于方法的调用:编译看左边,运行看右边。
    对于变量的调用:编译看左边,运行看左边。

10.重写和重载有什么区别? 

重写发生在父子类,方法名相同,参数列表相同
重载方式在同个类,方法名相同,参数列表不同

11. 接口和抽象类有什么区别?

接口只可包含抽象方法和常量(jdk1.8之前),接口与接口是多继承关系,类与接口是多实现关系.
抽象类可包含抽象方法和其他方法,类与类是单继承关系.

12.Java常用的循环方式有哪些? 

while      可能一次都不执行
do...while 至少会执行一次
for        可能一次都不执行

13. break,continue有什么区别?

break    用于结束循环
continue 用于结束本次循环

14.什么是嵌套循环?如何跳出循环?你觉得嵌套多了会有什么问题?

嵌套循环:循环套循环 
跳出循环:使用 outer: 标签定义循环,使用break outer跳出整个循环 

嵌套循环一般控制在3层以内,如果嵌套太多可读性不好,并且可能存在设计问题

 15.不写类的构造器可以吗?如果写了类的有参构造器还会有无参构造器吗?

不写任何构造器 默认有无参构造器 
写了有参构造器 不会有无参构造器

16.类的构造器可以被重写,重载吗?

构造器不可以被重写,但是可以被重载

17.基本类型"=="和引用类型"==" 有什么区别?

"==":是否相同
基本类型比较的是 值     
引用类型比较的是 堆地址 

18.你能说说Java中this和super关键字吗?

this  代表了当前对象的引用(继承中指代子类对象):
    this.子类成员变量。
    this.子类成员方法。
    this(...):可以根据参数匹配访问本类其他构造器。
super 代表了父类对象的引用(继承中指代父类对象空间):
    super.父类成员变量。
    super.父类的成员方法。
    super(...):可以根据参数匹配访问父类的构造器。

19.请说说final关键字

final用于修饰:类,方法,变量。

1.final修饰类       类不能被继承了。
2.final可以修饰方法 方法就不能被重写了。
3.final修饰变量     变量有且仅能被赋值一次。

final和abstract的关系?
互斥关系,不能同时修饰类或者同时修饰方法!!

20.请说说static关键字

Java是通过成员变量是否有static修饰来区分是类的还是属于对象的。
static == 静态 == 修饰的成员(方法和成员变量)属于类本身的。

成员变量有2种
     -- 有static修饰的属于类叫静态成员变量,与类一起加载一次,直接用类名调用即可。
     -- 无static修饰的属于类的每个对象的叫实例成员变量,
        与类的对象一起加载,对象有多少个,实例成员变量就加载多少份。必须用类的对象调用。

成员方法有2种:
     -- 有static修饰的属于类叫静态方法,直接用类名调用即可。
     -- 无static修饰的属于类的每个对象的叫实例方法,必须用类的对象调用。

静态变量和静态方法存在于方法区(元空间)中

你可能感兴趣的:(面试,java,开发语言,面试)