Java知识
文章平均质量分 73
软件测试开发架构师
这个作者很懒,什么都没留下…
展开
-
Rabbitmq消息的有序性、消息不丢失、不被重复消费
Rabbitmq面试题转载 2023-02-13 18:35:59 · 2714 阅读 · 0 评论 -
String 知识点详解
java String字符串基础知识原创 2023-02-08 23:34:37 · 279 阅读 · 0 评论 -
CAS 自旋锁(一)
CAS 自旋锁(一)原创 2022-09-08 14:50:08 · 277 阅读 · 0 评论 -
红黑树动画演示
1、啥是红黑树?红黑树(Red Black Tree) 是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构,典型的用途是实现关联数组。因此想要弄清楚红黑树,我们需要先解决几个问题:① 二叉查找树是什么?② 为什么会出现红黑树?2、剖析二叉查找树二叉查找树特性二叉查找树(Binary Search Tree)是一颗二叉树,简称BST。就像我们说int都是整数一样,BST这一种二叉树需要满足如下三个特性:① 某节点的左子树节点值仅包含小于该节点值② 某节点的右子树节点值仅包含大转载 2021-07-07 16:45:31 · 412 阅读 · 0 评论 -
java 数据结构HashMap (2)equals和hashCode
java 数据结构HashMap (2)equals和hashCode我们知道Map是一种键-值(key-value)映射表,可以通过key快速查找对应的value。以HashMap为例,观察下面的代码:Map<String, Person> map = new HashMap<>();map.put("a", new Person("Xiao Ming"));map.put("b", new Person("Xiao Hong"));map.put("c", .转载 2021-06-30 22:07:46 · 739 阅读 · 0 评论 -
java 数据结构HashMap (1)
java 数据结构HashMap (1)用Map来实现根据name查询某个Student的代码如下:import java.util.HashMap;import java.util.Map;public class Main { public static void main(String[] args) { Student s = new Student("Xiao Ming", 99); Map<String, Stude...转载 2021-06-30 19:40:12 · 228 阅读 · 0 评论 -
java contains()与equals()的关系
java contains()与equals()的关系我们知道List是一种有序链表:List内部按照放入元素的先后顺序存放,并且每个元素都可以通过索引确定自己的位置。List还提供了boolean contains(Object o)方法来判断List是否包含某个指定元素。此外,int indexOf(Object o)方法可以返回某个元素的索引,如果元素不存在,就返回-1。我们来看一个例子:public class Main { public static void mai转载 2021-06-30 17:04:04 · 1068 阅读 · 0 评论 -
java数据结构list
java数据结构listlist是一个接口list的长度可以改变,ArrayList和linkedList都可以增加和删除元素。list里面的元素可以重复list里面可以添加null元素Iterator遍历List效率比较高for each如 for (Object s : array) 底层使用的就是Iterator遍历list转换为array:Integer[]array=list.toArray(newInteger[list.size()]);array转换成...转载 2021-06-29 16:24:14 · 709 阅读 · 0 评论 -
java数据结构array数组
java数据结构array数组和list的总结首先是array数组:array数组初始化大小之后长度不可变,所以array数组没有增加和删除元素的方法!!!array数组的长度一旦改变就是一个新数组array数组的长度不变,只改变元素时,不会生成新的array数组对象常用的array数组有:int[],String[],char[]array数组常用的方法有:Arrays.fill(); 填充数组Arrays.sort(); 数组排序Arrays.toString();转载 2021-06-29 16:07:27 · 369 阅读 · 0 评论 -
Java ArrayList和LinkedList之间的区别
Java ArrayList和LinkedList之间的区别一、ArrayListArrayList是一个可以处理变长数组的类型,这里不局限于“数”组,ArrayList是一个泛型类,可以存放任意类型的对象。顾名思义,ArrayList是一个数组列表,因此其内部是使用一个数组来存放对象的,因为Object是一切类型的父类,因而ArrayList内部是有一个Object类型的数组类存放对象。ArrayList类常用的方法有add()、clear()、get()、indexOf()、remove()、s转载 2021-03-01 10:46:14 · 174 阅读 · 0 评论 -
Java List和ArrayList的区别
Java List和ArrayList的区别List是一个接口,而ArrayList是List接口的一个实现类。ArrayList类继承并实现了List接口。因此,List接口不能被构造,也就是我们说的不能创建实例对象,但是我们可以像下面那样为List接口创建一个指向自己的对象引用,而ArrayList实现类的实例对象就在这充当了这个指向List接口的对象引用。个人见解:要是你已经学过了OOP,上面的部分是不难理解的,这是面向对象重要的知识点,面向对象最重要的就是多态,我们都知...转载 2021-02-26 16:10:20 · 2809 阅读 · 0 评论 -
在内存中java类和对象的区别
在内存中java类和对象的区别在内存中java类和对象的区别:1,类是静态的一些代码,位于方法区2,对象是new出来的,位于堆内存3,静态变量/方法在所有的对象中只有一份,也就是说:所有对象共用一份静态变量/方法4,类的成员变量(非静态)在不同的对象中都有不同的值5,类的方法(非静态)在所有的对象中只有一份,调用该方法的时候,该方法才占用内存(栈内存)...原创 2021-02-01 11:36:45 · 262 阅读 · 0 评论 -
java内存溢出 栈溢出的原因与排查方法
java内存溢出 原因与排查方法1、 内存溢出的原因是什么?内存溢出是由于没被引用的对象(垃圾)过多造成JVM没有及时回收,导致剩余的内存不够用,造成的内存溢出。如果出现这种现象可行代码排查:一)是否应用中的类中和引用变量过多使用了Static修饰 如public staitc Student s;在类中的属性中使用 static修饰的最好只用基本类型或字符串。如public static int i = 0; //public static String str;二)是否 应用 中使用了大转载 2021-01-26 18:55:19 · 3240 阅读 · 0 评论 -
Java JDK1.8中常量池所处区域
Java JDK1.8中常量池所处区域类常量池诞生时间:编译时所处区域:堆(类常量池存在Class文件中,一个Class文件对应一个类常量池)储存内容:符号引用和字面量。字符串常量池诞生时间:编译时所处区域:堆储存内容:堆内的字符串对象的引用和字符串常量。运行时常量池诞生时间:当类加载到内存中后所处区域:本地内存(每个class都加载后常量池的数据被汇总到运行时常量池,运行时常量池存在元空间中)储存内容:class文件元信息描述,编译后的代码数据,引用类型数据(类经过解析转载 2021-01-26 10:44:32 · 2701 阅读 · 8 评论 -
static无法访问非static变量和方法
static无法访问非static变量和方法为什么static无法访问非static变量和方法?static是类的成员,与对象无关,优先于对象的加载,也就是说一个类出现的时候,类里面的static就已经加载了,但是此时还没有去new对象,只有new了对象之后内存中的堆里面才加载非static成员,所以在没有new对象的时候,内存中的static是访问不到非static的成员。这也就是为什么在static方法里面访问非static方法时必须先new对象,然后再通过对象的应用来访问非static成员!原创 2021-01-24 21:26:27 · 696 阅读 · 0 评论 -
Java 内存分配详解(六)
Java 内存分配详解(六)原创 2021-01-24 20:28:00 · 96 阅读 · 0 评论 -
Java 内存分配详解(五)
Java 内存分配详解(五)栈(stack):主要保存基本类型(或者叫内置类型)(char、byte、short、int、long、float、double、boolean)和对象的引用,数据在栈内可以共享,速度仅次于寄存器(register),快于堆。堆(heap):用于存储对象和数组常量池:常量池的划分Class 文件常量池运行时常量池字符串常量池1. Class 文件常量池Class 文件常量池指的是编译生成的 class 字节码文件,其结构中有一项是常量池(Co.转载 2021-01-24 20:06:11 · 482 阅读 · 1 评论 -
Java 内存分配详解(四)
Java 内存分配详解(四)对于成员变量和局部变量:成员变量就是方法外部,类的内部定义的变量;局部变量就是方法或语句块内部定义的变量。局部变量必须初始化。形式参数是局部变量,局部变量的数据存在于栈内存中。栈内存中的局部变量随着方法的消失而消失。成员变量存储在堆中的对象里面,由垃圾回收器负责回收。class BirthDate { private int day; private int month; private int year; ...转载 2021-01-24 18:18:14 · 156 阅读 · 0 评论 -
Java 内存分配详解(三)
Java 内存分配详解(三)1,每个线程包含一个栈区,栈中只保存基础数据类型的值和自定义对象的引用(不是对象),对象都存放在堆区中2,每个栈中的数据(原始类型和对象引用)都是私有的,其他栈不能访问。3,栈分为3个部分:基本类型变量区、执行环境上下文、操作指令区(存放操作指令)。4,存储的全部是对象,每个对象都包含一个与之对应的class的信息。(class的目的是得到操作指令)5,jvm只有一个堆区(heap)被所有线程共享,堆中不存放基本类型和对象引用,只存放对象本身 6,局部变量必须初原创 2021-01-24 17:52:02 · 303 阅读 · 0 评论 -
Java 内存分配详解(二)
Java 内存分配详解(二)最近在看《深入理解Java虚拟机》,书中给了几个例子,比较好的说明了几种OOM(OutOfMemory)产生的过程,大部分的程序员在写程序时不会太关注Java运行时数据区域的结构:感觉有必要通过几个实在的例子来加深对这几个区域的了解。Java程序运行时,数据会分区存放,JavaStack(Java栈)、 heap(堆)、method(方法区)。1、Java栈Java栈的区域很小,只有1M,特点是存取速度很快,所以在stack中存放的都是快速执行的任务,基本转载 2021-01-24 16:40:59 · 620 阅读 · 0 评论 -
java ==与equals的区别(三)
java ==与equals的区别本文主要是针对int,Integer 之间的==与equals进行比较很多人都不明白为什么integer里面存在[-128,127]这个范围,想知道这个原因的话首先要知道int和integer的区别int就是最基本的数据类型,integer是int的包装类,也就是给int变成了一个类,增加了很多熟悉和方法。由于创建类的时候每次都需要新建数据占用一些空间,于是java考虑到常用的数据基本上是在100以内,所以给了[-128,127]这个范围,只要在[-12原创 2021-01-22 19:13:19 · 112 阅读 · 0 评论 -
java ==与equals的区别(二)
java ==与equals的区别本文主要是针对int,Integer 之间的==与equals进行比较当将i的值设置为40时,注意:40在[-128,127]范围内public class test20210122_002 { public static void main(String[] args) { objPoolTest(); } public static void objPoolTest() { int i = 40;原创 2021-01-22 18:04:58 · 117 阅读 · 0 评论 -
java ==与equals的区别(一)
java ==与equals的区别首先上一段代码进行分析:public class test20210122_001 { public static void main(String[] args) { int a1=1; int a2=1; Integer a3=1; Integer a4=1; Integer b1 =new Integer (1); Integer b2 =new原创 2021-01-22 16:49:55 · 131 阅读 · 0 评论 -
Java 内存分配详解(一)
Java 内存分配全面浅析本文将由浅入深详细介绍Java内存分配的原理,以帮助新手更轻松的学习Java。这类文章网上有很多,但大多比较零碎。本文从认知过程角度出发,将带给读者一个系统的介绍。进入正题前首先要知道的是Java程序运行在JVM(Java Virtual Machine,Java虚拟机)上,可以把JVM理解成Java程序和操作系统之间的桥梁,JVM实现了Java的平台无关性,由此可见JVM的重要性。所以在学习Java内存分配原理的时候一定要牢记这一切都是在JVM中进行的,JVM是内存分配原转载 2021-01-22 14:03:08 · 754 阅读 · 0 评论 -
Java中this和super
Java中this和superclass FatherClass { public int value; public void f() { value=100; System.out.println("父类的value属性值="+value); }}class ChildClass extends FatherClass { public int value; public void f() { sup转载 2021-01-21 14:31:51 · 115 阅读 · 0 评论 -
int与integer的比较大小
int与integer的比较大小Integer是int的封装类,int与Integer比较时,Integer会自动拆箱,无论怎么比,int与Integer都相等,Integer比较时,查看java源代码可知道,在-128与127之间,Integer会自动存在内存中,再有时,直接从内存中去取,不在这个范围则会new新对象,所以Integer与new Integer永远都不相等。范例int a=127;int b=127;Integer c = 127;Integer d = new Integ转载 2020-12-23 20:04:49 · 2801 阅读 · 0 评论 -
Comparable与Comparator区别浅析
原文地址https://blog.csdn.net/u013256816/article/details/50899416/Comparable和Comparator接口都是用来比较大小的,首先来看一下Comparable的定义: package java.lang;import java.util.*;public interface Comparable<T> { pu...转载 2018-06-10 01:29:22 · 252 阅读 · 0 评论 -
Comparable和Comparator的区别
原文地址https://www.cnblogs.com/szlbm/p/5504634.htmlComparableComparable可以认为是一个内比较器,实现了Comparable接口的类有一个特点,就是这些类是可以和自己比较的,至于具体和另一个实现了Comparable接口的类如何比较,则依赖compareTo方法的实现,compareTo方法也被称为自然比较方法。如果开发者add进入一个...转载 2018-06-10 01:25:55 · 241 阅读 · 0 评论