1. List 和 Set 区别
 
    List 特点:元素有放入顺序,元素可重复
    Set 特点:元素无放入顺序,元素不可重复,重复元素会覆盖掉
 
2. List 和 Map 区别
 
    List 是对象集合,允许对象重复。
    Map 是键值对的集合,不允许 key 重复
    
3. ArrayList 与 Vector 区别
 
    ArrayList 和 Vector 都是用数组实现的,主要有三个区别:
  • Vector 是多线程安全的,线程安全就是说多线程访问同一代码,不会产生不
    确定的结果。而 ArrayList 不是,这个可以从源码中看出,Vector 类中的方法很多
    有 synchronized 进行修饰,这样就导致了 Vector 在效率上无法与 ArrayList 相比;
    两个都是采用的线性连续空间存储元素,但是当空间不足的时候,两个类的
    增加方式是不同。
  • Vector 可以设置增长因子,而 ArrayList 不可以。
  • Vector 是一种老的动态数组,是线程同步的,效率很低,一般不赞成使用。
 
4. Arraylist 与 LinkedList 区别
 
    Arraylist:
    优点:ArrayList 是实现了基于动态数组的数据结构,因为地址连续,一旦数据
    存储好了,查询操作效率会比较高(在内存里是连着放的)。
    缺点:因为地址连续, ArrayList 要移动数据,所以插入和删除操作效率比较
    低。
    LinkedList:
    优点:LinkedList 基于链表的数据结构,地址是任意的,所以在开辟内存空间
    的时候不需要等一个连续的地址,对于新增和删除操作 add 和 remove,LinedList
    比较占优势。LinkedList 适用于要头尾操作或插入指定位置的场景
    缺点:因为 LinkedList 要移动指针,所以查询操作性能比较低。
 
5. HashMap 和 Hashtable 的区别
 
    1.hashMap 去掉了 HashTable 的 contains 方法,但是加上了 containsValue
    ()和 containsKey()方法。
    2.hashTable 同步的,而 HashMap 是非同步的,效率上逼 hashTable 要高。
    3.hashMap 允许空键值,而 hashTable 不允许。
 
6. 创建线程的方式及实现
 
    一、继承 Thread 类创建线程类
    二、通过 Runnable 接口创建线程类
    三、通过 Callable 和 Future 创建线程
 
7. 访问权限修饰符 以及区别
 
    修饰符 当前类 同包 子类 其他包
    public       √       √       √        √
    protected √       √       √         ×
    default     √       √       ×         ×
    private     √       ×       ×         ×
 
8. 是否可以继承 String
 
    String 类是 final 类,不可以被继承。    
 
9. 重载(overload)和重写(override)的区别?
 
方法重载是指同一个类中的多个方法具有相同的名字,但这些方法具有不同的参数列表,即参数的数量或参数类型不能完全相同
 
方法重写是存在子父类之间的,子类定义的方法与父类中的方法具有相同的方法名字,相同的参数和相同的返回类型
    注:
        (1)子类中不能重写父类中的final方法
        (2)子类中必须重写父类中的abstract方法
 
10.抽象类(abstract+ class)和接口(interface)有什么异同?
 
    不同:
        抽象类:
            1.抽象类中可以定义构造器
            2.可以有抽象方法和具体方法
            3.接口中的成员全都是 public 的
            4.抽象类中可以定义成员变量
            5.有抽象方法的类必须被声明为抽象类,而抽象类未必要有抽象方法
            6.抽象类中可以包含静态方法    
            7.一个类只能
            继承一个抽象类
        接口:
            1.接口中不能定义构造器
            2.方法全部都是抽象方法
            3.抽象类中的成员可以是 private、默认、protected、public
            4.接口中定义的成员变量实际上都是常量
            5.接口中不能有静态方法
            6.一个类可以实现多个接口
    相同:
            1.不能够实例化
            2.可以将抽象类和接口类型作为引用类型
            3.一个类如果继承了某个抽象类或者实现了某个接口都需要对其中的抽象方法全部进行实现,否则该类仍然需要
                被声明为抽象类
 
11.==和 equals 的区别?
 
    equals 和== 最大的区别是一个是方法一个是运算符。
        ==:如果比较的对象是基本数据类型,则比较的是数值是否相等;如果比较的是引用数据类型,则比较的是对象
    的地址值是否相等。
        equals():用来比较方法两个对象的内容是否相等。
    注意:equals 方法不能用于基本数据类型的变量,如果没有对 equals 方法进行重写,则比较的是引用类型的变
    量所指向的对象的地址。
 
