Java面试题

Java基础阶段
1、Java 数据类型分为什么
基本数据类型(8个),
整数4个:byte、short、long、Int
小数:2个:double、float
字符:char boolean
引用数据类型
字符串、String 数组、集合、类、对象
2、定义变量的两种方式是什么
1)在定义变量时就定义初始值,2)先定义了再给值
3、switch能接收的数据类型是什么
Int、short、byte char 枚举 String
4、break和continue的比较
1)Break是结束当前循环,continue是结束本次循环,进行下次循环
2)Break不仅在循环中可以运用,还可以在其它地方使用,如在分支结构中switch
而continue只能在循环结构中

面向对象阶段
1、面向对象和面向过程的特点分别是什么?
面向过程语言的特点: 以过程为核心,所有的过程都必须由自己来实现,都必须呀亲力亲为,你不做,没人帮你
面向对象语言的特点:以对象为核心,并不需要自己去亲力亲为的实现每一件事,核心是找到正确的对象来完成,并不关心过程是怎么实现的
2、理解对象的属性和方法?
对象:用来描述客观事物的一个实体,由一组属性(静态特征)和方法(动态特征)构成;
属性:用来描述对象的固有特征,静态特征,一般是名词;
方法:用来描述对象的动作,动态特征,这个对象能干嘛,一般是动词;
3、类和对象的关系?
类是抽象是,对象是具体的。
类是具有相同属性和行为(方法)的对象的集合。
对象是类的一个实例,是一个具体的实体。
(代码:先创建一个类 – 创建这个类的对象 – 调用属性和方法)
4、如何使用java实现类和对象的关系
(代码:先创建一个类 – 创建这个类的对象 – 调用属性和方法)
1)创建一个类(属性和方法)
2)通过这个类创建对象
3)使用对象名调用属性和方法,对象名.属性名 , 对象名.方法名();
5、方法的五要素是什么?
修饰符,返回值类型,方法名,参数列表,方法体
(Public void study ( ){ } return和void不能共存 return的作用:结束方法,返回结果。如果方法没有返回值,返回值类型写void,如果方法有返回值,根据返回结果,确定返回值类型)
6、类名的命名规则是什么
1)类名首字母要大写
2)遵循标识符的命名规则
由数字、字母、下划线_、美元符号$组成
数字不作为开头
关键字和保留字不能作为标识符
遵循驼峰命名规则,如果多个单词组成,从第二个开始,每个单词首字母要大写
7、构造方法和普通方法的区别是什么?
1)构造方法没有返回值类型,普通方法没有返回值时是返回值类型是void,有返回值时根据具体类型编写
2)方法名不一样,构造方法的方法名和类名保持一致,而普通方法见名思意,驼峰命名
3)功能不一样,构造方法是用来创建对象初始化对象的,而普通方法是具体功能的实现
4)调用方式不一样,普通方法需要使用对象点方法名调用,构造方法通过new,this,super调用
5)构造方法访问修饰符一般是public, 一般方法根据实际情况选择修饰符
8、什么是方法的重载(overload)
同类同名不同参,与其他无关。(不同参:不同的参数列表:个数不同,类型不同,顺序不同)
9、成员变量和局部变量的区别
1)定义位置不同
成员变量:定义在类中的变量,属于类
局部变量:定义在方法中的变量,属于方法
2)作用域不同
成员变量:属于类,类中的每一个方法都可以使用
局部变量:属于方法,只能在某一个方法中使用
3)初始值不同
成员变量:有默认的初始值,在加载类的时候,就会给成员变量赋值(默认值)
局部变量:没有初始值,必须初始化之后才可以使用
4)生命周期不同
成员变量:属于类,随着对象的创建而创建,随对象的消失而消失- 垃圾回收器
局部变量:属于方法,随着方法的调用而创建
(注意:1:在同一个类中,成员变量和局部变量同名时,局部变量具有更高的优先级 。2:在方法的参数列表中的参数,也是局部变量)
10、Java的三大特性是什么?
封装、继承、多态
11、封装的原则和步骤?
1)私有化属性—用private修饰,被private修饰的属性,只能在当前类中使用
2)对外提供公共的访问方法(setter和getter方法 set赋值,get取值)
3)在setter方法中添加控制语句,对数据进行校验
12、封装的好处
1)隐藏的实现的细节,提高了安全性
2)符合java的“高内聚,低耦合”思想
3)提高了软件的独立性和可重用性
13、包的好处(package)
1)分类管理Java文件
2)权限控制(继承)
14、访问控制修饰符有哪些,并说说它们分别的作用域
Private\默认修饰符\protected\public
Private 只能在同一个类中访问,public可以在任何地方访问
默认修设符可以在同一个类中,同一个包中使用
Protected和默认修饰符一样,唯一的区别是还可以在不同包中的子类中使用

