
Java
文章平均质量分 64
dly215011
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
OJ用java时总出现Time Limit Exceeded原因之一
在刷OJ题时遇到了一个题,无论怎么优化,仍然超时,最后把输出语句换成了append();如下:StringBuilder sb = new StringBuilder();for (Student std : students) { sb.append(std.num).append(" ").append(std.name).append(" ").append(std.grad原创 2017-01-14 18:15:25 · 3184 阅读 · 0 评论 -
Java之接口
一种更加特殊的“抽象类”:接口接口是把隐式公共方法和属性组合起来,以封装特定功能的一个集合。一旦类实现了接口,类就可以支持接口所指定的所有属性和成员。接口定义了某一批类所需要遵循的规范,接口不关心这些类的内部状态数据,也不关心这些类方法里的实现细节,他只规定这批类里必须提供哪些方法。接口的使用规则:1.接口的修饰符可以是public或者省略,如果省略了public访问控原创 2016-10-01 11:03:15 · 392 阅读 · 0 评论 -
Java抽象类abstract
在某些情况下,某个父类只是知道其子类应该包含怎样的方法,但无法准确地知道这些子类如何实现这些方法,我们将该应用到抽象类。抽象类通常代表一个抽象概念,是从多个具体类中抽象出来的父类,具有有更高层次的抽象,他提供给一个继承的出发点,当设计一个新的抽象类时,一定是用来继承的,所以,在一个以继承关系形成的等级结构里面,树节点应该是具体类,树枝节点应是抽象类,抽象类应该拥有尽可能多的共同代码,拥有尽可能原创 2016-10-01 09:53:50 · 322 阅读 · 0 评论 -
数据结构链队列java实现
相对比较简单,用到了之前写过的结点类,包含数据域和指针域代码如下:接口:package queueTest;public interface IQueue { public void clear(); public boolean isEmpty(); public int length(); public Object peek();// 取队首元素 publi原创 2016-10-26 12:15:29 · 1112 阅读 · 0 评论 -
数据结构循环队列Java实现
顺序队列实行先进先出的原则,需要加上front和rear两个变量分别指示队首和队尾在数组中的位置,初值为0。在非空队列中,front指向队首元素,rear指向队尾元素的下一个存储位置。由于顺序队列中会产生假溢出的情形,例如一个有6个存储空间的队列存满,并且出队2次之后,我们无法在第七个存储空间继续入队,但实际上此队列在前方仍然有两个空余的存储空间。解决这个问题,最好原创 2016-10-26 12:12:58 · 2283 阅读 · 0 评论 -
Java泛型深入(一)
泛型的实质:允许在定义接口,类,方法时声明类型形参,这个类型形参将在声明变量,创建对象,调用方法时动态的指定,几乎所有可使用普通类型的地方都都可以使用这种类型形参。例如 Java5改写后的List接口:原创 2016-10-24 22:19:03 · 431 阅读 · 0 评论 -
Java链栈实现两个大数加法
整数是有上限的,所谓大数,是指超过整数最大上限的数,例如18452545389943209751345473,它是无法用整数变量来保存的。为解决两个大数求和问题,可以把两个加数看成是数字字符串。由于最先写的高位反而最后运算,满足栈先进后出的特性,因此选择用栈来解决这个问题。操作步骤如下:1)将两个加数的相应位从高位到低位依次压入栈sA和sB中。2)若两个加数栈都原创 2016-10-25 17:41:59 · 956 阅读 · 0 评论 -
Java单例类
在某些时候,允许其他类自由创建某类的对象没有任何意义,还可能造成系统性能下降(因为频繁的创建对象,回收对象造成的系统开销问题)。这时我们要求一个类始终只能创建一个实例,不允许自由创建该类的对象,则称这个实例为单例类。1.为避免其他类自由创建该类的实例,应该把该类的构造器使用private修饰,从而把该类的所有构造器隐藏起来。2.根据良好封装原则,一旦把该类的构造器隐藏起来,就需要提供有一个原创 2016-09-28 21:02:12 · 368 阅读 · 0 评论 -
Java之正则表达式入门理解
字符串处理利器:正则表达式正则表达式:具有特殊意义的字符串,我们说某个字符串匹配某个正则表达式,通常是指这个字符串里有一部分(或几部分分别)能满足表达式给出的条件。(本文不介绍各种符号代表的意思以及各函数,只是希望能够帮助初学者理解正则表达式的作用和用法)1.正则表达式用途:字符匹配(例如:IP地址是否正确),字符串查找(例如:从网页中寻找email地址原创 2016-10-14 00:03:44 · 357 阅读 · 0 评论 -
Java之内部类
在某些情况下,会把一个类放在另一个类的内部定义,这个定义在其他类内部的类被称为内部类。内部类的作用:1.内部类提供了更好地封装,可以把内部类隐藏在外部类之内,不允许同一个包中的其他类访问该类。2.内部类可以直接访问外部类的私有数据(因为内部类被当成外部类成员,同一个类的成员变量之间可以相互访问)3.外部类不能直接访问内部类成员 (1)如需访问非静态内部类成员,则必须显示原创 2016-10-03 09:27:38 · 250 阅读 · 0 评论 -
数据结构之链表Java实现
接口:package linearList;import org.omg.CORBA.OBJ_ADAPTER;public interface ILiist { public void clear();// 置空表 public boolean isEmpty();// 是否为空 public int length();// 数据元素个数 public Object ge原创 2016-10-11 23:19:41 · 656 阅读 · 0 评论 -
java栈+队列实现简单的停车场管理问题
问题描述设有一个可以停放n辆汽车的狭长停车场,它只有一个大门可以供车辆进出。车辆按到达停车场时间的早晚依次从停车场最里面向大门口处停放(最先到达的第一辆车放在停车场的最里面)。如果停车场已放满n辆车,则后来的车辆只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排在便道上的第一辆车就进入停车场。停车场内如有某辆车要开走,在它之后进入停车场的车都必须先退出停车场为它让路原创 2016-11-02 11:58:20 · 8016 阅读 · 2 评论 -
java实现优先级队列
优先级队列是一种带有优先级的队列,我们约定关键字最小的数据元素具有最高的优先级,且总是排在队首。在优先级中的数据元素也不仅仅限制在队尾进行,而是顺序插入到合适的位置,以确保队列的优先级顺序。用到了之前写的结点Node类队列接口:package queueTest;public interface IQueue { public void clear(); public b原创 2016-10-31 20:48:00 · 853 阅读 · 0 评论 -
Java队列递归求解素数环问题
思路:1.创建顺序表SqList的对象L,用于存放素数环中的数据元素;创建链队列LinkQueue对象Q,用于存放还未加入到素数环中的元素。2.初始化顺序表L和队列Q:将1加入到顺序表L中,将2~n的自然数全部加到Q队列中。3.递归,将出队的队首元素p与素数环最后一个数据元素q相加,若两数之和是素数而且p不是队尾元素,则将p加入到素数环中;否则说明p暂时无法原创 2016-10-31 19:16:26 · 3418 阅读 · 0 评论 -
Java实现简单的贪吃蛇
这两天学着做了一个简单的贪吃蛇,只是为了练习用,所以很多地方都不完美实现方式是用链表活动区域Yard:import java.awt.Color;import java.awt.Font;import java.awt.Frame;import java.awt.Graphics;import java.awt.Image;import java.awt.event.原创 2016-10-30 23:06:44 · 27025 阅读 · 4 评论 -
数据结构之循环双向链表java实现
package linearList;import java.util.Scanner;import sun.net.www.content.text.plain;import sun.rmi.runtime.Log;public class DuLinkList implements ILiist{ public DuLNode head; //双向循环链表的头结点 publ原创 2016-10-18 21:35:03 · 1438 阅读 · 0 评论 -
Javaz之枚举类
在某些情况下,一个类的对象是有限定而且固定的,比如季节类,只有春夏秋冬四个对象。这种实例有限而且固定的类被称为枚举类。Java5新增了一个enum关键字用以定义枚举类,枚举类是一种特殊的类,一样可以有自己的成员变量,方法,可以实现一个或多个接口,可以有自己的构造器。枚举类与普通类的区别:1.enum定义的枚举类默认继承了java.lang.Enum类,而不是默认继承Object原创 2016-10-04 13:48:45 · 422 阅读 · 0 评论 -
Java之匿名内部类
顾名思义,没有名字的内部类。表面上看起来它们似乎有名字,实际那不是它们的名字。匿名内部类适合创建那些只需要一次使用的类,创建匿名内部类是会立即创建一个该类的实例,这个类定义立即消失,匿名内部类不能重复使用。定义匿名内部类的格式:new 实现接口()||父类构造器(实参列表){ //匿名内部类的实体部分}定义匿名内部类无需使用class关键字,而原创 2016-10-03 11:02:54 · 330 阅读 · 0 评论 -
Java链表实现删除重复结点以及合并链表(非递减)
Java链表已在上一篇文章写出,不再赘述1.删除重复结点:1)思路:从单链表的首结点开始依次将单链表中每一个结点与他的后面的所有节点相比较,若遇到相等的,则将此结点从链表中删除,当对每个结点都处理完后,算法结束2)实现:package test;import linkList.LinkList;import linkList.Node;public class D原创 2016-10-17 20:10:32 · 1002 阅读 · 0 评论 -
Java栈实现判断分隔符是否匹配
思路:一个匹配的分隔符可以被其他分隔符分开,即分隔符允许嵌套。因此,一个给定的右分隔符只有在其前面的所有右分隔符都匹配上之后才能进行匹配。可见,最先进的左分隔符在最后才能进行匹配,与栈式存储结构先进后出的特性吻合,故采用栈。算法:从左到右扫描语句,每次读取一个字符,若发现他是左字符,则压入栈中;当读到一个右字符,则弹出栈顶的左分隔符,并且查看它是否和右分隔符相匹配,原创 2016-10-23 18:32:30 · 1709 阅读 · 0 评论 -
Java泛型入门
一.为什么要出现泛型Java集合有一个缺点——把一个对象丢进集合里之后,集合就会忘记这个对象的数据类型,当程序从集合中取出对象之后,当再次取出该对象时,该对象的编译类型就变成了Object类型(其运行时类型没变)。集合的设计者把集合设计成能保存任何类型的对象,是要求拥有更好地通用性,但却带来了以下问题:1.可能会引发一些问题,例如:想创建一个只能保存Dog类型的对象,但程序也可以轻原创 2016-10-23 15:20:46 · 327 阅读 · 0 评论 -
Java中==和equals方法
Java有两种方式来测试两个变量是否相等:一种是利用==运算符,另一种是利用equals()方法一.==运算符 当使用==来判断两个变量是否相等时 1.如果两个是基本类型变量,且都是数值型(不一定要求数据类型要严格相同),只要两个变量的值相等,就将返回true。例如: int it=65; float fl=65.0f; //将返回tr原创 2016-09-27 12:09:17 · 543 阅读 · 0 评论 -
Java数组初识
一.数组是一种类型1.数组是编程语言中最常见的一种数据结构,要求所有的数组元素具有相同的数据类型由于类与类之间的继承关系,可能会造成一个数组存放多种数据类型的假象,例如一个水果数组,要求每个元素都应该是数组类型,而实际数组里可能存在苹果,香蕉,但实际上它们都继承了水果,是一种水果类型。2.数组是一种数据类型,本身是一种引用类型(指针)。二.数组的定义1.语法格式:type[原创 2016-09-18 15:16:05 · 249 阅读 · 0 评论 -
Java控制循环语句break,continue,return
Java语言没有提供goto语句来控制程序跳转,此方法提高了程序流程控制的可读性,但降低了程序控制的灵活性。为了弥补这一不足,Java提供了continue和break来控制循环结构,除此之外,return可以结束整个方法,也结束了一次循环。一.使用break结束循环1.在某种条件出现时强行终止循环,用于完全结束一个循环,跳出循环体。eg: for(int i=0;i原创 2016-09-18 11:34:12 · 6502 阅读 · 0 评论 -
Java逻辑运算符||与|
||:或,只要两个操作数中有一个是true,就可以返回true,否则返 回 false|:不短路或,作用于||相同,但不会短路两者区别在于对短路或||而言,如果第一个操作数返回true,||不会再对第二个操作数求值,直接返回true;而|即使第一个条件满足仍然会对第二个条件进行判断eg1: int a=5; int b=10; i原创 2016-09-18 11:00:18 · 528 阅读 · 0 评论 -
Java自加自减运算符
1.++:自加运算符1)单目运算符,只能操作一个操作数;2)只能操作单个数值型的变量,不能操作常亮或者表达式 如果把++放在操作数左边,先把操作数加1,再把操作数放入表达 式中运算;如果把 ++放在右边,则先把操作数放入表达式中运算,然后再把操作数加1eg1:int a=5; int b=a++ +6; System.out.pr原创 2016-09-17 21:29:39 · 765 阅读 · 0 评论 -
Java数据类型的分类
1.Java语言是一门强类型语言 1)所有的变量必须先声明后使用 2)指定类型的变量只接受与之匹配的值2.变量 每个变量都代表了某一小块内存,都是有名字的。变量相当于一个有名称的容器,该 容器用于装各种不同类型的数据3.Java语言支持的类型分为两类:基本类型,引用类型4.基本类型包括:boolean类型和数值类型(整数类型(byte,short,int,原创 2016-09-17 19:38:46 · 348 阅读 · 0 评论 -
Java基本类型的类型转换
Java有两种类型转换方式:自动类型转换和强制类型转换一.自动类型转换 1.当把一个表数范围小的数值或变量直接赋给另一个表数范围大的变量时,系统可以进 行自动类型转换;就如同有两瓶水,当把小瓶的水倒入大瓶中时,不会有任何问题;否 则需进行强制转换. 2.自动类型转换图: 箭头左边的数值类型可以自动转换为箭头右边的数值类型 byte不能自动类型转原创 2016-09-17 20:30:26 · 454 阅读 · 0 评论 -
Java基本数据类型
一.整型1.分类: byte(8位,表示范围:-128~127) short(16位,表示范围:-2^15~2^15-1) int(32位,表示范围:-2^31~2^31-1) long(64位,表示范围:-2^63~2^63-1)2.“特殊的”int a.如果直接将一个较小的整数值(在byte或short类型表示的范 围之内)赋值给一个 b原创 2016-09-17 19:41:34 · 360 阅读 · 0 评论 -
Java标识符和关键字
一,分隔符1.分号( ; ) Java语句可以跨越多行书写,结尾用";"分隔。但一个字符串,变量名不能跨越多行。 eg:String hello="你好!"+ "Java";//正确 String hello="你好! Java";/原创 2016-09-14 11:16:06 · 822 阅读 · 0 评论 -
Java数组在内存中的存储
1.看待数组时,一定要把数组看成两部分:一部分是数组引用,即在代码中定义的数组引用变量;另一部分是实际的数组对象,这部分是在堆内存里运行的,通常无法直接访问,只能通过数组引用变量来访问。2.数组在内存中的存储示意图: 定义并初始化一个数组之后,在内存中分配了两个空间,一个用于存放数组的引用变量,另一个用于存放引用变量所指向的数组本身。3.如果堆内存中数组不再有任何引用变量指向自原创 2016-09-18 16:41:49 · 6558 阅读 · 0 评论 -
Java中构造器间的调用
如果是两个方法之间存在包含关系,则可以在方法B中调用方法A。但构造器中不能直接调用,构造器必须使用new关键字来调用。可是一旦使用new关键字来调用构造器,将导致系统重新创建一个对象。为了解决这个问题,可以使用this关键字来调用相应的构造器。例如:package structurerOverride;public class Apple { public Str原创 2016-09-22 18:19:37 · 4369 阅读 · 0 评论 -
Java实现链栈
用到了之前链表写的结点类,可以在前面的文章中找到,只是定义了数据域和指针域,这里不再写了接口类:package com.stack;import sun.reflect.generics.tree.VoidDescriptor;public interface IStack { public void clear(); public boolean isEmpty(); pu原创 2016-10-22 18:33:42 · 641 阅读 · 0 评论 -
Java实现顺序栈
接口类:package com.stack;import sun.reflect.generics.tree.VoidDescriptor;public interface IStack { public void clear(); public boolean isEmpty(); public int length(); public Object peek();//取栈顶原创 2016-10-22 18:30:53 · 1536 阅读 · 0 评论 -
Java之BigDecimal类
一般来说,一提到Java里面的商业计算,我们都知道不能用float和double,因为这两种基本浮点类型容易引起精度丢失。例如下程序:package bigDecumal;public class DoubleTest { public static void main(String[] args) { System.out.println("0.06+0.01:原创 2016-10-12 12:03:06 · 643 阅读 · 0 评论 -
Java链表练习实现一元多项式的加法
链表的实现在之前写过了,就不再写了将链表的数据域赋值为多项式结点类多项式结点类:package polynomialOfOneIndeterminate;public class PolynNode { public double coef;//系数 public int expn;//指数 public PolynNode(double coef,int ex原创 2016-10-21 22:56:09 · 3401 阅读 · 2 评论 -
Java方法的参数传递机制
Java方法的参数传递方法只有一种:值传递。所谓值传递,就是将实际参数的额副本传入方法,而参数本身不会受任何影响。当系统开始执行方法时,系统为形参执行初始化,就是把实参变量的值附给方法的形参变量,方法里操作的并不是实际的实参变量。原创 2016-09-22 08:10:14 · 343 阅读 · 0 评论 -
Java中对象的this引用
Java中提供了this关键字,this关键字总是指向调用该方法的对象。根据this出现位置的不同,this作为对象的默认引用有两种情形:a.构造器中引用该构造器正在初始化的对象eg:public class TestThis{ private int i; public TestThis(int i){ this.i = i; }}b原创 2016-09-21 23:09:50 · 4531 阅读 · 1 评论 -
数据结构之顺序表Java实现
元素默认为char类型,代码中有详细注释,可编译运行接口:package linearList;public interface ILiist { public void clear();// 置空表 public boolean isEmpty();// 是否为空 public int length();// 数据元素个数 public char get(int i)原创 2016-10-10 20:38:18 · 1213 阅读 · 0 评论 -
Java关键字static小结
static是一个特殊的关键字,可用于修饰成员变量,方法,初始化块,内部类(包括接口,枚举)。static修饰的成员表明它属于这个类本身,而不属于该类的单个实例,因此通常把static修饰的成员变量和方法也称为类变量,类方法。不使用static修饰的则属于该类的某个实例,不属于该类,通常称为实例变量,实例方法。由于static英文翻译是静态的意思,因此有时也把static修饰的成员变量和方原创 2016-09-20 13:23:11 · 359 阅读 · 0 评论