12.break 和 continue 的区别?
 
    break 和 continue 都是用来控制循环的语句。
    break 用于完全结束一个循环,跳出循环体执行循环后面的语句。
    continue 用于跳过本次循环,执行下次循环。
 
13.throw 和 throws 的区别
 
        throw:
    1)throw 语句用在方法体内,表示抛出异常,由方法体内的语句处理。
    2)throw 是具体向外抛出异常的动作,所以它抛出的是一个异常实例,执行 throw 一定是抛出了某种异常。
        throws:
    1)throws 语句是用在方法声明后面,表示如果抛出异常,由该方法的调用者来进行异常的处理。
    2)throws 主要是声明这个方法会抛出某种类型的异常,让它的使用者要知道需要捕获的异常的类型。
    3)throws 表示出现异常的一种可能性,并不一定会发生这种异常。
 
14.final、finally的区别?
 
    1)final:用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,被其修饰的类不可继承。
    2)finally:异常处理语句结构的一部分,表示总是执行。
 
15.Math.round(11.5)等于多少?Math.round(- 11.5) 又等于多少?
 
    Math.round(11.5)的返回值是 12,Math.round(-11.5)的返回值是-11。四舍五入的原理是在参数上加 0.5
    然后进行取整。
 
16.数组有没有 length() 方法?String 有没有 length() 方法?
 
    数组没有 length()方法,而是有 length 的属性。String 有 length()方法。JavaScript 中,获得字符串的长度是
    通过 length 属性得到的,这一点容易和 Java 混淆。
 
17.String 、StringBuilder 、StringBuffer 的区别?
 
    这三个类之间的区别主要是在两个方面,即运行速度和线程安全这两方面。
 
(1)首先说运行速度,或者说是执行速度,在这方面运行速度的快慢为:StringBuilder>StringBuffer>String
    String最慢的原因:String为字符串常量,而StringBuilder和StringBuffer均为字符串变量,即String对象一旦创建之后该对象是不可更改的,但后两者的对象是变量,是可以更改的。
(2)再来说线程安全
    在线程安全上,StringBuilder是线程不安全的,而StringBuffer是线程安全的
(3)总结一下
    String:适用于少量的字符串操作的情况
    StringBuilder:适用于单线程下在字符缓冲区进行大量操作的情况
    StringBuffer:适用于多线程下在字符缓冲区进行大量操作的情况
 
18.Java 的基本数据类型都有哪些各占几个字节?
 
    byte     1    
    short   2
    int     4
    long    8
    float   4
    double  8
    char     2
    boolean 1
 
19.List ,Set, Map 是否继承来自 Collection 接口? 存取元素时, 有何差异?
 
       List,Set 是继承 Collection 接口; Map 不是。
        List:元素有放入顺序,元素可重复 ,通过下标来存取 和值来存取
        Map:元素按键值对存取,无放入顺序
        Set:元素无存取顺序,元素不可重复(注意:元素虽然无放入顺序,但是元素在 set 中的位置是有该
            元素的 HashCode 决定的,其位置其实是固定的)
 
20.ArrayList list = new ArrayList(20);语句中的 list 集合大小扩充了几次?
    
    0次,因为构造方法已经指定了容量。
    
21.集合和数组之间的区别?
 
  1. 数组是固定长度的,集合是可变长度的
  2. 数组可以存储基本数据类型,也可以存储引用数据类型;集合只能存储引用数据类型
  3. 数组存储的元素必须是同一个数据类型;集合存储的元素可以是不同的数据类型
 
22.Collection 和 Collections的区别。
    
  • Collections是个java.util下的类,是针对集合类的一个工具类,提供一系列的静态方法,实现对集合的查找,排序,替换,线程安全化(将非同步的集合转成同步的)等操作。
  • Collection是个java.util下的接口,他是各种集合结构的父接口,继承于他的接口主要有List和Set,提供了关于集合的一些操作,如插入,删除,遍历等。
    

