java基础
熱愛.java
不忘初心,方得始终
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
spring声明式事务的一个实现原理?
spring声明式事务的一个实现原理?原创 2023-05-16 11:58:22 · 463 阅读 · 0 评论 -
Object 有哪些常用方法?
配合 synchronized 使用,wait 方法就是使当前线程等待该对象的锁,当前线程必须是该对象的拥 有者,也就是具有该对象的锁。调用该方法后当前线程进入睡眠状态,直到以下事件发生。该方法用于哈希查找,重写了 equals 方法一般都要重写 hashCode 方法,这个方法在一些具有哈 希功能的 Collection 中用到。配合 synchronized 使用,该方法唤醒在该对象上等待队列中的某个线程(同步队列中的线程是给 抢占 CPU 的线程,等待队列中的线程指的是等待唤醒的线程)。原创 2022-11-27 13:00:38 · 228 阅读 · 0 评论 -
java反射的作用于原理
2、多次创建一个类的实例时,有缓存会快很多 3、 ReflectASM工具类,通过字节码生成的方式加快反射速度 )在java中,只要给定类的名字,就可以通过反射机制来获得类的所 有信息。(1)Class:表示正在运行的Java应用程序中的类和接口 注意: 所有获取对象的信息都需要Class类 来实现。(4) 基本类型的包装类,可以调用包装类的Type属性来获得该包装类的Class对象。(2)Field:提供有关类和接口的属性信息,以及对它的动态访问权限。(4)Method:提供类或接口中某个方法的信息。原创 2022-11-27 12:56:41 · 202 阅读 · 0 评论 -
线程、程序、进程的基本概念。以及他们之间关系是什么?
简单来说,一个进程就是一个执行中的程序,它在计算 机中一个指令接着一个指令地执行着,同时,每个进程还占有某些系统资源如 CPU 时间,内存空 间,文件,输入输出设备的使用权等等。从另一角度来说,进程属于操作系 统的范畴,主要是同一段时间内,可以同时执行一个以上的程序,而线程则是在同一程序内几乎同 时执行一个以上的程序段。与进程不同的是同类的多个线程共享同一块内存空间和一组系统资源,所以系统在产生一个 线程,或是在各个线程之间作切换工作时,负担要比进程小得多,也正因为如此,线程也被称为轻 量级进程。原创 2022-11-27 12:49:37 · 150 阅读 · 0 评论 -
try里有return,finally还执行么?
3、finally是在return后面的表达式运算后执行的(此时并没有返回运算后的值,而是先把要返回的 值保存起来,管finally中的代码怎么样,返回的值都不会改变,任然是之前保存的值),所以函数 返回值是在finally执行前确定的;4、finally中最好不要包含return,否则程序会提前退出,返回值不是try或catch中保存的返回值。2、当try和catch中有return时,finally仍然会执行;执行,并且finally的执行早于try里面的return。原创 2022-11-27 12:47:07 · 3289 阅读 · 0 评论 -
类加载器有哪些?
3 系统类加载器(system class loader):它根据 Java 应用的类路径(CLASSPATH)来加载 Java 类。一般来说,Java 应用的类都是由它来完成加载的。2 扩展类加载器(extensions class loader):它用来加载 Java 的扩展库。1 启动类加载器(Bootstrap ClassLoader)用来加载java核心类库,无法被java程序直接引用。4 用户自定义类加载器,通过继承 java.lang.ClassLoader类的方式实现。原创 2022-11-22 16:18:02 · 3125 阅读 · 0 评论 -
深拷贝和浅拷贝的区别是什么?
深拷贝:被复制对象的所有变量都含有与原来的对象相同的值.而那些引用其他对象的变量将指向 被复制过的新对象.而不再是原有的那些被引用的对象.换言之.深拷贝把要复制的对象所引用的 对象都复制了一遍.浅拷贝:被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指 向原来的对象.换言之,浅拷贝仅仅复制所考虑的对象,而不复制它所引用的对象.原创 2022-11-22 16:06:15 · 198 阅读 · 0 评论 -
Java自动装箱与拆箱
装箱就是自动将基本数据类型转换为包装器类型(int-->Integer);调用方法:Integer的 valueOf(int) 方法。拆箱就是自动将包装器类型转换为基本数据类型(Integer-->int)。调用方法:Integer的 intValue方法。原创 2022-11-22 16:04:31 · 164 阅读 · 0 评论 -
hash冲突的解决方案
1 拉链法: 每个哈希表节点都有一个next指针,多个哈希表节点可以用next指针构成一个单向链 表,被分配到同一个索引上的多个节点可以用这个单向链表进行存储.3 再哈希: 又叫双哈希法,有多个不同的Hash函数.当发生冲突时,使用第二个,第三个….等哈希函数 计算地址,直到无冲突.2 开放定址法: 一旦发生了冲突,就去寻找下一个空的散列地址,只要散列表足够大,空的散列地址总 能找到,并将记录存入。原创 2022-11-22 16:00:50 · 276 阅读 · 0 评论 -
强引用,软引用,弱引用,虚引用的区别?
虚引用的回收机制跟弱引用差不多,但是它被回收之前,会被放入 ReferenceQueue 中。可用场景: Java源码中的 java.util.WeakHashMap 中的 key 就是使用弱引用,我的理解就是, 一旦我不需要某个引用,JVM会自动帮我处理它,这样我就不需要做其它操作。上诉所说的几类引用,都是指对象本身的引用,而不是指Reference的四个子类的引用 (SoftReference等)。可用场景: 创建缓存的时候,创建的对象放进缓存中,当内存不足时,JVM就会回收早先创建 的对象。原创 2022-11-22 15:57:04 · 408 阅读 · 0 评论 -
String,StringBuffer 和 StringBuilder 的区别是什么?
StringBuffer和StringBuilder他们两都继承了AbstractStringBuilder抽象类,从 AbstractStringBuilder抽象类中我们可以看到他们的底层都是可变的字符数组,所以在进行频繁的字符串操作时,建议使用StringBuffer和 StringBuilder来进行操作。另外StringBuffer 对方法加了同步锁或者对调用的方法加了同步锁,所 以是线程安全的。从底层源码来看是一个final类型的 字符数组,所引用的字符串不能被改变,一经定义,无法再增删改。原创 2022-11-22 15:49:37 · 195 阅读 · 0 评论 -
Hashcode的作用
这样一来,当 集合要添加新的元素时,先调用这个元素的hashCode方法,就一下子能定位到它应该放置的物理 位置上。如果这个位置上没有元素,它就可以直接存储在这个位置上,不用再进行任何比较了;如 果这个位置上已经有元素了,就调用它的equals方法与新元素进行比较,相同的话就不存了,不相 同就散列其它的地址。这种方式将集合分成若干个存储区域,每 个对象可以计算出一个哈希码,可以将哈希码分组,每组分别对应某个存储区域,根据一个对象的 哈希码就可以确定该对象应该存储的那个区域。前者有序可重复,后者无序不重复。原创 2022-11-21 14:00:55 · 157 阅读 · 1 评论 -
equals与==的区别
1、比较的是操作符两端的操作数是否是同一个对象。3、比较的是地址,如果是具体的阿拉伯数字的比较,值相等则为true,如: int a=10 与 long b=10L 与 double c=10.0 都是相同的(为true),因为他们都指向地址为10的堆。equals用来比较的是两个对象的内容是否相等,由于所有的类都是继承自java.lang.Object类的,所 以适用于所有对象,如果没有对该方法进行覆盖的话,调用的仍然是Object类中的方法,而Object 中的equals方法返回的却是==的判断。原创 2022-11-21 13:57:13 · 99 阅读 · 0 评论 -
面向对象和面向过程的区别
面向过程:字面意义上就是面向的是过程,先做什么、在做什么、最后做什 么,然后用函数把这些步骤一步一步地实现,在使用的时候一一调用则可。面向对象:字面意义上 就是面向的是对象,是把构成问题的事务分解成各个对象,但是建立对象的目的也不是为了完成一 个个步骤,而是为了描述某个事物在解决整个问题的过程中所发生的行为。面向过程性能较高,所以单片机、嵌入式开发等一般采用面向过程开发。从性 能上来说,面向对象比面向过程要低。面向对象有封装、继承、多态的特性,所以易维护、易复用、易扩展,可以设 计出低耦合的系统。原创 2022-11-21 13:53:37 · 262 阅读 · 0 评论
分享