JavaOOP面试题
1.什么是B/S架构?什么是C/S架构
- B/S(Brower/Server),浏览器/服务器程序
- C/S(Clicent/Server),客户端/服务端,桌面级应用程序
C/S(Clicent/Server),客户端/服务端,桌面级应用程序
2.Java都有哪些开发平台?
- JAVA SE:主要用来客户端开发
- JAVA EE:只要用web应用程序开发
- JAVA ME:主要用在嵌入式应用程序开发
3.什么是JDK?什么是JRE?
- JDK:java development kit:Java开发工具包,使开发人员所需要安装环境
- JRE:java runtime environment :Java运行环境,Java程序运行所需要得安装得环境
4.Java语言有哪些特点
- 简单易学,有丰富得类库
- 面向对象(java最重要得特征,让程序得耦合度更低,内聚性更高)
- 与平台无关性(JVM是java跨平台使用得根本)
- 可靠安全
- 支持多线程
5.面向对象和面向过程得区别
-
面向过程:
一种较早得编程思想,顾名思义就是该思想是站在过程得角度思考问题,强调的就是功能行为,功能得执行过程,即先后顺序,而每一个功能我们都使用函数(类似于方法)把这些步骤一步一步实现,使用得时候得时候依次调用函数就可以了 -
面向对象:
一种基于面向过程得新编程思想,顾名思义就是该思想是站在对象得角度看待问题,我们把多个功能合理放到不同对象里,强调得是具备某些功能的对象具备某种功能的实体,称为对象。面向对象最小的程序单元是:类。面向对象更加符合常规的思维方式,稳定性好,可重要性强,易于开发大型软件产品,有良好的可维护性。
在软件工程上,面向对象可以使工程更加模块化,实现更低的耦合和更高的内聚
6.什么是数据结构
计算机保存,组织数据的方式
7.Java的数据结构有哪些?
- 线性表(ArrayList)
- 链表(LinkedList)
- 栈(Stack)
- 队列(Queue)
- 图(Map)
- 树(Tree)
8.什么是OOP?
面向对象编程
9.类与对象的关系?
类是对象的抽象,对象是类的具体,类是对象的模板,对象是类的实例
10.Java中有几种数据类型?
整形:byte,shourt,int,long
浮点型:float,double
字符型:char
布尔型:boolean
11.标识符的命名规则
-
标识符的含义:
是指在程序中,我们自己定义的内容,譬如,类的名字,方法名称以及变量名称等等,都是标识符。 -
命名规则:(硬性要求)
标识符可以包含英文字母,0-9的数字,$以及_
标识符不能以数字开头
标识符不是关键字
-
命名规范:(非硬性要求)
类名规范:首字符大写,后面每个单词首字母大写(大驼模式)
变量规范:首字母小写,后面每个单词首字母大写(小驼模式)
方法名规范:同变量名
12.instanceof关键字的作用
instanceof严格来说Java中的一个双目运算符,用来测试一个对象是否为一个了类的实例,用法为:
boolean result=0bj insranceof Class
其中obj为一个对象,Class表示一个类或者一个接口,当obj为Class的对象,或者是其直接或间接子类,或者是其接口的实现类,结果result都返回true,否则返回false
注意:编译器会检查obj是否能转换成右边的class类型,如果不能转换则直接报错,如果不能确定类型,则通过编译,具体看运行时定
int i=0;
System.out.println(i instanceof Integer);
//编译不通过i必须是引用类型,不能是基本类型
System.out.println(i instanceof Object);
//编译不通过
Integer integer=newInteger(1);
System.out.println(integer instanceof Integer);
//true
//false,在JavaSE规范中对instanceof运算符的规定就是:如果obj为null,那么返回false
System.out.println(nullinstancceofObject);
13.什么是隐式转换,什么是显式转换
显式转换就是类型转换,把一个大类型的数据强制赋值给小类型的数据;隐式转换就是大范围的变量能够接受小范围的数据;隐式转换和显式转换其实就是自动类型和强制类型转换
14.char类型能不能转换为int类型?能不能转化成string类型,能不能转成double类型?
char在Java中也是比较特殊的类型,它的int值从1开始,一共有2的16次方个数据
Char<int<long<float<double;char类型可以隐式转换称为int,double类型,但不能隐式转换成string;如果char类型转换成为byte,shout类型的时候,需要强制转换
15.什么拆装箱?
装箱就是自动将基本数据类型转换为包装器(int——>Integer);
调用方法:Integer的 valueOf(int)方法
拆箱就是自动把包装器类型转换为基本数据类型(Integer——>int);
调用方法:Integer的intValue方法
在Java SE5之前,如果要生成一个数值为10的Integer对象,必须这样进行:
Integer i=new Integer(10);
而在从Java SE5开始就提供了自动装箱的特性,如果要生成一个数值为10的Integer对象,只需要这样就可以了:
Integer i=10;
以下代码会输出什么?
public class Main{
public static void main(String[] args){
Integer i1=100;
Integer i2=100;
Integer i3=200;
Integer i4=200;
System.out.println(i1==i2);
System.out.println(i3==i4);
}
}
结果:
true
false
16.java中的包装类都是哪些?
byte:Byte short:Short int:Integer long:Long
float:Float double:Double char:Character boolean:Boolean
17.一个Java类中包含哪些内容
属性、方法、内部类、构造类、代码块
18.针对浮点型数据运算出现的误差问题,应当如何解决?
使用Bigdecimal类进行浮点数据的运算
19面向对象的特征有哪些?
抽象:
抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么。
继承:
继承是从已有类得到继承信息创建新类的过程,提供继承信息的类被称为父类(超类,基类);得到继承信息的类被称为子类(派生类)。继承让变化中的软件系统有了一定的延续性,同时继承也是封装程序中可变因素的重要手段(如果不能理解,请阅读闫宏博士的《Java与模式》或《设计模式精解》中关于桥梁模式的部分)
封装:
通常认为封装就是把数据和操作数据的方法绑定起来,对数据访问
只能通过已定义的接口。面向对象的本质就是将现实世界描绘成一系列完全自治、封闭的对象。我们在类中编写的方法就是对实现细节的一种封装;我们编写一个类就是对数据和数据操作的封装,可以说,封装就是隐藏一切可隐藏的东西,只向外界提供最简单的编程接口(可以想想普通洗衣机和全自动洗衣机的差别,明显全自动洗衣机封装更好因此操作起来更简单;我们现在使用的智能手机也是封装的足够好的,因为几个按键就搞定了所有的事情)
多态性:
多态性是指允许不同子类型的对象对同一消息做出不同的响应
简单的说就是用同样的对象引用调用同样的方法但是做了不同的事情。多态性分为编译时的多态性和运行时的多态性。如果将对象的方法视为对象向外界提供的服务,那么运行时的多态性可以解释为:当A系统访问B系统提供的服务时,B系统有多种提供服务的方式,但一切对A系统都是透明的(就像电动剃须刀是A系统,它的供电系统是B系统,B系统可以使用电池供电或者用交流电,甚至还有可能是太阳能,A系统只会通过B类对象调用供电的方法,但并不知道供电系统的底层实现是什么,究竟通过何种方式获得了动力)。方法重载(overload)实现的是编译时的多态性(也称为前绑定),而方法重写(override)实现的是运行时的多态性(也称为后绑定)。运行时的多态是面向对象最精髓的东西,要实现多态要做两件事情:1、方法重写(子类继承父类并重写父类中已有的或者抽象的方法);2、对象造型(父类型引用引用子类对象,这样同样的引用调用同样的方法会根据子类对象不同而表现不同的行为)
20.访问修饰符public,private,protected,以及不写(默认)时的区别?
修饰符 | 当前类 | 同包 | 子类 | 其他包 |
---|---|---|---|---|
public | 能 | 能 | 能 | 能 |
protected | 能 | 能 | 能 | 不能 |
default | 能 | 能 | 不能 | 不能 |
private | 能 | 不能 | 不能 | 不能 |
类的成员不写访问修饰时默认是defalut。默认对于同一个包中的其他类相当于公开(public),对于不是同一个包中的其他类相当于私有(private)。或者保护(proteted)对子类相当于公开,对不是同一个包中的没有父子关系的类相当于私有。Java中,外部类的修饰符只能是public或默认,类的成员(包括内部类)的修饰符可以是以上四种。