Java常用知识点
知识点
长不大的大灰狼
这个作者很懒,什么都没留下…
展开
-
String的不可变和final修饰有关系嘛?为什么要被final修饰?
思考String不可变和final修饰有关系嘛1. 什么是不可变?当str赋值成“world”时,不是将原来的hello修改,而是重新指向了一个新对象。String str = "hello";str = "world";2. String为什么不可变?直接上源码:public final class String implements java.io.Serializable, Comparable<String>, CharSequence { //{@l原创 2020-08-18 21:10:36 · 854 阅读 · 0 评论 -
快速失败和安全失败
java.util 包的集合类就都是快速失败的,如HashMap、ArrayList ;java.util.concurrent 包下的类都是安全失败,比如:ConcurrentHashMap。1 快速失败(fail-fast)在使用迭代器对集合对象进行遍历的时候,如果 A 线程正在对集合进行遍历,此时 B 线程对集合进行修改(增加、删除、修改),或者 A 线程自己在遍历过程中对集合进行了修改,都会导致 A 线程抛出 ConcurrentModificationException 异常。Hash.转载 2020-08-11 09:16:36 · 206 阅读 · 0 评论 -
Java中为什么是值传递
java中在参数传递时有2种方式:方式一:值传递值传递是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数。简单来说就是直接复制了一份数据过去。值传递主要是对基本型变量而言的,传递的是该变量的一个副本,改变副本不影响原变量。方式二: 引用传递每次传参数的时候都复制一份,如果这个参数占用的内存空间太大的话,运行效率会很低,所以我们采用直接把内存地址传过去的方式来完成“值传递”。引用传递 一般是对于对象型变量而言的,传递的是该对象 地址的一个副本原创 2020-08-11 08:39:35 · 508 阅读 · 0 评论 -
==和equals的区别;HashCode和equals
== 与 equals== : 它的作用是判断两个对象的地址是不是相等。即判断两个对象是不是同一个对象。(基本数据类型 == 比较的是值,引用数据类型 == 比较的是内存地址)equals() : 它的作用也是判断两个对象是否相等。但它一般有两种使用情况:情况1:类没有覆盖 equals() 方法。则通过 equals() 比较该类的两个对象时,等价于通过“==”比较这两个对象。情况2:类覆盖了 equals() 方法。判断两个对象的内容是否相等;hashCode 与 equals(1)ha转载 2020-07-27 16:04:00 · 208 阅读 · 0 评论 -
ArrayList和LinkedList、Vector的区别
1 ArrayList和LinkedList的区别:(1)相同点:LinkedeList和ArrayList都实现了List接口。ArrayList和LinkedList是两个集合类,用于存储一系列的对象引用(references)。(2)不同点:ArrayList底层的实现数组,而LinkedList是双向链表。ArrayList进行随机访问所消耗的时间是固定的,因此随机访问时效率比较高。LinkedList是不支持快速的随机访问的,但是在插入删除时效率比较高。2 ArrayLi.原创 2020-07-25 17:30:20 · 7535 阅读 · 2 评论 -
阻塞IO,非阻塞IO,多路复用IO,同步IO,异步IO
文章目录一、网络IO操作过程二、网络IO模型详细分析1 blocking IO(阻塞)2 nonblocking IO(非阻塞)3 IO multiplexing(IO多路复用)4 asynchronous IO(异步)三、阻塞与非阻塞四、同步与异步五、非阻塞!=异步一、网络IO操作过程对于一个网络IO (这里我们以read举例),它会涉及到两个系统对象,一个是调用这个IO的过程process (or thread),另一个就是系统内核(kernel)。当一个read操作发生时,它会经历两个阶段:转载 2020-07-24 16:04:28 · 589 阅读 · 0 评论 -
浅谈Java中的引用和对象
浅谈Java中的引用和对象——变量是内存中的一块区域引用也是一种变量类型,引用类型和基本类型的区别是:对于基本数据类型来说,变量中保存的值可以直接解释为这个变量的最终值;对于引用类型来说,有一个间接的过程,变量中保存的值,可以理解为一个去堆中找到对象的线索。注意:对象指的是一大块内存,而引用只是找到该对象的线索(引用是一块比较小的内存,一般是32bit/64bit)。引用保存在Java...原创 2020-03-16 17:27:52 · 127 阅读 · 0 评论 -
Java中的堆和栈的区别
Java中的堆和栈的区别1. 存储数据类型不一样栈内存用来存储局部变量和对象的引用变量,而堆内存用来存储Java中的对象。2. 线程间空间是否共享每个线程都会有独立的栈空间,所以线程之间不共享数据。而JVM中只有一个堆内存,堆内存中的数据可以被所有线程所共享。3. 抛出的异常不一样栈可能会抛出两个异常:线程请求的栈深度大于虚拟机所允许的深度(-Xss设置栈容量),将会抛出StackOverFlowError异常。虚拟机在动态扩展时无法申请到足够的内存,会抛出java.lang.OutOfMemo原创 2020-07-24 08:36:50 · 518 阅读 · 0 评论 -
sleep、wait、yield、join——简介
sleep、wait、yield、join——简介1 sleepsleep()方法是Thread类的静态方法,是线程用来控制自身流程的。sleep 过程中线程不会释放锁,会进入阻塞状态(所以线程在指定的时间内肯定不会被执行),让出cpu给其他线程,但是他的监控状态依然保持着,当指定的时间到了又会自动恢复运行状态。sleep 给其他线程运行机会时不考虑线程的优先级,因此会给低优先级的线程以运行的机会。2 waitwait 方法属于Object 类,用于线程间的通信。wait 过程中线程会释放对象锁,只原创 2020-07-10 09:36:54 · 592 阅读 · 0 评论 -
静态内部类和非静态内部类的区别
静态内部类和非静态内部类的区别:1. 静态内部类不持有外部类的引用在普通内部类中,可以直接访问外部类的属性、方法,即使是private类型也可以,这是因为普通内部类持有外部类的引用,可以自由访问。而静态内部类只能访问外部类的静态方法和静态属性(如果是private也能访问)。2. 静态内部类不依赖外部类普通内部类与外部类之间是相互依赖关系,内部类实例不能脱离外部类实例,也就是说他们会同生共死,一起声明,一起被垃圾回收。而静态内部类是可以独立存在的,即使外部类消亡了,静态内部类还是可以存在的。 静态内转载 2020-07-20 10:55:18 · 4461 阅读 · 0 评论 -
数组(Array)和列表(ArrayList)有什么区别?
数组(Array)和列表(ArrayList)有什么区别?Array和ArrayList的不同点:Array可以包含基本类型和对象类型,ArrayList只能包含对象类型数组中是可以间隔存null的,而ArrayList是做不到这一点的。Array大小是固定的,ArrayList的大小是动态变化的,ArrayList每次存储时会检查空间大小,不够时会扩充为原来的1.5倍ArrayList是List的实现类,具有更多可操作的方法,ArrayList提供了更多的方法和特性,比如:addAll(),r转载 2020-07-10 15:40:32 · 6796 阅读 · 0 评论