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. 有关版本控制--SVN

    什么是版本控制? 这个之前有记录过相关的内容 版本管理就是管理更新的历史记录, 它给我们提供了一些在软件开发过程中必不可少的功能,例如: 记录一款软件添加或更改源代码的过程 回滚到特定阶段,恢复误删除 ...

  2. GMOJ5409.【GDOI2017模拟一试4.11】平行宇宙

    https://gmoj.net/senior/#main/show/5051 Solution 首先注意到每个点有且只有一条出边,也就是说这是一个环套树(森林). 那么我们可以贪心. 首先这个森林里 ...

  3. dapi 基于Django的轻量级测试平台八 Docker部署

    QQ群: GitHub:https://github.com/yjlch1016/dapi 采用Docker+Supervisor+Nginx+uWSGI+Django 一.Dockerfile文件: ...

  4. java 关于xlsx(xls) 和 csv 文件的数据解析

    1.适用于xlsx 和 xls  <!--xlsx和xls文件pom依赖--> <dependency> <groupId>org.apache.poi</g ...

  5. PS切图工具

    缓存设置: 编辑-首选项-暂存盘 改完除了C盘之外的其他盘 单位设置: 编辑-首选项-单位与标尺 将单位修改成像素  PS预设: 工具   (窗口-工具) 标尺  (视图-标尺) 图层  (窗口-图层 ...

  6. 返回一个整数数组中最大子数组的和——java程序设计

    一.题目要求 1.输入一个整形数组,数组里有正数也有负数.2.数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和.3.求所有子数组的和的最大值.要求时间复杂度为O(n) 二.设计思想 解决 ...

  7. gcc 与g++

    which gcc     查看gcc           主要针对 .c which g++    查看g++            主要针对  .cpp yum install gcc  安装gc ...

  8. Excel_单元格格式_查找替换、定位

    不重复! 显示格式:Ctrl+1 1,合并后居中,填充颜色,设置单元格边框,划斜线,格式刷(单击,双击) 2,单元格数字格式,格式不会改变值!自定义(编码规则) 4个 a :只显示星期:周+aaa:周 ...

  9. java new一个对象的过程中发生了什么?

    java在new一个对象的时候,会先查看对象所属的类有没有被加载到内存,如果没有的话,就会先通过类的全限定名来加载.加载并初始化类完成后,再进行对象的创建工作. 我们先假设是第一次使用该类,这样的话n ...

  10. 从 0 使用 SpringBoot MyBatis MySQL Redis Elasticsearch打造企业级 RESTful API 项目实战

    大家好!这是一门付费视频课程.新课优惠价 699 元,折合每小时 9 元左右,需要朋友的联系爱学啊客服 QQ:3469271680:我们每课程是明码标价的,因为如果售价为现在的 2 倍,然后打 5 折 ...