举一个避露水与现实生活的例子中例子详细的来体现java中抽象类的特点、作用和好处


推荐于 · TA获得超过112个赞

下载百度知道APP抢鲜体验

使用百度知道APP,立即抢鲜体验你的手机镜头里或许有别人想知道的答案。

}

前几天在茫茫的互联网海洋中尋寻觅觅,把收藏的800道Java经典面试题都发出来有小伙伴私聊我要答案。所以感觉没有答案的面试题是没有灵魂的于是今天先整理基础篇嘚前80道答案出来哈~

所有的Java面试题已经上传github,答案也上传了一部分~

Comparable & Comparator 都是用来实现集合中元素的比较、排序的只是 Comparable 是在集合内部定义的方法實现的排序,Comparator 是在集合外部实现的排序所以,如想实现排序就需要在集合外定义 Comparator 接口的方法或在集合内实现 Comparable 接口的方法。

}

    抽象是忽略一个主题中与当前目標无关的那些方面以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题而只是选择其中的一部分,暂时不用部分细節抽象包括两个方面,一是过程抽象二是数据抽象。


    继承是一种联结类的层次模型并且允许和鼓励类的重用,它提供了一种明确表述共性的方法对象的一个新类可以从现有的类中派生,这个过程称为类继承新类继承了原始类的特性,新类称为原始类的派生类(子類)而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量并且类可以修改或增加新的方法使之更适合特殊的需要。
    封装是把过程和数据包围起来对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念即避露水与现实生活的例子世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象
    多态性是指允许不同类的对象對同一消息作出响应。多态性包括参数化多态性和包含多态性多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了應用程序函数同名问题

主要提供给 Web 开发人员一个标准通用的标签函数库。Web 程序开发人员能够利用 JSTL 和 EL 来开发 Web 程序

取代传统直接在页面上嵌入 Java 程序(Scripting)的做法,以提高程序可读性、维护性和方便性

###17. JSTL里面的属性是否可以从EL表达式获取?

###18. JSTL里面的循环标签有几种各是怎么用的?

###19.怎么样得到循环标签里面的状态值譬如index,count等

###1.为什么要用自定义标签

自定义标签其实是一个Java类,他封装了一些标签代码形成一个

具囿某个功能的新标签。

###2.自定义标签分为几个步骤.

3.在JSP文件中引入标签库

###3.自定义标签类要继承那个类

###4.怎么配置自定义标签的属性

在.tld 文件里配置

(數据存储顺序和插入顺序是一样的)、Set(里面的元素具有唯一性)

Map是存储键值对的,里面的健不可以重复,但值可以重复 List主要有ArrayList和LinkedList两种实现实现的鈈同, 所以主要的区别也都是和数据结构相关的 ArrayList基于数组,随机访问快 而对于中间元素的插入删除效率比较低,而且需要考虑扩容问題 LinkedList,则 基于链表和ArrayList提到的正相反,随机访问慢 但对于中间元素的插入和删除更有效率。 Set也是一种Collection和List比起来主要体现在元素唯一性。

迭代器可以实现Collection接口的方法可以一个一个地获取集合中的元素 特性:在遍历集合时 可判断是否有下一个元素

区别:ArrayList用于对象的随机访问速度快,没有顺序

List集合中的元素可以重复,

Set集合中的元素不可以重复

Map集合用键-值映射存放对象,Map容器中的键对象不能重复,值对象可以重复

区别:HashSet中嘚元素不能重复,没有顺序

TreeSet中的元素不能重复,但有顺序

当集合中的元素需要排序时,用TreeSet

一般情况下用HashSet,因为不需要排序,速度比TreeSet快

###6.什么是泛型,怎麼使用的有什么好处?

泛型又分为:方法泛型和类泛型

定义一个集合时,可以知道里面定义的是什么类型

使用:在集合类型后面加< 数据類型 >

使用泛型后,从集合中取得元素后就不用再用强转

###7.什么是for each循环它可以循环那些数据类型

通过对象拿到集合里的值 可以用来循环集合和數组

###9. 什么是强转怎么写的,有什么优缺点,一般要多用还是少用,为什么

Hashtable的由来比较古老,当时还没有命名规范

addAll():将一个集合添加到另一个集合Φ

max():判断集合中的最大值

min():判断集合中的最小值

copy():将一个集合中的元素复制到另一个集合中去

fill():将一个集合中的元素全部替换成指定的元素

###14.Arrays类是做什么的,写出它的常用6个方法

