2020
09-24
09-24
Java Object toString方法原理解析
在Java中,所有的对象都是继承自Object,自然继承了toString方法,在当使用System,out.println()里面为一个对象的引用时,自动调用toString方法将对象打印出来。如果重写了tostring方法则调用重写的toString方法。先看下面一段代码publicclassToStringTest{staticinti=1;publicstaticvoidmain(String[]args){System.out.println("love"+newToStringTest());ToStringTesta=newToStringTest();a....
继续阅读 >
很多常见的面试题都会出诸如抽象类和接口有什么区别,什么情况下会使用抽象类和什么情况你会使用接口这样的问题。本文我们将仔细讨论这些话题。在讨论它们之间的不同点之前,我们先看看抽象类、接口各自的特性。抽象类抽象类是用来捕捉子类的通用特性的。它不能被实例化,只能被用作子类的超类。抽象类是被用来创建继承层级里子类的模板。以JDK中的GenericServlet为例:publicabstractclassGenericServletimplementsServlet,...
本文实例为大家分享了java用Excel将图片画出来的具体代码,供大家参考,具体内容如下能够将任何图片在excel上利用单元格背景完整的描绘出来。像网络上出现的用excel画出超级玛丽等等,各种图片都能在excel上"画"出来。图片我没有经过特殊处理,所以转换的图片不能太大,有多大的图片就要有多少的单元格。如640*480就有307200的单元格。如要转换的图片:转换后在excel中的效果:没多大意义练练手:importjava.awt.Color;importjava...
本文实例讲述了Java递归基础与递归的宏观语意。分享给大家供大家参考,具体如下:1.什么是递归本质上,将原来的问题,转化为更小的同一问题2.例子分析假设我们需要对数组进行求和操作(只是为了更好理解递归程序)要求如下:求解从索引为0到n-1的数组元素和。分析:为了能求解从索引为0到n-1的数组元素和,可以分解为第0个数加上索引从1到n-1的数组元素和,如下:此时求解索引从1到n-1的数组元素和的规模比求解从索引为0到n-1的数...
本文实例讲述了java基于链表实现队列。分享给大家供大家参考,具体如下:在开始栈的实现之前,我们再来看看关于链表的只在头部进行的增加、删除、查找操作,时间复杂度均为O(1)。一、链表改进分析对于队列这种数据结构,需要在线性结构的一端插入元素,另外一端删除元素。因此此时基于链表来实现队列,则有一端的时间复杂度为O(n)。因此我们不能使用之前已经实现的链表结构,我们需要改进我们的链表。思路如下:1.参考在链表头部删...
本文实例讲述了Java基于链表实现栈的方法。分享给大家供大家参考,具体如下:在上几小节中我们实现了基本的链表结构,并在上一节的底部给出了有关链表的源码,此处在贴一次吧,猛戳在开始栈的实现之前,我们再来看看关于链表的只在头部进行的增加、删除、查找操作,时间复杂度均为O(1),基于链表的这几个优势,我们在此基础上实现栈。前言,在写本小节之前,我们已经实现了一个基于静态数组的栈,转到查看。此处我们实现基于链表的...
本文实例讲述了Java链表中元素删除的实现方法。分享给大家供大家参考,具体如下:该部分与上一节是息息相关的,关于如何在链表中删除元素,我们一步一步来分析:一、图示删除逻辑假设我们需要在链表中删除索引为2位置的元素,此时链表结构为:若要删除索引为2位置的元素,需要获取索引为2位置的元素之前的前置节点(此时为索引为1的位置的元素),因此我们需要设计一个变量prev来记录前置节点。1.初始时变量prev指向虚拟头结点dumm...
本文实例讲述了Java实现链表中元素的获取、查询和修改方法。分享给大家供大家参考,具体如下:本节是在上一小节Java链表中添加元素的基础上继续完善我们的链表相关方法的编写,在本节中我们着重对如何获取链表中元素、查询元素以及修改元素进行学习。一、获取元素1.关于获取链表中元素的方法的分析由于我们使用了虚拟头结点,而我们每次都需要从第一个真实节点开始,因此需要首先得到虚拟头结点的下一个节点是谁,然后在此基础上进...
本文实例讲述了Java链表中添加元素的原理与实现方法。分享给大家供大家参考,具体如下:1.链表中头节点的引入1.1基本的链表结构:1.2对于链表来说,若想访问链表中每个节点则需要把链表的头存起来,假如链表的头节点为head,指向链表中第一个节点,如图:1.3使用代码表示此时的链表//定义头节点privateNodehead;//节点个数privateintsize;//无参数构造函数publicLinkedList(){head=null;size=0;}/...
本文实例讲述了Java链表(LinkedList)基本原理与实现方法。分享给大家供大家参考,具体如下:在分析链表之前,我们先来对之前的动态数组、栈、队列总结一下:(1)底层依托于静态数组(2)依靠resize解决固定容量问题(3)是一种假的的动态数据结构1.什么是链表可以从以下两个部分来理解什么是链表(1)最简单的动态数据结构,是一种真正的动态数据结构;(2)是一种数据的存储方式,数据存储在"节点"(Node)中1.1结构基本代码:...
本文实例讲述了Java循环队列原理与用法。分享给大家供大家参考,具体如下:在正式进行循环队列学习之前,我们先来看看在顺序队列中删除队首元素出现的问题(1)设一个容量为capacity=8,size=5(a,b,c,d,e)的数组,左侧为队首、右侧为队尾。(2)出队一个元素后,需整体往前移动一位#出队 #2整体前移一位关于该种操作方式我们很容易得出时间复杂度为O(n)。这时我们就想可不可以在出队元素后,整体元素不往前移,而是在数...
本文实例讲述了Java数组队列概念与用法。分享给大家供大家参考,具体如下:一.队列的概念 (1)队列也是一种线性结构(2)相比数组,队列对应的操作是数组的子集(3)只允许在一端插入数据操作,在另一端进行删除数据操作,进行插入操作的一端称为队尾(入队列),进行删除操作的一端称为队头(出队列)(4)队列是一种先进先出的数据结构(FIFO) 此处我们先来学习一下顺序队列 ,顺序队列 就是用数组实现:...
本文实例讲述了Java栈的应用之括号匹配算法。分享给大家供大家参考,具体如下:1、LeetCode官网美网:https://leetcode.com/中文网 :https://leetcode-cn.com/英语不咋地,所以选择此处选择中文网来进行测试。2、LeetCode中获取第20号题目(1)搜索20号题目(2)查看题目 (3)根据题目要求,首先在本地编辑器中完善20号题目的代码--使用java提供的Stack类,代码如下:classSolution{publicbooleanisVa...
代理模式:为其他对象提供一种代理以控制某个对象的访问。用在:在某些情况下,一个客户不想或者不能直接访问另一个对象,而代理对象可以在客户端和目标对象之前起到中介的作用,代理对象还可以完成它附加的操作。例子:就像房东、租客、中介的关系。中介(代理对象)为房东(真实对象)出租房子,租客(客户)通过中介(代理对象)来找房子租房子,中介完成了租房以后可以收取中介费(附加操作)。先看看静态代理模式,通过上面对...