Java点滴
尚振伟
生如逆旅单行道,哪有岁月可回头。。。。。。。。。。
展开
-
浅析HashMap的put()方法执行流程
HashMap的数据结构在jdk1.8之前是数组+链表,为了解决数据量过大、链表过长是查询效率会降低的问题变成了数组+链表+红黑树的结构,利用的是红黑树自平衡的特点。链表的平均查找时间复杂度是O(n),红黑树是O(log(n))。HashMap中的put方法执行过程大体如下:1、判断键值对数组table[i]是否为空(null)或者length=0,是的话就执行resize()方法进行扩容。2、不是就根据键值key计算hash值得到插入的数组索引i。3、判断table[i]==nul..原创 2022-04-12 08:52:34 · 10775 阅读 · 0 评论 -
浅议Lambda表达式
Lambda介绍Lambda 表达式是 JDK8 的一个新特性,可以取代大部分的匿名内部类,写出更优雅的 Java 代码,尤其在集合的遍历和其他集合操作中,可以极大地优化代码结构。JDK 也提供了大量的内置函数式接口供我们使用,使得 Lambda 表达式的运用更加方便、高效。对接口的要求虽然使用 Lambda 表达式可以对某些接口进行简单的实现,但并不是所有的接口都可以使用 Lambda 表达式来实现。Lambda 规定接口中只能有一个需要被实现的方法,不是规定接口中只能有一个方法,因为原创 2022-04-09 12:39:34 · 558 阅读 · 0 评论 -
深入理解Java虚拟机——JVM垃圾回收机制和垃圾收集器详解
原文地址:http://blog.csdn.net/silenceoo/article/details/77869485一:概述说起垃圾回收(Garbage Collection,GC),很多人就会自然而然地把它和Java联系起来。在Java中,程序员不需要去关心内存动态分配和垃圾回收的问题,顾名思义,垃圾回收就是释放垃圾占用的空间,这一切都交给了JVM来处理。本文主要解答三个问题转载 2017-11-30 08:30:39 · 1039 阅读 · 0 评论 -
Java的内存与回收
文章原址:http://mp.toutiao.com/preview_article/?pgc_id=6459574863911731726Java引用的种类1.对象在内存中的状态对于JVM的垃圾回收机制来说,是否回收一个对象的标准在于:是否还有引用变量引用改对象?只要有引用变量引用对象,垃圾回收机制就不会回收它。也就是说,当java对象被创建出来之后,垃圾回收机制会实时的监控每个转载 2017-09-04 09:06:47 · 736 阅读 · 0 评论 -
浅议Java中I/O流
流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备之间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。从不同的角度对流可以分为以下几类:1、输入流和输出流 输入流:只能从文件中读取数据,而不能向其中写入数据。 输出流:只能向文件中写入数据,而不能读取。 如从服务器通过网络传原创 2017-03-09 11:14:47 · 788 阅读 · 5 评论 -
Java多线程 并发编程
文章转自:点击打开链接一、多线程1、操作系统有两个容易混淆的概念,进程和线程。进程:一个计算机程序的运行实例,包含了需要执行的指令;有自己的独立地址空间,包含程序内容和数据;不同进程的地址空间是互相隔离的;进程拥有各种资源和状态信息,包括打开的文件、子进程和信号处理。线程:表示程序的执行流程,是CPU调度执行的基本单位;线程有自己的程序计数器、寄存器、堆栈和帧。同一转载 2017-03-08 17:07:29 · 608 阅读 · 0 评论 -
java中的File类
java中的File类是用来对操作系统中的文件进行操作的(这里的文件可以是操作系统中所有的文件,包括文件夹),和操作文件中信息的IO流是不同的。File类的功能:1、用来将文件和文件夹封装成File对象。2、通过File类方便对文件或者文件夹的属性信息进行操作。3、把File对象作为参数传递给流的构造参数。File类中的构造方法可以用来生成File对象,有:File原创 2016-08-12 15:02:25 · 734 阅读 · 0 评论 -
"=="操作符和equals方法的区别
"=="操作符是用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同。要比较两个基本类型的数据或两个引用变量是否相等,只能用 == 操作符。如果一个变量指向的数据是对象类型的,那么,这时候涉及了两块内存,对象本身占用一块内存(堆内存),变量也占用一块内存,例如 Object obj=new Object();变量obj是一个内存,new Object()是另一个内原创 2016-07-31 16:51:15 · 559 阅读 · 0 评论 -
Java集合小总结(花了一晚上的时间)
java中的Collection是一个集合接口。它提供了对集合进行基本操作的通用接口方法。Collection接口在java类库中有很多具体的实现,其意义在于为各种具体的集合提供了最大化的同一操作方式。Collections是一个包装类,它包含有各种有关集合操作的静态多态方法,就像是一个工具类,服务于java的Collection框架。Collection是最基本的集合接口,一个Col原创 2016-08-08 21:44:15 · 1750 阅读 · 7 评论 -
浅议java中的final、static关键字
static方法一般称作静态方法,由于静态方法不依赖于任何对象就可以进行访问,因此对于静态方法来说,是没有this的,因为它不依附于任何对象,既然都没有对象,就谈不上this了。并且由于这个特性,在静态方法中不能访问类的非静态成员变量和非静态成员方法,因为非静态成员方法/变量都是必须依赖具体的对象才能够被调用。但是要注意的是,虽然在静态方法中不能访问非静态成员方法和非静态成员变量,但是在非原创 2016-07-26 20:54:11 · 403 阅读 · 0 评论 -
抽象类和接口
抽象类:抽象类就是类本身不断向上抽取而来,在抽取的过程中,子类方法的声明相同,方法体不同,故在抽取的过程中就形成了没有方法体的方法,这个方法就叫抽象方法,该方法所在的类就叫抽象类。抽象类只描述了事物应该具备的基本行为,具体的内容,要通过子类的重写来描述该功能的特点。抽象类的特点:1、没有方法体,抽象方法一定要定义在抽象类中。2、抽象类和方法都必须用关键字abstract原创 2016-07-30 22:35:21 · 481 阅读 · 0 评论 -
java面向对象的特征
计算机软件系统是现实生活中的业务在计算机中的映射,而现实生活中的业务其实就是一个个对象协作的过程。面向对象编程就是按现实业务一样的方式将程序代码按一个个对象进行组织和编写的程序代码,这样就可以把现实生活中的业务对象映射到计算机系统中。 面向对象的编程语言有封装、继承、多态等三个主要的特征。 1、封装 封装是保证软件部件具有优良的模块性的基础,封装的原创 2016-07-31 21:46:50 · 498 阅读 · 0 评论 -
重载(Overloading)和重写(Overriding)
重载(Overloading)(1)、方法重载是让类以统一的方式处理不同类型数据的一种手段。多个同名函数同时存在,具有不同的参数个数/类型。重载Overloading是一个类中多态性的一种表现。(2)、java的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义。调用方法时通过传递给它们的不同参数个数和参数类型来决定具体使用哪个方法,这就是多态性原创 2016-07-31 22:15:43 · 504 阅读 · 0 评论 -
Java中的数组
数组:同一类型的数据的集合,其实就是容器,可以存储多个数据。作用:存储多个数据。特点:1、数组中存储的数据必须是同一类型的数据。2、存储时必须要明确要存储的元素的个数。好处:可以对存入的元素进行自动的编号,这些编号称之为索引、角标或者下标,而且是从零开始的。编号和数组中的元素是一一对应的,通过这种对应的关系,我们可以很容易找到相对应的数组中的元素。数组变量是引用数据原创 2016-08-07 17:01:38 · 562 阅读 · 0 评论 -
多线程问题的总结
多线程问题的总结 转http://blog.csdn.net/jack_chen19941、多线程有什么用? 一个可能在很多人看来很扯淡的一个问题:我会用多线程就好了,还管它有什么用?在我看来,这个回答更扯淡。所谓”知其然知其所以然”,”会用”只是”知其然”,”为什么用”才是”知其所以然”,只有达到”知其然知其所以然”的程度才可以说是把一个知识点运用自如。OK,下面说说我对这个转载 2016-08-17 21:56:12 · 793 阅读 · 0 评论 -
汉诺塔小游戏
需求:有三根柱子,分别为起始柱子、中间柱子和目标柱子,起始柱子上有圆盘,按从小到大的顺序摆放。需要将起始柱子上的圆盘全部挪到目标柱子上,在挪动的过程中可以借助中间柱子,每次只能挪动一个圆盘,而且每根柱子上的圆盘都是按从小到大的顺序摆放的。思路:1、当有一个圆盘的时候,可以直接将圆盘从其实柱子上挪到目标柱子上。2、当有两个圆盘的时候,就需要借助中间柱子来进行挪动,具体的挪动步骤是:想将起原创 2016-08-17 19:35:36 · 941 阅读 · 2 评论