`
海王子1994
  • 浏览: 45199 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论
文章列表
      何为分形,简单来说,它就是一种具有自相似特性的现象、图象或者物理过程。虽然定义简单易懂,就是自己包含许许多多相识的部分,但正如黄金分割比0.618一样,它能产生大量令人叹为观止的图案。      常见的分形例子有:谢尔宾斯基三角形和地毯、门格海绵、龙形曲线、空间填充曲线和科赫曲线等等。            大家可以上网轻松地找到。而制作分形也不是件难事,通过PS,Matlab或者Java等软件我们可以试着设计自己独属的分形,作为一种标志。   下面就附上一段制作简单分形的代码,数学公式来源于网上。 import java.awt.Color; import java ...
之前已经能产生许多小球,但是会发现小球和小球接触后,其中一个球的形状就消失了一部分,没有起到碰撞的效果,所以接下来就继续完成操作。   考虑到碰撞情况,无法就是考虑两球球心间距离与它们半径之和的比较关系 ...
       相信大家都对屏幕保护中的小球碰撞动画深有印象吧,许多色彩缤纷的小球在屏幕上滚动,碰撞,然后一直重复如此过程......现在就让我们自己尝试去做一下吧,或许你做的比它的要更好呦!        不必说,最重要也是最先弄的,自然是要产生小球啦,因此就要先创建一个球的线程类。这里先放上一些关于线程创建的知识,有助于大家巩固记忆啦。   线程的创建有两种方式,分别为继承Thread类(已经实现了Runnable接口)与实现Runnable接口。 1.Thread类 常用方法包括:start()、interrupt()、join()、run()方法等。start()方法用于启动线 ...
作为迭代法一种加速方法,超松弛迭代法计算公式简单,只是需要选择合适的松弛因子,保证迭代过程有较快的收敛速度。它是Gauss-Seidel迭代法的优化。而列主元消去法,因为仅按列选主元,相比完全主元消元法,省了主元搜寻时间,提高了效率。   SOR迭代公式:    SOR编程代码如下:        函数: function [xvect,nvect,xdif]=SOR(A,b,eps,x0,w) %超松弛迭代法 m=length(b); %m为线性方程组的维数,即变量的个数 xvect=[]; %为length(b)行length(nvect)列的矩阵,存储X1~X(len ...
    学习一样事物,自然要先明其义,再通其用。哈夫曼树,顾名思义是一种树,不过它是一类带权路径最短的树。何谓权值呢?权值就是定义的路径上面的值。可以这样理解为结点间的距离;它通常指字符对应的二进制编码出现的概率。至于哈夫曼树中的权值可以理解为:权值大表明出现概率大!一个结点的权值实际上就是这个结点子树在整个树中所占的比例.   举一个网上给的例子: abcd四个叶子节点的权值为7,5,2,4. 这个7,5,2,4是根据实际情况得到的,比如说从一段文本中统计出abcd四个字母出现的次数分别为7,5,2,4. 说a结点的权值为7,意思是说a结点在系统中占有7这个份量.实际上也可以化为百分 ...
      谈到单根区间上方程求根的近似算法,我们第一印象就是高中的时候接触的二分法,正如其名称,二分法就是通过每次把f(x)的零点所在小区间收缩一半的方法,使区间的两个端点逐步迫近函数的零点,以求得零点的近似值。   大概步骤如下:   假定f(x)在区间(x,y)上连续 先找到a、b属于区间(x,y),使f(a),f(b)异号,说明在区间(a,b)内一定有零点,然后求f[(a+b)/2], 现在假设f(a)<0,f(b)>0,a<b ①如果f[(a+b)/2]=0,该点就是零点, ②如果f[(a+b)/2]<0,则在区间((a+b)/2,b)内有零 ...
       何谓链表?百度下可以知道链表是一种物理存储上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。        以我的理解,我们可以这样看:其中的每一个结点就是一个加锁的盒子,盒子里面有一把装着另一个盒子的钥匙(通过钥匙能找到并打开盒子),那个盒子被附上next的标志;盒子里还装着本身拥有的物品即数据data;由这么多一系列盒子组成的就是链表,我们可以通过每一个盒子找到相应下一个盒子,然后反 ...

画板的重绘

       当我们写好一个简易画板,然后在上面画线,画圆等,再把窗口最小化,接着打开,你发现了什么??对,很神奇的事发生了,不是在做梦,之前的所有图形全部消失了,why??原来, 当窗体在屏幕上显示时,首先是将窗体对象的数据从内存中取出来放到缓存中,再在屏幕上进行绘制。当窗体发生改变的时候,程序会重新从内存中获取更新后的数据绘制。all effort are in vain!那怎么办呢?嗯嗯,方法当然是有的啦,就是重绘!!      通过重写JFrame类的paint(Graphics g)方法来保存我们画过的形状,大概就是下面这么个过程: 1)创建保存形状的队列(采用泛型) 2) ...

Java中的数组

      谈到数组,大家都在学习C语言中频繁接触到它,自然并不陌生。数组在内存中表现形式为连续的存储空间,长度是从1开始的,但是下标或者索引就是从0开始的,这点需要记住,不然容易造成数组越界的错误。       对于数组,由于能按照下标数学或者直接指定的下标,我们能快速地访问读取其中的每一个元素;但是数组的内存空间在定义的时候就固定了,不能改变大小,犹如建好的房屋,里面的房间数量已经一定了,不可能再增加。至于数组是属于什么数据类型呢?可以看下图:   Java数据类型图(来自网上):                                             ┏数值型━┳━ ...
Java中有两个重要类,String类和System类,现做简单介绍: *String类: 1.String是字符串常量,一旦创建便不可更改。 2.对String对象进行的操作都不是在其自身上进行的,而是新生成一个对象,这个挺有趣的。 3.当不同类型的操作数 ...

泛型

  众所周知,Object类型为所有类的父亲,它的引用可以接受任何类型的对象。传统的List类的add方法也是以Object类型为参数,自然对应的get方法返回的也是Object类型。多数情况下,我们只是将一种类型添加到集合类(如List)中, ...
基本数据类型之间可以很方便的进行转换,主要有几种常见的方法,归纳如下: (一)自动转换:     因为高类型数据的取值范围大于低类型数据的取值范围,我们可以对低类型数据不做任何处理而直接赋值给高类型的数据,此时的转换类型为隐式的。不过要注意了哦,没有布尔类型的基本数据参与转换,因为呢,Java规定:布尔类型的基本数据时不允许与其他类型的基本数据直接进行转换的;另外还得提醒一点:虽然低类型数据可不做任何处理转换为高类型,但是可能会发生精度损失哦!!! (二)手动强制类型转换:     这是最常见的一种转换方式,我们经常在编程中会用到,如下:     double d=1.234;     in ...
   在Java中,参数传递分为两种类型,一种是值传递,另一种是引用传递,也称地址传递。     值传递意即只传递数值方法调用时,实际参数把它的值传递给对应的形式参数,形式参数只是用实际参数的值初始化自己的存储单元内容,是两个不同的存储单元,所以方法执行中形式参数值的改变不影响实际参数的值。它适用于Java中的基本数据类型包括了String。     引用传递:(形式参数类型是引用数据类型参数):也称为传地址。方法调用时,实际参数是对象(或数组),这时实际参数与形式参数指向同一个地址,在方法执行中,对形式参数的操作实际上就是对实际参数的操作,这个结果在方法结束后被保留了下来,所以方法执行中形式参 ...
   当别人打电话过来时,手机铃响。你可以按接听键亦或者不按,这称之为事件;事件源是手机按钮,而不是事件的发生者。因为事件源只能是图形界面组件对象。那如何判断事件源对象呢?答案就是:根据你的动作来确定, ...
   在生活中我们往往把许多东西归为一个整体,如球有篮球,足球,高尔夫球等,它们都具有球类共有的属性和方法,对于属性来说如大小,体积,重量等,对于方法亦如此。既然如此,在定义各种球的同时我们难道要重复定义相应的类,而且还要重复编写已有的代码吗?? 显然,简洁之美才为我们所推崇。于是,联系生活中的继承关系,类的继承就此诞生。     Java继承的关键字是extends,格式为:         public class 类名(子类,超类,派生类) extends 类名(父类,基类) { }    谈到继承,我们脑海中自然浮现出几个问题:子类继承了父类的哪些属性和方法?能调用哪些属性 ...
Global site tag (gtag.js) - Google Analytics