SE篇的更多相关文章

  1. TGL站长关于常见问题的回复

    问题地址: http://www.thegrouplet.com/thread-112923-1-1.html 问题: 网站配有太多的模板是否影响网站加载速度 月光答复: wp不需要删除其他的模板,不 ...

  2. Java SE 第二篇

    二.  Java SE 第二篇 1.  Arrays 数组 // 声明一维数组,[]内不允许有值 int[] arr; int arr[]; // 创建一维数组对象,[]内必须有值 arr = new ...

  3. Java SE —— 专栏总集篇

    前言: Java 语言,是相对于其他语言而言,门槛低,而且功能还强大的一门编程语言,本人十分看好这一门语言,但是,它也是有深度的,看过本人的<数据结构与算法>专栏的同学们有福了,因为本人在 ...

  4. 学习java随笔第一篇:搭建java平台(java se)

    电脑系统:windows8 在这里介绍一下java平台的3个版本: Java SE--Java Standard Edition,Java的标准版,主要用于桌面级的应用和数据库开发. Java EE- ...

  5. java SE 入门之运算符(第三篇)

    在 java 中主要有以上运算符,分为 赋值运算符 ,算术运算符.关系运算符(比较运算符),逻辑运算符和三目运算符(三元运算符). 我们一起来学习下吧! 一.赋值运算符 赋值运算符主要有五个.分别是 ...

  6. java SE 入门之语言与环境(第一篇)

    Javase的语言与开发环境Keke2016年03月08日 Java属于-Oracle公司(甲骨文)创始人:Gosling1995年诞生1998年12月发布jdk1.22002年2月发布:jdk1.4 ...

  7. java SE 入门之输入输出(第四篇)

    在第一篇,八大基本类型的时候,我就介绍了输出,当然,这些输出都是简单的,后续写到流的时候,在细化输入输出. 现在只要求看懂输入输出.输入其实就是接受键盘的输入. public class Hello ...

  8. java SE 入门之八大内置基本类型(第二篇)

    本文采用eclipse 工具演示,如果您对eclipse 工具不了解,请先学习下 eclipse 工具的使用,这个里面只是简单的介绍下输出和注释: 安装完成eclipse 以后,双击进入 后一次点击 ...

  9. java SE 入门之控制语句&方法&递归算法(第五篇)

    一 控制语句(选择结构) 在学习控制语句之前,我们要先明确两件事情,什么是顺序结构(也叫做顺序执行),什么是选择结构 (分支结构或分支执行或选择执行),我们的代码执行是分为先后顺序的,就像我们之前写的 ...

随机推荐

  1. Android中使用Notification在状态栏上显示通知

    场景 状态栏上显示通知效果 注: 博客: https://blog.csdn.net/badao_liumang_qizhi关注公众号 霸道的程序猿 获取编程相关电子书.教程推送与免费下载. 实现 新 ...

  2. SpringCloud入门学习

    我相信,如果小伙伴们能来到这里,肯定对微服务有一定的认识. 我们之前创建web项目的时候,常见的有两种方式: 1).创建一个war包,然后放在servlet容器中运行(比如Tomcat等); 2).使 ...

  3. Session注销后,浏览器后退仍显示Session信息

    初学JavaWeb,在一次测试登录功能的时候,发现了登进去后,点击退出按钮注销session,浏览器按后退能够显示session信息,并且点击登录还能够不输入密码登录(前端页面没写JS限制输入后登录) ...

  4. vue及vant框架,多语言配置

    1.安装 vue-i18n,( cnpm install vue-i18n --save ) 2.在入口,main.js 中引入 (import Vuei18n from "vue-i18n ...

  5. JAVA中级开发应该掌握的小知识点

    一.悲观锁.乐观锁的区别: 悲观锁:一段执行逻辑加上悲观锁,不同线程同时执行,只有一个线程可以执行,其他线程在入口处等待,直到锁被释放.乐观锁:一段执行逻辑加上乐观锁,不同线程同时执行,可以同时进入执 ...

  6. Java 代码块详解

    注:本文出自博主 Chloneda:个人博客 | 博客园 | Github | Gitee | 知乎 注:本文原链接:https://www.cnblogs.com/chloneda/p/java-c ...

  7. 关于javascript中的内置函数

    (1) parseInt()函数 语法:parseInt(string,[n])   该函数主要将首位为数字的字符串转化为数字,若该字符串不是以数字开头,则返回NaN; n是用于指出字符串中的数据是几 ...

  8. docker - apt-get更换国内源解决Dockerfile构建速度过慢

    背景 使用ubuntu镜像一般apt-get源地址都是在国外导致在构建时因为源地址问题导致下载速度极其得慢 在构建中应事先修改apt-get源地址来避免因下载速度过慢导致的构建缓慢问题 方案 在Doc ...

  9. C语言程序设计(实验一)

    实验项目:1.3.2,1.3.3,1.3.4,2.3.1,2.3.2 姓名:邹琼   实验地点:家 实验时间:2020年2月28日 一.实验目的与要求 1.实验目的 掌握DEVC++的安装方法,并实现 ...

  10. CVE-2019-1388 UAC提权复现

    0x01 前言 该漏洞位于Windows的UAC(User Account Control,用户帐户控制)机制中.默认情况下,Windows会在一个单独的桌面上显示所有的UAC提示--Secure D ...