1.接口和抽象类的区别

1.接口是行为的抽象,是一种行为的规范,接口实现的目的主要是多继承;

2.抽象类是对类功能的提取,是一种模板设计

2.==和eqauls()的区别?

  • ==是运算符,用于比较两个变量是否相等,对于基本类型而言比较的是变量的值,对于对象类型而言比较的是对象的地址.
  • equals() 是Object类的方法,用于比较两个对象内容是否相等.默认Object类的 equals() 实现如下:
public class Object {......public boolean equals(Object obj) {return (this == obj);}......
}

不难看出此时equals()是比较两个对象的地址,此时直接==比较的的结果一样.对于可能用于集合存储中的对象元素而言,通常需要重写其equals()方法.

a==b与a.equals(b)有什么区别

如果a 和b 都是对象,则 a==b 是比较两个对象内存地址,只有当 a 和 b 指向的是堆中的同一个对象才会返回 true.而 a.equals(b) 是进行内容比较,其比较结果取决于equals()具体实现.多数情况下,我们需要重写该方法,如String 类重写 equals()用于两个不同对象,但是包含的字母相同的比较:

    public boolean equals(Object anObject) {if (this == anObject) {                        // 同一个对象直接返回truereturn true;}if (anObject instanceof String) {String anotherString = (String)anObject;int n = value.length;if (n == anotherString.value.length) {char v1[] = value;char v2[] = anotherString.value;int i = 0;while (n-- != 0) {               // 按字符依次比较if (v1[i] != v2[i])return false;i++;}return true;}}return false;}

3.深拷贝和浅拷贝的区别是什么?

浅拷贝:被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象.换言之,浅拷贝仅仅复制所考虑的对象,而不复制它所引用的对象.

深拷贝:被复制对象的所有变量都含有与原来的对象相同的值.而那些引用其他对象的变量将指向被复制过的新对象.而不再是原有的那些被引用的对象.换言之.深拷贝把要复制的对象所引用的对象都复制了一遍.

4.String,StringBuffer和StringBuilder区别?

String是字符串常量,final修饰;StringBuffer字符串变量(线程安全);StringBuilder 字符串变量(线程不安全).此外StringBuilder和StringBuffer实现原理一样,都是基于数组扩容来实现的.

5.重载和重写的区别是什么?

 重载(Overload)是让类以统一的方式处理不同类型数据的一种手段,实质表现就是多个具有不同的参数个数或者类型的同名函数(返回值类型可随意,不能以返回类型作为重载函数的区分标准)同时存在于同一个类中,是一个类中多态性的一种表现(调用方法时通过传递不同参数个数和参数类型来决定具体使用哪个方法的多态性)。

重写(Override)是父类与子类之间的多态性,实质是对父类的函数进行重新定义,如果在子类中定义某方法与其父类有相同的名称和参数则该方法被重写,不过子类函数的访问修饰权限不能小于父类的;若子类中的方法与父类中的某一方法具有相同的方法名、返回类型和参数表,则新方法将覆盖原有的方法,如需父类中原有的方法则可使用 super 关键字。

6.请简述java异常体系

首先我们来看一下java异常体系结构图

java异常体系

Thorwable类(表示可抛出)是所有异常和错误的超类,两个直接子类为Error和Exception,分别表示错误和异常。

其中异常类Exception又分为运行时异常(RuntimeException)和非运行时异常,  这两种异常有很大的区别,也称之为不检查异常(Unchecked Exception)和检查异常(Checked Exception)。

Error与Exception

Error是程序无法处理的错误,它是由JVM产生和抛出的,比如OutOfMemoryError、ThreadDeath等。这些异常发生时,Java虚拟机(JVM)一般会选择线程终止。

Exception是程序本身可以处理的异常,这种异常分两大类运行时异常和非运行时异常。程序中应当尽可能去处理这些异常。

运行时异常和非运行时异常

运行时异常都是RuntimeException类及其子类异常,如NullPointerException、IndexOutOfBoundsException等,这些异常是不检查异常,程序中可以选择捕获处理,也可以不处理。这些异常一般是由程序逻辑错误引起的,程序应该从逻辑角度尽可能避免这类异常的发生。

非运行时异常是RuntimeException以外的异常,类型上都属于Exception类及其子类。从程序语法角度讲是必须进行处理的异常,如果不处理,程序就不能编译通过。如IOException、SQLException等以及用户自定义的Exception异常,一般情况下不自定义检查异常。

9.访问修饰符public、private、protected、以及不写(default默认)时的区别?

10.请简述java 128陷阱

public static void main(String[] args) {Integer num1 = 100;Integer num2 = 100;System.out.println(num1 == num2);Integer num3 = 128;Integer num4 = 128;System.out.println(num3 == num4);
}

解析:

答案就在Integet的valueOf()方当中,如果我们的数值在-128-127之间的数值都存储在有一个catch数组当中,该数组相当于一个缓存,当我们在-128-127之间进行自动装箱的时候,我们就直接返回该值在内存当中的地址,所以在-128-127之间的数值用==进行比较是相等的。而不在这个区间的数,需要新开辟一个内存空间,所以不相等。

11.获取Class对象的三种方式

1.Object类中的getClass方法

2.通过对象静态属性 .class来获取对应的Class对象

3.只要通过给定类的字符串名称就可以获取该类,更为拓展

12.请简述static关键字

13.请简述final关键字

14.请简述this关键字

15.请简述构造器的特点

1.构造器要与类同名 2.当我们new对象时,new 后边的方法就代表着我们的构造函数 3.我们的每一个类当中都有一个默认的不显示的无参构造器,当我们在这个类当中重写写一个构造器的时候,我们默认调用的就是我们显示的构造器 4.我们的构造器是没有返回值的,如果有返回值,即便你的方法名和类名相同那么也不是构造函数 5.我们的类当中是有一个或一个以上的构造函数

16.常见的集合底层实现

ArrayList底层是数组。 LinkedList底层是双向链表。 HashMap底层与HashTable原理相同,Java 8版本以后如果同一位置哈希冲突大于8则链表变成红黑树。 HashTable底层是链地址法组成的哈希表(即数组+单项链表组成)。 HashSet底层是HashMap。 LinkedHashMap底层修改自HashMap,包含一个维护插入顺序的双向链表。 TreeMap底层是红黑树。 LinkedHashSet底层是LinkedHashMap。 TreeSet底层是TreeMap。

17.ArrayList和LinkedList的区别?

LinkedList基于链表的数据结构;ArrayList基于动态数组的数据结构 LinkedList 在插入和删除数据时效率更高,ArrayList 查询效率更高;

18. HashMap 的实现原理?

HashMap概述: HashMap是基于哈希表的Map接口的非同步实现。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。

HashMap的数据结构: 在Java编程语言中,最基本的结构就是两种,一个是数组,另外一个是模拟指针(引用),所有的数据结构都可以用这两个基本结构来构造的,HashMap也不例外。HashMap实际上是一个“链表散列”的数据结构,即数组和链表的结合体。

HashMap 基于 Hash 算法实现的

1.当我们往Hashmap中put元素时,利用key的hashCode重新hash计算出当前对象的元素在数组中的下标 2.存储时,如果出现hash值相同的key,此时有两种情况。 (1)如果key相同,则覆盖原始值; (2)如果key不同(出现冲突),则将当前的key-value放入链表中 3.获取时,直接找到hash值对应的下标,在进一步判断key是否相同,从而找到对应值。 4.理解了以上过程就不难明白HashMap是如何解决hash冲突的问题,核心就是使用了数组的存储方式, 然后将冲突的key的对象放入链表中,一旦发现冲突就在链表中做进一步的对比。

需要注意Jdk 1.8中对HashMap的实现做了优化,当链表中的节点数据超过八个之后,该链表会转为红黑树来提高查询效率,从原来的O(n)到O(logn)

19.HashMap和Hashtable的区别

1 HashMap不是线程安全的

HashMap是map接口的子类,是将键映射到值的对象,其中键和值都是对象,并且不能包含重复键,但可以包含重 复值。HashMap允许null key和null value,而hashtable不允许。

2   HashTable是线程安全。

HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable。

HashMap允许将null作为一个entry的key或者value,而Hashtable不允许。 HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为contains方法容易让人引起误解。 Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现。 最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap 就必须为之提供外同步。 Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差

20.List、Set、Map之间的区别是什么?

Object中的equals()和hashco

java基础简答题1相关推荐

  1. 2018java二级考试大纲_2018年全国计算机二级java考试简答题练习二

    2018年全国计算机二级java考试简答题练习二 1.接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)? 答:接口可以继承接 ...

  2. 什么是用户与计算机硬件之间的桥梁,计算机应用基础简答题(附答案)

    计算机应用基础简答题 1. 什么是操作系统?操作系统的作用是什么? 答:操作系统在计算机结构中处于硬件裸机与软件系统之间的层次上,它不仅管理位于内层的硬件资源,而且管理和协调外层各种软件资源,为用户提 ...

  3. 计算机基础应用在线免费答题,计算机应用基础简答题附答案.doc

    计算机应用基础简答题附答案.doc 计算机应用基础简答题1.什么是操作系统操作系统的作用是什么答操作系统在计算机结构中处于硬件裸机与软件系统之间的层次上,它不仅管理位于内层的硬件资源,而且管理和协调外 ...

  4. 计算机应用简答,计算机应用基础简答题.doc

    <计算机应用基础简答题.doc>由会员分享,提供在线免费全文阅读可下载,此文档格式为doc,更多相关<计算机应用基础简答题.doc>文档请在天天文库搜索. 1.计算机应用基础 ...

  5. Java Web简答题

    Java web简答题 1.<%@include %>和<jsp:include />的区别. <%@include %>先包含后处理,只能包含静态文件 <j ...

  6. Linux基础简答题八个(含答案)

    Linux基础简答题 1.简述linux的几个运行级别及其相应的含义. 2.简述Linux系统的目录结构. 3.简述开源软件的定义. 4.简述将新添加的硬盘80G(/dev/sdd)分为主分区1:20 ...

  7. 举例说明计算机在六个方面的应用,第六章 计算机应用基础简答题答案.doc

    <计算机应用基础>课后习题简答题答案 习题一 1.计算机的应用领域主要有哪些? 答:1.科学计算:2.事务处理:3.过程控制:4.辅助工程:5.网络应用 2.何谓指令?指令中的操作码.操作 ...

  8. 计算机科学与基础 简答题,计算机科学基础习题与解析

    计算机科学基础习题与解析 语音 编辑 锁定 讨论 上传视频 <计算机科学基础习题与解析>是2020年清华大学出版社出版的图书,作者是余宏华.刘小丽. 书    名 计算机科学基础习题与解析 ...

  9. 计算机网络简答题汇总,大学计算机基础简答题汇总(题库)

    答:母版是所有幻灯片的底版.使用母版的作用是用来设置文稿中的每张幻灯片的预设格式,这些格式包括每张幻灯片的标题及正文文字的位置和大小.项目符号的样式.背景图案等.由于一套幻灯片受到同一母版的主控,幻灯 ...

  10. 大学计算机基础知识简答题,大学计算机基础简答题汇总(题库).doc

    计算机与信息表示基础习题 四.简答题? 1.?简述计算机的发展历程?? 答:(1)第一代:1946---1958年,电子管计算机: (2)第二代:1958---1964年,晶体管计算机: (3)第三代 ...

最新文章

  1. Java项目:在线美食网站系统(java+SSM+jsp+mysql+maven)
  2. MT6592 经验积累
  3. SQL Server 2005 XML 操作总结(七)属性操作——插入、修改操作
  4. windows系统-汇编语言与机器码的关系
  5. Hibernate事实:集成测试策略
  6. java api class_Java API:Object class
  7. ultraedit教程java_Java开发工具配置UltraEdit基础教程
  8. 电脑换ip软件_如何使用爱加速换iP软件
  9. VC中Radio控件的用法
  10. ps怎么做出针式打印机打印效果字体?
  11. pandas警告SettingWithCopyWarning: A value is trying to ...原理和解决方案
  12. 我的阿里云盘资源搜索引擎首次试运行
  13. r语言c函数怎么用,R语言学习笔记——C#中如何使用R语言setwd()函数
  14. 关于组织举办区块链与隐私计算等新技术融合应用高级研修班的通知
  15. 进程相关概念(一文搞懂)
  16. Dart —— 函数 函数参数 匿名函数
  17. 乔·克拉克(Joe Clark)关于版权的胡思乱想
  18. JAVA-IDEA报错:Error:Cannot run program “C:\Program Files\Java\jdk1.8.0_20\bin\java.exe“
  19. 应该怎么记账,一目了然
  20. 微软将裁员1.8万人

热门文章

  1. 【嵌入式】---- 单片机常用单位
  2. Shell编程 单引号双引号反引号的区别
  3. 【K8S集群安装二】K8S集群安装步骤
  4. 科技论文写作课程笔记
  5. mysql字段包含空格查询
  6. 笔记本电脑如何安装Linux系统
  7. 杨帅浙江大学计算机,2013届浙江大学优秀毕业研究生.DOC
  8. 网络摄像机—什么是GOP
  9. CRM系统与呼叫中心系统对接
  10. soliworks三维机柜布局(二)创建设备位置