泛型:在定义集合的时候同时定义集合中对象的类型 好处: 增强程序的可读性和安全性 6.术语辨析 集合和数组的比较 Collection和Collections的区别 ArrayList和LinkedList...具体如下: 1:数组能存放基本数据类型和对象,而集合类中只能放对象。 2 : 数组容量固定且无法动态改变,集合类容量动态改变。...3:数组无法判断其中实际存有多少元素,length只告诉了array容量 4:集合有多种实现方式和不同适用场合,不像数组仅采用顺序表方式 5:集合以类的形式存在,具有封装、继承、多态等类的特性,通过简单的方法和属性调用即可实现各种复杂操作...Java中还有一个Collections类,专门用来操作集合类 ,它提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。...的新接口 Vector线程安全,ArrayList重速度轻安全,线程非安全 长度需增长时,Vector默认增长一倍,ArrayList增长50% HashMap和Hashtable的联系和区别 实现原理相同
方法重载的规则: 方法名一致,参数列表中的参数顺序,类型,个数不同。 重载与方法的返回值无关,存在于父类和子类,同类中 可以抛出不同的异常,可以有不同的修饰符。...一个类可以实现多个接口 相同点: 不能被实例化 可以将抽象类和接口类型做为引用类型 一个类如果继承了某个抽象类或者某个接口都需要对其中的抽象方法全部实现,否则该类需要被声明为抽象类。...靠的是父类或接口定义的引用变量可以指向子类具体实现类的实例对象,而程序调用的方法运行期间才能动态绑定,就是引用变量所指向的具体实例对象的方法,也就是内存里正在运行的那个对象的方法,而不是引用变量的类型中定义的方法...,其键是不能重复的,它的值是可以有重复的 Set 中存储的数据是无序的,且不允许有重复,但元素在集合中的位置由元素的 hashcode 决定,位置是固定的 实现类: List 接口有三个实现类(LinkedList...区别 : List 集合中对象按照索引位置排序,可以有重复对象,允许按照对象在集合中的索引位置检索对象,例如通过list.get(i)方法来获取集合中的元素; Map 中的每一个元素包含一个键和一个值
char可以存储汉字吗? 当然是可以的,char类型中存储的是Unicode编码,Unicode编码中是存在中文的,所以char自然可以存储汉字,但是!仅限于Unicode中存在的汉字。...主要有以下区别: 1、存储位置 基本变量类型在方法中定义的非全局基本数据类型变量的具体内容是存储在栈中的 引用数据类型变量其具体内容都是存放在堆中的,而栈中存放的是其具体内容所在内存的地址 2、传递方式...4.一个类可以实现多个接口,但只能继承一个抽象类。 具体应用: 接口在系统架构设计方法中发挥着巨大作用,主要用于定义模块之间的通信契约。 而抽象类在代码实现方面发挥作用,可以实现代码的重用。...重载:发生在同一个类中,方法名相同参数列表不同(参数类型不同、个数不同、顺序不同),与方法返回值和访问修饰符无关,即重载的方法不能根据返回类型进行区分 重写:发生在父子类中,方法名、参数列表必须相同,返回值小于等于父类...因为一个属于电视类一个属于空调类。不同的类中可以有相同名称的方法和属性,但不会混淆。 继承 继承的主要思想就是将子类的对象作为父类的对象来使用。比如王者荣耀的英雄作为父类,后裔作为子类。
Float和long类型的必须加后缀。 首先知道String是引用类型不是基本类型,引用类型声明的变量是指该变量在内存中实际存储的是一个引用地址,实体在堆中。引用类型包括类、接口、数组等。...面向对象的四大基本特性: 抽象:提取现实世界中某事物的关键特性,为该事物构建模型的过程。对同一事物在不同的需求下,需要提取的特性可能不一样。得到的抽象模型中一般包含:属性(数据)和操作(行为)。...父类引用指向不同的子类对象时,调用相同的方法,呈现出不同的行为;就是类多态特性。多态可以分成编译时多态和运行时多态。 抽象、封装、继承和多态是面向对象的基础。...在保证线程安全的情况下使用泛型和并发集合类,Java已经经历了很久。它还包括在Java并发包中,阻塞接口以及它们的实现。...因为hashcode相同,所以它们的bucket位置相同,‘碰撞’会发生。因为HashMap使用链表存储对象,这个Entry(包含有键值对的Map.Entry对象)会存储在链表中。
2)volatile 能使得一个非原子操作变成原子操作吗? 一个典型的例子是在类中有一个 long 类型的成员变量。...并且需要知道 clone() 方法是一个本地方法,这意味着它是由 c 或 c++ 或 其他本地语言实现的。 23)Java 中 ++ 操作符是线程安全的吗? 不是线程安全的操作。...相等 hashcode 值的规定只是说如果两个对象相等,必须有相同的hashcode 值,但是没有关于不相等对象的任何规定。 62)两个相同的对象会有不同的的 hash code 吗?...重载和重写都允许你用相同的名称来实现不同的功能,但是重载是编译时活动,而重写是运行时活动。你可以在同一个类中重载方法,但是只能在子类中重写方法。重写必须要有继承。...菱形操作符()用于类型推断,不再需要在变量声明的右边申明泛型,因此可以写出可读写更强、更简洁的代码。另一个值得一提的特性是改善异常处理,如允许在同一个 catch 块中捕获多个异常。
4、泛型常用特点 (待补充) 泛型是Java SE 1.5之后的特性, 《Java 核心技术》中对泛型的定义是:“泛型” 意味着编写的代码可以被不同类型的对象所重用。...,但在我们使用的时候通过具体的规则来约束,如我们可以约束集合中只存放Integer类型的元素,如 ?...以集合来举例,使用泛型的好处是我们不必因为添加元素类型的不同而定义不同类型的集合,如整型集合类,浮点型集合类,字符串集合类,我们可以定义一个集合来存放整型、浮点型,字符串型数据,而这并不是最重要的,因为我们只要把底层存储设置了...如果 equals 为 false 就不是同一个元素。 哈希值相同 equals 为 false 的元素是怎么存储呢,就是在同样的哈希值下顺延(可以认为哈希值相同的元素放在一个哈希桶中)。...> 在 逻 辑 上 是List,List 等所有 List的父类。 24、类型擦除 Java 中的泛型基本上都是在编译器这个层次来实现的。
参考这个文档获取更多关于封装的细节和示例。 多态 多态是编程语言给不同的底层数据类型做相同的接口展示的一种能力。一个多态类型上的操作可以应用到其他类型的值上面。...4.可以在static环境中访问非static变量? static变量在Java中是属于类的,它在所有的实例中的值是一样的。当类被Java虚拟机载入的时候,会对static变量进行初始化。...Java中的方法重载发生在同一个类里面两个或者是多个方法的方法名相同但是参数不同的情况。与此相对,方法覆盖是说子类重新定义了父类的方法。方法覆盖必须有相同的方法名,参数列表和返回类型。...迭代器可以在迭代的过程中删除底层集合的元素。 克隆(cloning)或者是序列化(serialization)的语义和含义是跟具体的实现相关的。...因此,如果我们能估计出存储的元素的数目,我们可以设置初始容量来避免重新计算hash值或者是扩容。 为了类型安全,可读性和健壮性的原因总是要使用泛型。
在泛型使用过程中,操作的数据类型被指定为一个参数,这种参数类型在类中称为泛型类、接口中称为泛型接口和方法中称为泛型方法。...简述重载与重写的区别 重写即子类重写父类的方法,方法对应的形参和返回值类型都不能变。 重载即在一个类中,方法名相同,参数类型或数量不同,这个和返回的类型无关。...对于equals方法,在该方法未被重写时,其效果和==一致,但用户可以根据对应需求对判断逻辑进行改写,比如直接比较对象某个属性值是否相同,相同则返回true,不同则返回false。...简述JAVA的List List是一个有序队列,在JAVA中有两种实现方式:{一个是数组的形式,一个是链表的形式} ArrayList 使用数组实现,是容量可变的非线程安全列表,随机访问快,集合扩容时会创建更大的数组...HashSet中存储的元素是不能重复的,主要通过hashCode与equals两个方法来判断存储的对象是否相同: 如果两个对象的hashCode值不同,说明两个对象不相同。
串行(serial)收集器和吞吐量(throughput)收集器的区别是什么? 在 Java 中,对象什么时候可以被垃圾回收?...列的字符串类型可以是什么? MySQL 中使用什么存储引擎? TIMESTAMP 在 UPDATE CURRENT_TIMESTAMP 数据类型上做什么? 主键和候选键有什么区别?...说说 ArrayList,Vector, LinkedList 的存储性能和特性。 快速失败 (fail-fast) 和安全失败 (fail-safe) 的区别是什么? hashmap 的数据结构。...两个对象值相同 (x.equals(y) == true),但却可有不同的 hash code,这句话对不对? heap 和 stack 有什么区别。 Java 集合类框架的基本接口有哪些?...volatile 类型变量提供什么保证?能使得一个非原子操作变成原子操作吗?
什么时候被执行,在return前还是后 答:会执行,在return前执行 23、用最有效率的方法算出2乘以8等 答:2 << 3 24、两个对象值相同(x.equals(y) == true),但却可有不同的...引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。...堆是栈的一个组成元素 42、Java的接口和C++的虚类的相同和不同处 答:由于Java不支持多继承,而有可能某个类或对象要使用分别在几个类或对象里面的方法或属性,现有的单继承机制就不能满足要求。...List 的具体实现包括 ArrayList 和 Vector,它们是可变大小的列表,比较适合构建、存储和操作任何类型对象的元素列表。 List 适用于按数值索引访问元素的情形。...在try块中可以抛出异常吗? 答:Java通过面向对象的方法进行异常处理,把各种不同的异常进行分类,并提供了良好的接口。在Java中,每个异常都是一个对象,它是Throwable类或其它子类的实例。
覆盖要求参数列表相同;重载要求参数列表不同。 覆盖中,调用方法体是根据对象的类型来决定的,而重载是根据调用时实参表与形参表来对应选择方法体。...重载方法可以改变返回值的类型,覆盖方法不能改变返回值的类型。 接口和抽象类的相同点和不同点? 相同点: 都不能被实例化。 接口的实现类或抽象类的子类需实现接口或抽象类中相应的方法才能被实例化。...节省空间:字符串常量存储在 JVM 的字符串池中可以被用户共享。 提高效率:String 可以被不同线程共享,是线程安全的。在涉及多线程操作中不需要同步操作。...简述 Java 的 List List 是一个有序队列,在 Java 中有两种实现方式: ArrayList 使用数组实现,是容量可变的非线程安全列表,随机访问快,集合扩容时会创建更大的数组,把原有数组复制到新数组...HashSet 中存储的元素是不能重复的,主要通过 hashCode 与 equals 两个方法来判断存储的对象是否相同: 如果两个对象的 hashCode 值不同,说明两个对象不相同。
区别 44、ArrayList 与 LinkedList 区别 45、如何使用的 List 集合来保证线程安全 46、IO 和 NIO 的区别 47、在 Java 中要想实现多线程代码有三种手段 48...封装是将 属性,方法等放在一个类中,体现了java语言的安全性,继承是子类继承了父类后便有了父类的特性,多态则是父类的引用指向子类的地址,执行不同的操作,继承和多态体现了java语言的灵活性,易扩展性。...类,接口类型,数组类型,枚举类型,注解类型 基本数据类型与引用数据类型的区别 基本数据类型在被创建时,会在栈上分配空间,直接将之存储在栈中。...重载: 发生在同一个类中,多个方法名称相同,参数类型,个数和顺序不同的方法发生重载现象,与返回值无关。 18、运算符 &和&&的区别?...实现类 特征 HashMap 线程不安全的键值对集合,允许 null 值,key 和 value 都可以 HashTable 线程安全的键值对集合,不允许 null 值,key 和 value 都不可以
本文我们将要讨论Java面试中的各种不同类型的面试题,它们可以让雇主测试应聘者的Java和通用的面向对象编程的能力。...参考这个文档获取更多关于封装的细节和示例。 多态 多态是编程语言给不同的底层数据类型做相同的接口展示的一种能力。一个多态类型上的操作可以应用到其他类型的值上面。...而抽象类则可以同时包含抽象和非抽象的方法。 类可以实现很多个接口,但是只能继承一个抽象类 类如果要实现一个接口,它必须要实现接口声明的所有方法。...迭代器可以在迭代的过程中删除底层集合的元素。 克隆(cloning)或者是序列化(serialization)的语义和含义是跟具体的实现相关的。...因此,如果我们能估计出存储的元素的数目,我们可以设置初始容量来避免重新计算hash值或者是扩容。 为了类型安全,可读性和健壮性的原因总是要使用泛型。
本文我们将要讨论Java面试中的各种不同类型的面试题,它们可以让雇主测试应聘者的Java和通用的面向对象编程的能力。...多态 多态是编程语言给不同的底层数据类型做相同的接口展示的一种能力。一个多态类型上的操作可以应用到其他类型的值上面。 继承 继承给对象提供了从基类获取字段和方法的能力。...继承提供了代码的重用行,也可以在不修改类的情况下给现存的类添加新特性。 抽象 抽象是把想法从具体的实例中分离出来的步骤,因此,要根据他们的功能而不是实现细节来创建类。...迭代器可以在迭代的过程中删除底层集合的元素。 克隆(cloning)或者是序列化(serialization)的语义和含义是跟具体的实现相关的。...因此,如果我们能估计出存储的元素的数目,我们可以设置初始容量来避免重新计算hash值或者是扩容。 为了类型安全,可读性和健壮性的原因总是要使用泛型。
3,两个对象的hashCode()相同,则equals也一定相同对吗?...6,String属于基础的数据类型吗? 不属于,String是java定义的一个最终类。 7,java中操作字符串都有哪些类,他们之间有什么区别?...接口由类实现,抽象类由类继承 接口中所有的方法都是抽象方法(JDK1.8之前),所有的变量都是公共的常量,抽象类中既可以有抽象方法也可以有具体的方法实现,变量为普通变量。...在分布式对象里,像数据,对象都有不同的格式,有了序列化在传输时就很方便,另外需要将内存中的类对象存储到硬盘上或者数据库里就需要用到序列化。 3,动态代理是什么?有哪些运用?...4,动态代理设计模式 而动态代理更强调的是控制访问,代理类可以对它的客户隐藏一个具体的对象信息,相当于在这个过程中我可以控制对象做其他的事,偏重在对某一个功能的把控流程和辅助(大意就是并不是在别人的方法上装饰我自己要的方法
2)volatile 能使得一个非原子操作变成原子操作吗? 一个典型的例子是在类中有一个 long 类型的成员变量。...并且需要知道 clone() 方法是一个本地方法,这意味着它是由 c 或 c++ 或 其他本地语言实现的。 23)Java 中 ++ 操作符是线程安全的吗?(答案) 23)不是线程安全的操作。...相等 hashcode 值的规定只是说如果两个对象相等,必须有相同的hashcode 值,但是没有关于不相等对象的任何规定。 62)两个相同的对象会有不同的的 hash code 吗?...(答案) 重载和重写都允许你用相同的名称来实现不同的功能,但是重载是编译时活动,而重写是运行时活动。你可以在同一个类中重载方法,但是只能在子类中重写方法。重写必须要有继承。...菱形操作符()用于类型推断,不再需要在变量声明的右边申明泛型,因此可以写出可读写更强、更简洁的代码。另一个值得一提的特性是改善异常处理,如允许在同一个 catch 块中捕获多个异常。
(一般子类会重写) equals比较两个对象是否相等 clone克隆一份对象,此时克隆的对象在堆内存中重新创建,并返回了内存地址 在具体使用的时候需要实现Cloneable接口否则抛出CloneNotSuppoertedException...Java中类是对一组行为或者特征的描述,对象则为所描述特征和行为的具体实现。而作为概念层次的类,其本身也拥有某些共同的特性,如都具有类名称、由类加载器加载,都具有父类,属性和方法等。...hashcode方法 一个例子:在向Set集合中添加数据的时候,首先需要判断这个集合中是否存在这个元素,不存在才添加,如果没有hashcode的话,需要对集合进行遍历,才可以,此时的时间复杂度达到了O(...非静态 静态 finalize,final,finally的区别 finalize是Obejct类的方法,在JVM回收对象的之前调用 final是一个关键字,可以用来修饰类,成员变量,局部变量,成员方法...ArrayList和LinkedList的区别 都不安全,线程不同步 ArrayList底层是Object数组初始容量为10,递增策略为1.5倍;LinkedList基于双向链表实现,本身存储了一个节点的值
领取专属 10元无门槛券
手把手带您无忧上云