`
尘大大
  • 浏览: 10884 次
  • 性别: Icon_minigender_2
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论
文章列表
链表主要分为单向链表、双向链表、循环链表 双向链表、循环链表都可以认为是单向链表的扩展,单向链表最基础,笔者的介绍也将基于单向列表 单向链表是一个在物理存储上不相邻的序列(与数组不同),它由结点组成,每个结点分为指针域和值域,值域发挥与数组元素类似的存储数值的作用,而指针域存储下一个结点的地址,结点与结点之间通过指针相连。 下图是单向链表的逻辑结构 可见只要得到第一个元素(通常称为头结点)即可通过指针获取整个链表的元素。 定义一个结点类 public class Node {          //值域,定义为Object,能够存储任意类型的值 Object obj; //指针域      ...
List与Set都是接口Collection的子接口,Collection源代码中有一些帮助实现基本的存取操作的抽象方法,主要有add(),addAll(),iterator(),remove(),size(),在Collection的子接口List、Set以及子类ArrayList、LinkedList、Vector、HashSet、TreeSet都重写了这些方法并且经常被使用。 ArrayList是List的子类,它通过封装一个数组进行元素的存取,所以通过下标调用指定元素的效率高,但是对元素的其他操作(存储、移除)的效率则较低。 LinkedList是list的子类,在LinkedList类 ...
异常机制可分为 运行时异常和强制异常,在编写代码的过程中,我们最容易遇见的异常 有空指针异常、数组越界、类型转换异常。空指针异常在某个对象未被实例化,而又用 该对象名调用方法时发生。如: public class Test extends JFrame{ private void testify(){ System.out.println("这是一个Test类"); } /** * @param args */ public static void main(String[] args) { Test test=null; test.test ...
找空位赋权值法实现人机五子棋   权值表            黑棋(人)                         白棋(机)         活                  死 活 死 一连   10     5                 10          ...
数组是一段连续的存储空间,数组在创建时大小即被定义,不可更改。如果数组的大小可以随意更改伸缩 ,那么就可以有效避免空间浪费或者数据溢出的问题,基于这一愿望,将数组封装成一个类的队列类产生 了。在队列中, ...
实现画图面板的重绘,起初的思路是创建数组存储一个几何图形的起始坐标和末尾坐标,在paint方法中 重新绘制出来。这种方法虽然简单可行,但是存在一些严重的缺陷: 1.数组的大小无法估计,极易会造成存储空间的浪费或者溢出。 2.绘制的几何图形越多存储的坐标值越多,甚至会出现坐标值的重复存储。 3.只能绘制一些简单的图形,复杂图形的绘制十分困难。 4.颜色的存储尚未找到解决方法。 通过存储像素点来实现重绘使得重绘变得简单容易理解,一张图片是由许多像素点构成的,而这些像素点 只有颜色Color这一个属性。所以,我们仅需定义一个二维数组,将这些像素点如同填充二维表一样存储 在数组中就行了。在画图面板 ...
从XP画图软件的界面与基本功能看,大致可以分为四个部分:菜单栏、工具栏、颜色栏、画图界面。在上第一堂java课程的时候老师就讲过:在做一次编程时,应当事先想好怎么做,在脑海中形成一个大致的模型,再来编写程序。这好比结构化软件开发方法中的系统分析与系统设计,他们都必须在系统实现之前完成好。因此,根据画图板的界面和功能将其分为五个类:承载其他组件的窗体是一个类,菜单栏也在该类中创建;工具箱所在面板为一个类,在该类中添加各种工具的图标;画图区域所在面板为一个类。       有了以上五个类的划分,画图板的编写就显得十分清晰了。在填充每个类时,可以暂时忽略掉要实现的动能而编写其基本的界面。经过一段时间的 ...
paint方法在Component中定义,在JPI文档中有以下解释:应该绘制组件的内容时调用此方法;例如首次显示组件或者组件已损坏并需要修复时。Graphics 参数中的剪贴区矩形设置为需要绘制的区域。重写此方法的 Component 子类不需要调用 super.paint(g)。 编写画图板时接触到的组件JFrame(重量级组件)、JPanel、JButton、JLabel等类都是Component的子类,而在JFrame、JPanel中如果重写paint方法就必须要在paint方法中调用super.paint(g),否则虽然可以正常画图,但是组件无法显示,画图区域呈现透明的状态。 课堂上老师 ...
司空见惯的陋习   计算机代码是一种十全十的讲究逻辑性与定量性的语言,所以任何一种现象(方法的使用、运行的结果等)都可以追根溯源理解其原理,而原理往往是简单且为自己所熟悉的。学习Java应该养成一个时时刻刻打 ...
   经过一段时间对java的学习,我对这门计算机语言有了一个基本的认识和了解。大一的时候学习C语言,大二下学期又开始接触Java,发现世界上同类的事物真可以触类旁通,乐器、舞蹈、语言都是。C语言与Java的语法格式基本一 ...
接口与类相似,都是由属性和方法构成。类中存在很“基础”的类,譬如Component类,JLabel,JButton,JTextField等都继承于Component类,然而这个类又继承另一个更基础的类Object类。接口可以认为是类的进一步的“基础化”和抽象化。接口中的属性要用public static final 这些关键字修饰,作为常量使用。而接口中的方法则抽象为一个方法头,而没有方法体。所以接口不可能实例化,因为即使实例化它也不能执行任何方法,接口必须被类继承。接口的出现的一个很重要的用处是它能够实现类之间的继承所不能实现的多重继承。一个类可以继承多个接口,从而实现多个接口的功能。 监听器 ...
之所以出现类的继承,我认为最大的原因还是为了减少代码的编写。因为有许多的类有一些的共性,所以人们便把这些共有的属性和方法作为最基本的属性方法写入一个类中,这个类称为父类,在编写某一个特定的类的时候继承该父类的属性和方法,再添加一些此类特有的属性和方法,或者对父类的方法进行重写,这个类称为子类。 父类与子类确实有类似与人类的继承关系,所以人们将之形象的称为“父子”,一个父类可以有很多子类,但是一个子类不可能有多个父类。从数学上的包含与被包含的关系上来看,父类应该包含于子类,但是从类的自动转换来看,一个父类可以包含继承它的千千万万的子类。子类实例化后,可以作为引用参数传递给函数,而这个函数的参数类型 ...
自然界中的所有个体,都可以用对象来模拟。一个人、一只狗甚至一个小分子,都可以认为是一个对象。那么类反应在自然界中可以理解为类别的划分,我们为什么能称这个个体为人,那个个体为狗,是因为这个个体他所属类别的所有特征。在自然界中,我们是先接触了许许多多的对象,才有类的划分。也就是说,现有对象,人们才自然而然的对其划分类别,称人为人,称狗为狗。在模拟的计算机世界中则正好相反,先创建类,再对其实例化,从而利用一个个对象模拟现实生活。 其实,即使在计算机编程中,类的产生也是在对象之后,人们在疲于反复敲同一类事物的代码以后才想到用一个高度浓缩概括的框架来取代冗长的编写,这就是类,有了类,编写对象变得简单方便, ...
Global site tag (gtag.js) - Google Analytics