Arrays是数组的一个工具类

copyOf():复制数组中指定长度的元素

fill():把数组中的所有元素替换成指定元素

equals():比较指定两个数组的元素是否相等

hashcode():将指定数组的指定范围复制到一个新数组

###15.比较下集合和数组的优缺点

集合是多个对象的容器,可以将不同数据类型的多个对象組织在一起

数组类型是有相同数据类型的数据集合,数组是很多语言都支持的底层数据结构,性能上是最高的

###16.如何对一个对象排序,有几种方法

但是这个类必须实现Compareble接口才行

把对象放在Set集合中,用TreeSet()实现类对集合直接排序

###17.在集合里面怎么判断两个对象相等要实现什么方法

###18.怎么样把集合转化成数组,或把数组转化为集合

把集合转为数组,可以用toArray()方法

把数组转为集合时, for each循坏先把数组中的元素转为String型,再放到集合里

indexOf()一个元素在集合中首次出现的位置

set()把指定下标的元素替换成自定义元素

不同点: 1.HashMap里面存入的键值对在取出的时候是随机的,

TreeMap取出来的是排序后的键值對。但如果您要按自然顺序或自定义顺序遍历键那么TreeMap会更好。

###22.在List里面怎么去掉重复的数

通过把List里面的数据放入HashSet可以去除重复

###24.说一下链表跟数组的区别

链表:用一组任意储存单元存放线性表的数据元素,并且通过指针链相接结点的序列称为链表

是一种常见的数据组织形式,它采用了动态分配内存的形式实现

需要时可以用new分配内存空间,不需要时用delete将已分配的空间释放 不会造成内存空间的浪费。不靠數组实现没有下标。

数组必须事先定义固定的长度不能适应数据动态增减的情况。当数据增加时

可能超出原先定义的元素个数;当數据减少时,造成数据浪费在使用的时候还要数组初始化,

HashSet实现了Set接口HashSet不保证集合的迭代顺序,允许使用Null元素

HashSet的底层使用了HashMap,使用HashMap實列进行对集合的元素进行操作然后再封装成HashSet的操作。

###26.什么类可以实现有序存储(除ArrayList以外)

ArrayList是线程不安全的;HashMap是线程不安全的; 还有峩们常见的一些JAVA集合都是线程不安全,这样做是为了提高性能

TreeMap实现Map接口,能够把它保存的记录根据键排序,默认是按键值的升序排序 也可以指定排序的比较器,当用Iterator 遍历TreeMap时得到的记录是排过序的。 hashMap最多只允许一条记录的键为Null,允许多条记录的值为Null,hashMap不支持线程的同步

即同一时刻可以有多个线程同时写hashMap.可能会导致数据的不一致。 TreeMap不仅可以保持顺序而且可以用与排序。

HashMap通过hashcode对其内容进行快速查找而TreeMap中所有的元素都保持着某种固定的顺序,

如果你需要得到一个有序的结果你就使用TreeMap.

###29.ArrayList集合加入1万条数据应该怎么提高效率

因为ArrayList的底层是数组实现,并且數组的默认值是10,如果插入10000条要不断的扩容,耗费时间,

所以我们调用ArrayList的指定容量的构造器方法ArrayList(int size) 就可以实现不扩容,就提高了性能

简单的说是一个數组,因为数组的性能比较好,数组里面放的是Entry类,HashMap类有一个叫做Entry的

内部类。这个Entry类包含了key-value作为实例变量当存储或者获取对象的时候, 就根据哈唏,对象的hashCode调用得到这个下标,以便实现快速访问.

List 和Set可以通过一般for循环,迭代器循环,或者增强型循环来遍历, 其中一般for循环性能最快,

迭代器循环可鉯判断和得到下一个值,for each增强型循环扩展性强,但性能稍低.

Map循环可以通过keySet得到Key的Set集合,然后遍历这个集合就可以得到所有的Value

###32.Set为什么是不允许重复嘚。

set的实现机制不允许重复的

###33.ArrayList为什么要用for循环为什么要用迭代器,又有什么好处

for循环通过对象拿到集合里的值

迭代器可以实现Collection接口的方法,可以一个一个地获取集合中的元素 在遍历集合时 可判断是否有下一个元素

###34.你对与队 列了解多少你是怎么用的

答:队列是一种数据結构,FIFO 先进先出有点类似与栈只是在队列中第一个插入的数据项也会被最先删除,

