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.集合和数组之间的区别?
- 数组是固定长度的,集合是可变长度的
- 数组可以存储基本数据类型,也可以存储引用数据类型;集合只能存储引用数据类型
- 数组存储的元素必须是同一个数据类型;集合存储的元素可以是不同的数据类型
22.Collection 和 Collections的区别。
- Collections是个java.util下的类,是针对集合类的一个工具类,提供一系列的静态方法,实现对集合的查找,排序,替换,线程安全化(将非同步的集合转成同步的)等操作。
- Collection是个java.util下的接口,他是各种集合结构的父接口,继承于他的接口主要有List和Set,提供了关于集合的一些操作,如插入,删除,遍历等。
- TGL站长关于常见问题的回复
问题地址: http://www.thegrouplet.com/thread-112923-1-1.html 问题: 网站配有太多的模板是否影响网站加载速度 月光答复: wp不需要删除其他的模板,不 ...
- Java SE 第二篇
二. Java SE 第二篇 1. Arrays 数组 // 声明一维数组,[]内不允许有值 int[] arr; int arr[]; // 创建一维数组对象,[]内必须有值 arr = new ...
- Java SE —— 专栏总集篇
前言: Java 语言,是相对于其他语言而言,门槛低,而且功能还强大的一门编程语言,本人十分看好这一门语言,但是,它也是有深度的,看过本人的<数据结构与算法>专栏的同学们有福了,因为本人在 ...
- 学习java随笔第一篇:搭建java平台(java se)
电脑系统:windows8 在这里介绍一下java平台的3个版本: Java SE--Java Standard Edition,Java的标准版,主要用于桌面级的应用和数据库开发. Java EE- ...
- java SE 入门之运算符(第三篇)
在 java 中主要有以上运算符,分为 赋值运算符 ,算术运算符.关系运算符(比较运算符),逻辑运算符和三目运算符(三元运算符). 我们一起来学习下吧! 一.赋值运算符 赋值运算符主要有五个.分别是 ...
- java SE 入门之语言与环境(第一篇)
Javase的语言与开发环境Keke2016年03月08日 Java属于-Oracle公司(甲骨文)创始人:Gosling1995年诞生1998年12月发布jdk1.22002年2月发布:jdk1.4 ...
- java SE 入门之输入输出(第四篇)
在第一篇,八大基本类型的时候,我就介绍了输出,当然,这些输出都是简单的,后续写到流的时候,在细化输入输出. 现在只要求看懂输入输出.输入其实就是接受键盘的输入. public class Hello ...
- java SE 入门之八大内置基本类型(第二篇)
本文采用eclipse 工具演示,如果您对eclipse 工具不了解,请先学习下 eclipse 工具的使用,这个里面只是简单的介绍下输出和注释: 安装完成eclipse 以后,双击进入 后一次点击 ...
- java SE 入门之控制语句&方法&递归算法(第五篇)
一 控制语句(选择结构) 在学习控制语句之前,我们要先明确两件事情,什么是顺序结构(也叫做顺序执行),什么是选择结构 (分支结构或分支执行或选择执行),我们的代码执行是分为先后顺序的,就像我们之前写的 ...
随机推荐
- openlayers6实现webgl点图层渲染效果(附源码下载)
前言:openlayers6推出来的有一段时间,推出来的新特性见:https://github.com/openlayers/openlayers/releases/该版本的主要功能是能够组合具有不同 ...
- Android中通过Java代码实现ScrollView滚动视图-以歌词滚动为例
场景 实现效果如下 注: 博客: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程序猿 获取编程相关电子书.教程推送与免费下载. 实现 将布局改 ...
- LoaderTest加载测试用例的方法总结
加载用例,可以用suite.addTest(测试类名("测试函数名"))实现,也可用过suit.addTest(loader.Loader....)实现,一下针对Loader的三个 ...
- Ubuntu安装软件时报 Unable to acquire the dpkg frontend lock解决方案
解决方案如下: 对于以上内容,请等待过程完成.如果这没有发生,请在终端中运行: sudo killall apt apt-get 如果以上都不起作用,请删除锁定文件.在终端中运行: sudo rm / ...
- python+appium+真机测试
appium环境搭建 操作系统: Windows 10 被测平台: Android真机 appium服务器: appium Desktop appium客户端: python-client 测试的AP ...
- maven 3.6.3 安装及配置
1.下载 下载地址:http://maven.apache.org/download.cgi 2.配置环境变量 解压压缩包到磁盘. 注意:各种系统配置环境变量位置不一样,已windows10为例. 我 ...
- P1308 统计单词数(cin,getline() ,transform() )
题目描述 一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数. 现在,请你编程实现这一功能,具体要求是:给定一个单词,请你输出它在给 ...
- cf1242B
题意简述:给出一个n个点的完全图,边权要么是1要么是0,输入只给出权值的是1的那些边,求解最小生成树的权值 解答:边很多,我们考虑使用prim算法,prim算法的过程中维护了一个dis数组,这里我们可 ...
- 旷视向左、商汤向右,AI一哥之名将落谁家
编辑 | 于斌 出品 | 于见(mpyujian) AI风口历经多年洗礼之后,真正意义上的AI第一股终于要来了. 相比于聚焦在语音识别技术上的科大讯飞.立足互联网产业的百度.发力人形机器人领域的优必选 ...
- 项目启动时报错:java.io.EOFException
解决方案 删除Tomcat里面的work\Catalina\localhost下的项目文件内容即可解决 问题原因 原因是由于项目测试中class文件或者其它文件更新过频繁