15、静态变量的特点?
1)被static修饰的变量是静态变量,非静态变量叫做实例变量
2)在内存中只有一个,在加载类时创建,被所有方法和对象共享
3)其他类中,可以直接通过类名访问
16、静态变量和实例变量的区别?
1)语法不同,静态变量是被static修饰的变量,而实例变量没有被static修饰
2)内存不同,静态变量内存中只能有一个,每次对它修改值都会改变。而实例变量每创建一个实例,就会为实例变量分配一次内存,每个对象的实例变量互不影响
3)初始化时间不同,静态变量在创建对象之前会被加载。实例变量,随着对象的创建被创建
4)调用方式不同,静态变量类内部,任何方法都可以直接访问,其他类用类名点或者对象点访问。实例变量类内部,静态方法不能调用,其他类用对象点调用
17、静态方法特点?
1)静态方法中不能使用this和super
2)不能直接访问所属类的实例变量(非静态变量)和实例方法(非静态方法)
3)可直接访问类的静态变量和静态方法(静态能够调用静态的,不能调用非静态的)
4)可直接通过类名.访问
5)规定:静态只能调用静态的,非静态只能调用非静态的
18、如何使用继承
1)编写父类,创建公共的属性和方法
2)编写子类使用extends继承父类
3)编写子类中特有的属性和方法
19、子类到底继承了父类哪些内容?
1)可以继承所有的public修饰的属性和方法
2)同包下默认修饰符和protected修饰的属性和方法
3)不同包下protected修饰的属性和方法
20、子类不能继承父类的哪些内容
1)private修饰的属性和方法
2、)类和父类不再同一个包下,不能继承默认访问权限的成员
3)不能继承构造方法
21、继承的优点是什么
将子类共有的属性和方法抽取到父类中,减少重复代码,实现代码的重用
22、方法重写和方法重载的区别?
1)方法重载是同类同名不同参,与其它无关。不同参----个数不同、类型不同、顺序不同。
2)方法重写是在子类和父类中存在的,同名同参,返回值类型相同或者是其子类,修饰符不能比父类严格(当父类的方法不能满足子类的需要时)