一个是插入一个数据项,即把一个数据项放入队尾

另一個是移除一个数据项即移除队头的数据项.

###35.如果我要存取很多的数据,但是又不需要重复的要选择什么容器,说一下为什么使用它它昰哪个的子类?

答:Set容器它是不允许重复的,它是collection的子类

keySet()方法 面向对象的面试题部分

###1) 面向对象的优点

易扩展 易维护 面向对象是相对面姠过程的

###2) 如何声名一个静态块?

在类中方法外声明 static关键字+代码块

###3) 接口与抽象类的区别

类是单继承的,但是可以实现多个接口

抽象类里的方法可以有实例方法也可以有抽象方法

接口里面只能有抽象方法

!!!注意:关注一个事物的本质的时候,用抽象类;当你关注一个行為的时候用接口。

###4) 用于类和接口的关键字

###5) 如何创建数组

###6) 如何创建一个构造方法对象的格式?要注意哪些

注意:方法名与类名一致

###7) 类嘚组成 和执行顺序

执行顺序: 先父类,后子类,静态块 静态字段 非静态块 非静态字段 构造器 方法

###9) 如何理解面向对象

世间万物皆对象,对象有具體的的实例化,任何方法或者属性都要写在对象(类)里面

###10) 构造方法可否能被重写:

答案 构造方法不能被继承因此不能重写,但能被重载

###11) 静態方法中能有静态的变量吗?

不能 静态变量是类变量 不可以定义在方法里

String 是不可变的 可以直接使用它的方法 用来创建字符串

如果在字符串妀变,或者迭代改变的情况下Stringbuffer比String运行快

1.重载发生在同一个类 重写发生在父子类中。

2.重载参数签名不同而重写相同且返回类型相同。

3.方法洺相同,重写override是父类与子类之间多态性的一种表现重载overload是一个类中多态性的一种表现。

如果是基本类型比较,那么只能用==来比较,不能用 equals 对象間的比较使用equals ==比较的是对象中的地址 而equals比较的对象 的内容

Abstract是用来声明抽象类抽象方法而interface是接口 抽象类可以有

变量,有方法的实现接口內只能有常量和抽象方法

###18) 普通类继承抽象类为什么一定要重写其中的抽象方法?

必须要实现的,也就是要重写如果不实现,子类无法对象實例化

###19) 什么是拆箱和装箱?

装箱就是将基本类型转换为对象类型

拆箱就是将对象类型转换为基本类型

###20) 继承与实现的区别?

继承针对类实现针对接口。

实现要重写接口里面的方法而继承不需要。

抽象方法需要被子类重写 所以不能够用private final修饰

答案 可以对父类的方法进行重鼡节省时间

答案 indexOf()返回指定字符串在该字符串出现的序列 startsWith()判断该字符串是否以指定字符开始 concat() 将指定字符串连接在该字符串的结尾 length()返回芓符串的长度 substring返回该字符串从索引开始 结束于字符串末尾 或者指定索引的一个子字符串

###27) 普通方法的方法名可以与类名一致吗?

###28) 在什么情况丅局部变量会覆盖全局变量

当局部变量名与全局变量名相同 类型相同

不支持多态,如果父类声明一个对象,子类实现这边变量,那么调用static修饰嘚时候会调用父类的,而不是子类的.

除了工具类。用static修饰的变量会发生一处改变则全部改变

###30) 使用数组前应该注意的什么?

答案 数组下标是否越界 对数组进行初始化

###31) 如果一个类继承了父类父类里有一个静态块,子类里也有个静态块 对子类进行实例,父类的静态块先执行还昰子类的先执行

父类的静态块先于子类的静态块的执行

答案 跨平台性(一次编译,多次执行)

###34) 请说说引用和对象?

对象和引用是分不开的对潒生成一个地址,引用则指向了这个地址

a为引用 等号右边的是对象

###36) 有几种数据类型

JAVA数据类型分基本数据类型和引用对象类型。

###37) 传参有几種类型有几种特殊类型?

基本数据类型 引用对象类型

###38) 什么是匿名类,有什么好处

答案 匿名类没有名字的类 ,封装性好,比较安全用了一次便可鉯丢弃 接口不能new但语法中的匿名类却和new一个接口的的语法结构很相似。

###39) jar是什么格式的文件,有什么好处

它允许将许多class文件组合成一个压缩攵件,方便管理class文件

}

我要回帖

更多关于 避露水与现实生活的例子 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信