每日一面
TimengHero
在代码的海洋里自由泳!
展开
-
final有哪些用法
1、被final修饰的类不可以被继承 2、被final修饰的方法不可以被重写 3、被final修饰的变量不可以被改变,如果修饰引用,那么表示引用不可变,引用指向的内容可变 4、被final修饰的方法,JVM会尝试将其内联,以提高运行效率 5、被final修饰的常量,在编译阶段会存入常量池中 除此之外,编译器对final域要遵守的两个重排序规则更好: 在构主函数内对一个final域的写入...原创 2020-04-26 09:52:24 · 143 阅读 · 0 评论 -
深拷贝和浅拷贝的区别
深拷贝:被复制对象的所有变量都含有与原来的对象相同的值,而那些引用其他对象的变量将指向被复制过的新对象,而不再是原有的那些被引用的对象,换言之,深拷贝把要复制的对象所引用的对象都复制了一遍。 浅拷贝:被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象,换言之,浅拷贝仅仅复制所考虑的对象,而不复制它所引用的对象。 ...原创 2020-04-26 09:45:43 · 146 阅读 · 0 评论 -
有没有可能两个不相等的对象有相同的hashcode
有可能,在产生hash冲突时,两个不相等的对象就会有相同的hashcode值,当hash冲突产生时,一般有以下几种方式来处理: 拉链法:每个哈希表节点都偶遇一个next指针,多个哈希表节点可以用next指针构成一个单向链表,被分配到同一个索引上的多个节点可以用这个单向链表进行存储。 开放地址法:一旦发生了冲突,就去寻找下一个空的散列地址,只要散列表足够大,空的散列地址总能找到,并将记录存入。 ...原创 2020-04-26 09:42:26 · 990 阅读 · 0 评论 -
Java创建对象的方式
Java提供了四种创建对象的方式: 1、new创建新对象 2、通过反射机制 3、采用clone机制 4、通过序列化机制原创 2020-04-26 09:37:07 · 127 阅读 · 0 评论 -
泛型常用特点
泛型是JavaSE1.5之后的特性,《Java核心技术》中对泛型的定义是: “泛型”意味着编写的代码可以被不同类型的对象所重用。 “泛型”,顾名思义,“泛指的类型”。我们提供了泛指的概念,但具体执行的时候却可以有具体的规则来约束,比如我们用的非常多的ArrayList就是个泛型类,ArrayList作为集合可以存放各种元素,如Integer,String,自定义的各种类型等,但在我们使用的时候...原创 2020-04-26 09:35:29 · 743 阅读 · 0 评论 -
Java的四种引用,强弱软虚
强引用 强引用是平常中使用最多的引用,强引用在程序内存不足(OOM)的时候也不会被回收,使用方式: String str = new String("Str"); 软引用 软引用在程序内存不足时,会被回收,使用方式: //注意:wrf这个引用也是强引用,它是指向SoftReference这个对象的,这里的软引用指的是指向new String("str")的引用,也就是SoftRefe...原创 2020-04-23 17:20:29 · 146 阅读 · 0 评论 -
Collection包结构,与Collections的区别
Collection是集合类的上级接口,子接口有Set、List、LinkedList、ArrayList、Vector、Stack、Set; Collections是集合类的一个帮助类,它包含有各种有关集合操作的静态多态方法,用于实现对各种集合的搜索、排序、线程安全化等操作。此类不能实例化,就像一个工具类,服务于Java的Collection框架。 ...原创 2020-04-23 17:09:20 · 274 阅读 · 0 评论 -
HashMap和HashTable的区别
1、两者父类不同 HashMap是继承自AbstractMap类,而HashTable是继承自Dictionary类。不过它们都实现了map、cloneable(可复制)、Serializable(可序列化)这三个接口。 2、对外提供的接口不同 HashTable比HashMap多提供了elments()和contains()两个方法。 elements()方法继承自HashTable的父...原创 2020-04-23 15:52:56 · 169 阅读 · 0 评论 -
ArrayList和LinkedList的区别
Array(数组)是基于索引(index)的数据结构,它使用索引在数组中搜索和读取数据是很快的。 Array获取数据的时间复杂度是O(1),但是要删除数据却是开销很大,因为需要重排数组中的所有数据,(因为删除数据以后,需要把后面所有的数据前移) 缺点:数组初始化必须指定初始化的长度,否则报错。 例如: int[] a = new int[4];//推荐使用int[] 这种方式初始化 in...原创 2020-04-23 15:43:40 · 95 阅读 · 0 评论 -
String、StringBuffer和StringBuilder的区别
String 是只读字符串,它并不是基本数据类型,而是一个对象。从底层源码来看是一个final类型的字符数组,所引用的字符串不能被改变,一经定义,无法再增删改。每次对String的操作都会生成新的String对象。 private final char value[]; ...原创 2020-04-23 15:36:06 · 99 阅读 · 0 评论 -
hashcode的作用
java的集合有两类,一类是List,一类是Set。List有序可重复,Set无序不可重复。当我们在Set中插入的时候怎么判断是否已经存在该元素呢,可以通过equals方法。但是如果元素太多,用这样的方法就会比较慢。 于是有人发明了哈希算法来提高集合中查找元素的效率。这种方式将集合分成若干个存储区域,每个对象可以计算出一个哈希码,可以将哈希码分组,每组分别对应某个存储区域,根据一个对象的哈希码就...原创 2020-04-19 18:04:06 · 95 阅读 · 0 评论 -
equals与==的区别
equals:用来比较的是两个对象的内容是否相等,由于所有的类都是继承自java.lang.Object类的,所以使用用于所有对象,如果没有对该方法进行覆盖的话,调用的仍然是Object类中的方法,而Object中的equals方法返回的却是==的判断。 ==:比较的是变量(栈)内存中存放的对象的(堆)内存地址,用来判断两个对象的地址是否相同,即是否是指向同一个对象。比较的是真正意义上的指针操作...原创 2020-04-19 17:57:08 · 160 阅读 · 0 评论 -
Java中重载和重写的区别
重载(Oberload) 在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同甚至是参数顺序不同)则视为重载。同时,重载对返回类型没有要求,可以相同也可以不同,但不能通过返回类型是否相同来判断重载。 public class Main{ public static void main(String[] args){ Main m = new Main...原创 2020-04-19 17:48:00 · 200 阅读 · 0 评论 -
instanceof关键字的作用
instanceof严格来说是Java中的一个双目运算符,用来识别一个对象是否为一个类的实例,用法为: boolean result = obj instanceof Class; 其中obj为一个对象,Class表示一个类或者一个接口,当obj为Class的对象,或者是其直接或间接子类,或者是其接口的实现类,结果result都返回true,否则返回false。 注:编译器会检查obj是否...原创 2020-04-19 17:09:37 · 512 阅读 · 0 评论 -
Java中标识符的命名规则
标识符:是指在程序中,我们自己定义的内容,譬如,类的名字,方法名称以及变量名称等等,都是标识符。 必须遵守的命名规则: 1、标识符可以包含英文字母,0-9的数字,美元符号($)以及下划线(_); 2、标识符不能以数字开头; 3、标识符不能是已有的关键字。 约定性命名规则: 1、类名规则:首字符大写,后面每个单词首字母大写(大驼峰式); 2、变量名规则:首字母小写,后面每个单词首字母大...原创 2020-04-19 17:09:19 · 394 阅读 · 0 评论 -
Java支持的数据类型
Java共有两种数据类型:基本数据类型和引用数据类型,其中基本数据类型包含8个。 基本类型 大小(字节) 默认值 封装类 byte 1 (byte)0 Byte short 2 (short)0 Short int 4 0 Integer long 8 0L Long float ...原创 2020-04-19 17:08:50 · 160 阅读 · 0 评论 -
面向对象和面向过程的区别
面向对象:是把构成问题的事务分解成各个对象,而建立对象的目的也不是为了完成一个个步骤,而是为了描述某个事务在解决整个问题的过程中所发生的行为。面向对象有封装、继承、多态的特性,所以易于维护、复用性高、可扩展。可以设计出低耦合的系统。但是性能上来说,比面向过程要低。 面向过程:是分析解决问题的步骤,然后用函数把这些步骤一步一步地实现,然后在使用的时候一一调用即可。性能较高,一般单片机、嵌入式开发会...原创 2020-04-19 17:08:09 · 127 阅读 · 0 评论 -
Java语言的特点
1、简单易学、可使用类库丰富; 2、面向对象,可以使得程序耦合度更低,内聚性更高; 3、与平台无关,一次编译多处运行; 4、安全可靠; 5、支持多线程。 ...原创 2020-04-19 17:07:49 · 106 阅读 · 0 评论