23、equals()和==在比较时候,有什么区别
==比较的是2个值是不是相等,equals比较的是2个对象是不是同一个
来比较对象的话,则表示比较2个对象的内存地址是不是一样
24、2个基本数据类型的值能不能使用
来比较,能不能用equals()比较
equals()比较必须由对象来调用,基本数据类型不是对象,所有不能调用
25、多态的体现?
父类或者接口的引用变量指向子类或其实现类的实例对象
(父类的引用变量来调用不同子类的实现方法,方法的重写是实现多态的基础。一个引用变量在不同的情况下的多种表现状态)
26、什么是向上转型,什么是向下转型,有什么注意点
向上转型-----自动类型转换。向下转型------强制类型转换。
多态创建对象的话,父类指针只能调用父类以及它继承来的方法,子类重写的父类方法就是多态的体现,而子类特有的方法不能调用,调用子类特有的方法需要向下转型
27、抽象方法和抽象类的关系?
1)有抽象方法的类必须声明为抽象类。2)抽象类中不一定有抽象方法
28、抽象类为什么不能被实例化?
因为抽象类中可能存在抽象方法,抽象方法说没有方法体的方法,如果实例化,那么调用抽象方法没有意义,所以规定抽象类不能被实例化。
29、抽象类不能被实例化,那构造方法有什么用
子类的构造方法中第一句有一个隐式的super(),是留给子类使用的
30、抽象方法和普通方法有什么区别?
1)语法上,抽象方法被abstract修饰,而普通方法不是
2)方法体,抽象方法没有方法体,普通方法一定有方法体
3)位置上,抽象方法只能存在抽象类中,而普通方法在抽象类、普通类都可以
4)子类中,抽象方法一定要被重写,或者子类也是一个抽象类,而普通方法随意
31、抽象类和普通类的区别?
1)语法不同,抽象类是被abstract修饰的类,普通类不能被abstract修饰
2)抽象方法,抽象类中可以有抽象方法和普通方法,而普通类一定不能有抽象方法
3)实例化,抽象类不能被实例化,普通类可以被实例化
4)继承时,抽象类被继承时,子类必须重写全部的抽象方法,或者子类声明为抽象类,而普通类继承普通类时,没有限制
32、接口中能不能定义普通方法
1.7之前接口中只能与抽象方法,1.8后,在接口中定义普通方法,用default关键字修饰
33、接口中是否存在成员变量
不存在成员变量,只能有常量,public static final修饰(接口的抽象方法默认是public abstract)
34、接口是否继承接口
可以继承接口,接口继承是多继承,一个接口可以继承多个接口,弥补了类只能单继承
35、一个类能不能实现多个接口
可以实现多个接口,但是必须实现所有接口中的所有抽象方法,或者这个类是抽象类
36、接口和抽象类的区别和相同点
区别:
1)语法,接口用interface修饰,而抽象类用abstract class修饰
2)继承,接口可以多继承,抽象类只能单继承
3)内容上,接口只能有常量,抽象类可以有常量,也可以有成员变量
接口来中只能有抽象方法(1.7之前),类中可以有普通方法,也可以有抽象方法
接口中没有构造方法,类一定有构造方法
相同:
1)实例化,接口和抽象类都不能实例化
2)接口和类都可以有静态方法
37、接口中是否存在构造方法?
不存在构造方法,接口中默认方法的修饰符是public abstract,在Java中不存在抽象的构造方法,构造方法是有方法体的
38、Java中异常机制有什么?
包括 捕获异常:try,catch,finally
抛出异常:throws,throw
39、常见的异常有哪些?
算数异常、空指针异常、数组下标越界异常、类型转换异常、输入类型不匹配异常、字符串转换为数字异常、数组负下标异常
40、final和finally的区别
Final是修饰符,修饰变量、方法、类,表示最终的,最后的一个版本
修饰变量时,表示常量
修饰方法时,方法不能被重写
修饰类时,类不能被继承
而finally是异常中的一个代码块,表示这段代码一定被执行
41、如果try中出现return,同时出现finally代码,先执行谁?
当程序执行到return时,先执行finally代码块中的内容,然后执行return的内容,返回结果,结束方法
42、throw和throws的区别
Throw,生成并抛出异常,位于方法体内部,可作为单独语句使用,抛出一个异常对象,且只能是一个。
Throws,声明方法内抛出异常,必须跟在方法参数列表后,不能单独使用。
声明抛出异常类型,可以跟多个异常

43、自定义异常的具体步骤是什么?
1)定义一个类继承Exception或者其子类
2)编写有参无参构造方法
3)在需要的地方调用异常类(throw抛出实例化后的异常),在方法的声明中需要声明(throws)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值