
Java基础
文章平均质量分 72
那些年的代码
Java工作者
展开
-
Java中StringUtils对String判断
public class StringUtilText24 { public static void main(String[] args) { boolean flag = StringUtils.isEmpty(null); System.out.println(flag); flag = StringUtils.isEmpty(""); System.out.println(flag);//注意在 StringUtils .原创 2021-05-24 15:31:51 · 396 阅读 · 0 评论 -
车主帮和作业帮的面试总结(以后博客和公众号一起同步)
https://mp.weixin.qq.com/s/7XxeIM1Zqx_tKPNVf1.gcroot有哪些?a.虚拟机栈(栈桢中的本地变量表)中的引用的对象b.方法区中的类静态属性引用的对象c.方法区中的常量引用的对象d.本地方法栈中JNI的引用的对象2.full gc,Minorgc区别?Gc触发条件:系统调用system.gc();当年轻代需要回收时会触发Minor GC(也称作Young GC)。年轻代由Eden Space和两块相同大小的Su...原创 2021-01-19 22:39:36 · 237 阅读 · 0 评论 -
Spring配置事务的五种方式
https://www.cnblogs.com/shuchen007/p/9202758.htmlhttps://blog.youkuaiyun.com/m8396017/article/details/51615806https://www.cnblogs.com/dj66194/p/7654555.html原创 2020-05-22 14:40:07 · 155 阅读 · 0 评论 -
Spring中引用标签ref和属性ref
ref作为属性<bean id="students" class="com.yiwen.Students"> <property name="group" ref="group"></bean><bean id="group" class="com.yiwen.Group" />ref作为标签local=”group” 表示在该xml文件中查找group(Spring4.0 没有local属性了,它的作用其实和ref属性一样,用属性也行)...原创 2020-05-22 14:25:43 · 695 阅读 · 0 评论 -
StringUtils.equals() 用法
/*1. 比较两个字符串是否相等,如果两个均为null,则也认为相等*/StringUtils.equals("", ""); //结果是trueStringUtils.equals(null, null); //结果是trueStringUtils.equals(null, ""); //结果是falseStringUtils.equals("",null); //结果是falseStringUtils.equals(null,""); /...原创 2020-05-18 17:19:32 · 632 阅读 · 0 评论 -
浅谈单链表与双链表的区别
昨天面试官面试的时候问了我一道关于链表的问题:情境如下面试官:请说一下链表跟数组的区别?我:数组静态分配内存,链表动态分配内存;数组在内存中连续,链表不连续;数组利用下标定位,时间复杂度为O(1),链表定位元素时间复杂度O(n);数组插入或删除元素的时间复杂度O(n),链表的时间复杂度O(1)。根据以上分析可得出数组和链表的优缺点如下:数组的优点随机访问性强(通过下标进行快速定位)查找速度快数组的缺点插入和删除效率低(插入和删除需要移动数据)可能浪费内存(因为是连续的,所以每.原创 2020-05-16 15:11:18 · 331 阅读 · 0 评论 -
double类型转换成int类型
public class test09 { public static void main(String[] args) { double a = 5000.44; double b = 100.12; double v = a / b; int i = new Double(v).intValue(); System.out.println(i); System.out.println(v);...原创 2020-05-11 19:49:00 · 1753 阅读 · 0 评论 -
拦截器和过滤器的区别
1.过滤器:依赖于servlet容器。在实现上基于函数回调,可以对几乎所有请求进行过滤,但是缺点是一个过滤器实例只能在容器初始化时调用一次。使用过滤器的目的是用来做一些过滤操作,获取我们想要获取的数据,比如:在过滤器中修改字符编码;在过滤器中修改HttpServletRequest的一些参数,包括:过滤低俗文字、危险字符等2.拦截器:依赖于web框架,在SpringMVC中就是依赖于S...原创 2020-04-19 10:40:55 · 242 阅读 · 0 评论 -
Object常用方法
1.clone方法保护方法,实现对象的浅复制,只有实现了Cloneable接口才可以调用该方法,否则抛出CloneNotSupportedException异常。2.getClass方法final方法,获得运行时类型。3.toString方法该方法用得比较多,一般子类都有覆盖。4.finalize方法该方法用于释放资源。因为无法确定该方法什么时候被调用,很少使用。5...原创 2020-04-18 09:26:15 · 158 阅读 · 0 评论 -
Set中的元素为什么不允许重复
版权所有,转载请声明出处zhyiwww@163.com为了弄清楚这个问题,我又看了一遍Collection部分,并且看了些其中的源码,觉得对其中的实现又明白了一点,现在说出来和大家共享.我们先看一下Set类的关系图:现在我们就从Set说起。Set接口为我们提供了一个add()方法,以让我们添加元素。所以我们看一下在其实现类...原创 2020-04-18 09:19:18 · 3418 阅读 · 0 评论 -
链表结构及操作
什么是链表结构: 链表结构是由许多节点构成的,每个节点都包含两部分: 数据部分:保存该节点的实际数据。 地址部分:保存的是下一个节点的地址。链表的特点:结点在存储器中的位置是任意的,即逻辑上相邻的数 据元素在物理上不一定相邻访问时只能通过头指针进入链表,并通过每个结点的 指针域向后扫描其余结点,所以寻找第一个结点和最后一 个结点所花费的时间不等链表的优点:数据...原创 2020-04-18 08:51:18 · 129 阅读 · 0 评论 -
set为什么不能存储重复值
图示set的两个主要实现类,TreeSet和HashSet,底层存储结构都是用的map,而且是将set需要存储的值放在map的key里的,PRESENT是一个空的object对象。map每次put如果key值不存在,返回的是null,key值如果存在,则返回之前key的oldValue,这样与null做对比的时候返回的就是false,在set层面就是插入重复值失败了...原创 2020-04-18 08:03:37 · 590 阅读 · 0 评论 -
set底层实现方式?
Q:STL中set底层实现方式?为什么不用hash?A: 第一个问题:set底层实现方式为RB树(即红黑树)。 第二个问题: 首先set,不像map那样是key-value对,它的key与value是相同的。关于set有两种说法,第一个是STL中的set,用的是红黑树;第二个是hash_set,底层用得是hash table。红黑树与hash table最大的不同是,红黑...原创 2020-04-10 18:23:26 · 602 阅读 · 0 评论 -
java对象排序(Comparable)详细实例
对象实现Comparable接口public class Field implements Comparable<Field>{ private String name; private int age; public Field() { } public Field(String name, int age)...原创 2020-03-28 09:20:49 · 1195 阅读 · 0 评论 -
Java中的long类型和Long类型比较大小
Java中我们经常要做一些判断,而对于判断的话,用的最多的便是“>”、“==”、“<”的比较,这里我们进行一个Long类型数据和long类型数据的比较大小的讲解。Java中Long和long的区别Java的数据类型分为两种:1、基本类型:byte(8),short(16),int(32),long(64),float(32),double(64),char(16),boolea...原创 2020-01-04 09:14:28 · 1029 阅读 · 0 评论 -
java中java.lang.String.concat(String str)使用注意
我在使用concat时,并不清楚concat的实现原理。我就使用concat方法将两个字符串拼接起来webImageRootPath.concat(path)。但是后来代码报了java.lang.NullPointerException异常,检查webImageRootPath并不异常为空,当时很纳闷怎么会报空指针异常呢。从网上搜索之后发现,原来是path这个值为null。 pub...原创 2020-01-02 11:55:56 · 858 阅读 · 0 评论 -
Java中String类的concat方法
在了解concat()之前,首先需要明确的是String的两点特殊性。长度不可变 值不可变 这两点从源码中对String的声明可以体现: private final char[] value ;1其中final对应值的不可更改的特性;而char[]对应String是长度不可更改的特性。因此,当我们对String进行拼接后,产生的应该是一个新的字符串。对于这一点,我们可...原创 2020-01-02 11:54:56 · 1055 阅读 · 0 评论 -
堆、栈和堆栈的区别
堆(heap):堆是一种经过排序的树形数据结构,每个结点都有一个值。栈(stack):它是一种具有后进先出性质的数据结构,也就是说后存放的先取,先存放的后取。(PS:颇有砌墙的砖——后来者居上的赶脚。)1,申请方式heap:程序员自己申请,并指明大小。stack:由系统分配。2,申请效率原为:heap:效率较高,速度较快,但程序员无法对其进行控制。stack:由ne...原创 2019-12-31 16:39:34 · 412 阅读 · 0 评论 -
深入理解Java内存(图解堆栈)
深入理解Java内存(图解)这篇文章是转自http://blog.youkuaiyun.com/shimiso/article/details/8595564博文,自己对其中一些东西加入了自己的理解和补充。 进入正题前首先要知道的是Java程序运行在JVM(Java Virtual Machine,Java虚拟机)上,可以把JVM理解成Java程序和操作系统之间的桥梁,JVM实现了Java的平台无关...原创 2019-12-31 16:37:24 · 311 阅读 · 0 评论 -
java堆栈区别
1.寄存器:最快的存储区, 由编译器根据需求进行分配,我们在程序中无法控制.2. 栈:存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量池中(对象可能在常量池里)(字符串常量对象存放在常量池中。)3. 堆:存放所有new出来的对象。4. 静态域:存放静态成员(static定义的)5. 常量池:存放字符串常量和基本类型常量(public s...原创 2019-12-31 16:34:29 · 123 阅读 · 0 评论 -
Java之堆栈的区别
在说堆和栈之前,我们先说一下JVM(虚拟机)内存的划分: Java程序在运行时都要开辟空间,任何软件在运行时都要在内存中开辟空间,Java虚拟机运行时也是要开辟空间的。JVM运行时在内存中开辟一片内存区域,启动时在自己的内存区域中进行更细致的划分,因为虚拟机中每一片内存处理的方式都不同,所以要单独进行管理。 JVM内存的划分有五片: 1.寄存器;...原创 2019-12-31 16:33:38 · 142 阅读 · 0 评论 -
堆栈的区别
在计算机领域,堆栈是一个不容忽视的概念,我们编写的C语言程序基本上都要用到。但对于很多的初学着来说,堆栈是一个很模糊的概念。堆栈:一种数据结构、一个在程序运行时用于存放的地方,这可能是很多初学者的认识,因为我曾经就是这么想的和汇编语言中的堆栈一词混为一谈。我身边的一些编程的朋友以及在网上看帖遇到的朋友中有好多也说不清堆栈,所以我想有必要给大家分享一下我对堆栈的看法,有说的不对的地方请朋友们不吝赐教...原创 2019-12-31 12:05:36 · 188 阅读 · 0 评论 -
Java堆栈简介
JAVA在程序运行时,在内存中划分5片空间进行数据的存储。分别是:1:寄存器。2:本地方法区。3:方法区。4:栈。5:堆。基本,栈stack和堆heap这两个概念很重要,不了解清楚,后面就不用学了。以下是这几天栈和堆的学习记录和心得。得些记录下来。以后有学到新的,会慢慢补充。一、先说一下最基本的要点基本数据类型、局部变量都是存放在栈内存中的,用完就消失。new创建的实例化对...原创 2019-12-30 18:47:40 · 173 阅读 · 0 评论 -
Integer a = 1; Integer b = 1;
Integer a = 1;Integer b = 1;Integer c = 500;Integer d = 500;System.out.println(a == b);System.out.println(c == d);Integer aa=new Integer(10);Integer bb=new Integer(10);int cc=10;System.out.p...原创 2019-12-27 10:41:11 · 3980 阅读 · 1 评论 -
java字符串原理及其效率
java字符串类基本特点String类是final的,不可继承 String类源码实现通过字符数组实现,长度不可改变 可以通过String str = "123"来创建一个String对象 通过+可以将两个String对象串联,生成新的字符串 java运行时会维护一个字符串池,String池会保存程序运行中产生的各种字符串,这些字符串内容不能相同字符串创建的几种方式使用new...原创 2019-12-26 17:47:14 · 239 阅读 · 0 评论 -
5分钟理解String的'+'的性能及原理
1、String的‘+’,底层执行,及效率问题2、StringBilder与StringBuffer的比较本篇博文先介绍第一个问题为了让大家看明白,我们举例说明吧!为了加深理解,我们可以来做几个小实验。javac Test 编译文件javap -c Test 查看虚拟机指令实验一:纯字符串 public class Test {...原创 2019-12-26 11:24:01 · 402 阅读 · 1 评论 -
java关于Integer设置-128到127的静态缓存
今天在一个java群里,看到有个群友问到如下为什么第一个为true,第二个为false。 System.out.println(Integer.valueOf("50")==Integer.valueOf("50")); //true System.out.println(Integer.valueOf("200")==Integer.valueOf("200")); //f...原创 2019-10-28 17:30:51 · 202 阅读 · 0 评论 -
1.1JVM内存结构——堆、栈、方法区、直接内存、堆和栈区别
一、定义1、堆:FIFO队列优先,先进先出。jvm只有一个堆区被所有线程所共享!堆存放在二级缓存中,调用对象的速度相对慢一些,生命周期由虚拟机的垃圾回收机制定。2、栈:FILO先进后出,暂存数据的地方。每个线程都包含一个栈区!栈存放在一级缓存中,存取速度较快,“栈是限定仅在表头进行插入和删除操作的线性表”。3、方法区:用来存放方法和static变量。二、存储的数据类型1、堆用...原创 2019-08-19 11:26:05 · 318 阅读 · 0 评论 -
Java Random类和Math.random()方法
Random类 import java.util.Random; public class randomTest { public static void main(String args[]) { Random random=new Random();//以系统当前时间作为随机数生成的种子 System.out.printl...原创 2019-08-10 09:45:57 · 209 阅读 · 0 评论 -
Java Random介绍
Java Random介绍一、简介Random类位于java.util包下,此类的实例用于生成伪随机数流。之所以称之为伪随机,是因为真正意义上的随机数(或者称为随机事件)在某次产生过程中是按照实验过程表现的分布概率随机产生的,其结果是不可预测,不可见的。而计算机中的随机函数是按照一定的算法模拟产生的,其结果是确定的,可见的。我们认为这样产生的数据不是真正意义上的随机数,因而称之为伪随机。...原创 2019-08-10 09:53:25 · 7597 阅读 · 0 评论 -
java中final和static关键字总结
一.final总结1.final修饰类:表示该类不可继承,final不能修饰interface接口2.final修饰方法:表示该方法不能被子类覆盖(即子类不能重写父类的final方法,可以继承),final不能修饰构造函数3.final修饰字段属性:表示属性值第一次初始化后不能被修改,final属性可以直接初始化或在构造函数中初始化,如果属性是直接初始化,则其值不能被其它函数(...原创 2019-08-16 11:05:37 · 104 阅读 · 0 评论 -
Java中this用法小结
Java关键字this只能用于方法方法体内。当一个对象创建后,Java虚拟机(JVM)就会给这个对象分配一个引用自身的指针,这个指针的名字就是 this。因此,this只能在类中的非静态方法中使用,静态方法和静态的代码块中绝对不能出现this,并且this只和特定的对象关联,而不和类关联,同一个类的不同对象有不同的this。public class ThisTest { private in...原创 2019-08-16 15:48:08 · 686 阅读 · 0 评论 -
java面向对象之继承
在java中,面向对象毫无疑问是java的重中之重,今天我们来看一看java面向对象的三大特性之一继承。 首先我们来了解一下类的结构是怎样的? 类中主要有成员属性,成员方法,静态属性,静态方法,构造方法(暂不考虑代码块)。成员属性和成员方法是属于对象的,静态属性和静态方法是属于类的,如下图所示。 类的结构我们知道了(为后面做铺垫的),那么接下来就正式的进入了我们的主题,继承...原创 2019-09-19 10:15:42 · 108 阅读 · 0 评论 -
java四种访问权限
引言 Java中的访问权限理解起来不难,但完全掌握却不容易,特别是4种访问权限并不是任何时候都可以使用。下面整理一下,在什么情况下,有哪些访问权限可以允许选择。一、访问权限简介访问权限控制:指的是本类及本类内部的成员(成员变量、成员方法、内部类)对其他类的可见性,即这些内容是否允许其他类访问。Java 中一共有四种访问权限控制,其权限控制的大小情况是这样的:public >...原创 2019-09-18 16:44:46 · 231 阅读 · 0 评论 -
JDK7之后switch支持String
之前,switch支持的类型只有byte、short、char、int、integer、enum枚举类型,在JDK7后,支持string类型。 public void test(String str) { switch (str) { case "abc": System.out.println("abc"); ...原创 2019-06-25 10:28:33 · 563 阅读 · 0 评论 -
java数组转list
java中数组转list使用Arrays.asList(T... a)方法。示例: 1 2 3 4 5 6 7 8 9 10 publicclassApp { publicstaticvoidmain(String[] args) { List<S...原创 2019-07-11 11:46:39 · 182 阅读 · 0 评论 -
Java内存模型是什么
网上有很多关于Java内存模型的文章,在《深入理解Java虚拟机》和《Java并发编程的艺术》等书中也都有关于这个知识点的介绍。但是,很多人读完之后还是搞不清楚,甚至有的人说自己更懵了。本文,就来整体的介绍一下Java内存模型,目的很简单,让你读完本文以后,就知道到底Java内存模型是什么,为什么要有Java内存模型,Java内存模型解决了什么问题等。本文中,有很多定义和说法,都是笔者自己理解...原创 2019-06-30 17:47:07 · 95 阅读 · 0 评论 -
instanceof 在list
public static void main(String args[]) {List Listlist1 = new ArrayList();Listlist1.add(0);List Listlist2 = Listlist1;System.out.println(Listlist1.get(0) instanceof I...原创 2019-06-18 15:14:16 · 7375 阅读 · 0 评论 -
Java中instanceof关键字的理解
java 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例。instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例。用法:result = object instanceof class参数:Result:布尔类型。Object:必选项。任意对象表达式。Class:必选项。任意已定义的对象类。说明:...原创 2019-06-24 10:09:06 · 127 阅读 · 0 评论 -
Java中的四种引用类型,强引用,软引用,弱引用,虚引用
对于Java中的垃圾回收机制来说,对象是否被回收的标准在于该对象是否被引用。因此,引用也是JVM进行内存管理的一个重要概念。Java中对象的引用一般有以下4种类型:1强引用 2软引用 3弱引用 4虚引用以下一一介绍其用法和区别1强引用:在Java中最常见的就是强引用,把一个对象赋给一个引用变量,这个引用变量就是一个强引用。当一个对象被强引用变量引用时,它处于可达状态,它是不可...原创 2019-06-17 15:31:10 · 97 阅读 · 0 评论