自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(43)
  • 资源 (1)
  • 收藏
  • 关注

原创 学习马士兵Java教程

前一阵子,自己学习了Java How To Program这本书,对于Java的基础知识方面有了一些了解,但是仍旧有点一知半解。于是今天找了尚学堂的马士兵的Java视频教程,从另一个角度再次学一遍基础知识。我还是把基础知识看的比较重要。就像马老师说的,掌握了最基本的,后面的东西,都可以自行学习,而且会发现学起来也不会费力。OK,学习,学习,学习。从香港回来后,一直也在投简历,回应寥寥无几。也会

2013-07-17 12:12:56 1180

原创 数据结构

自引用的类自引用类包含一个数据成员,其指向与自身类型相同的一个对象。可以把自引用的对象连接在一起,从而构成有用的数据结构。动态内存请求用于创建和维护动态空间,具体的就是释放不再需要的空间以及获取内存空间来放置新节点。对于动态内存空间的释放,在Java上不用显示说明。Java自动完成无用单元的收集工作。动态内存请求的极限在机器上为系统能够提供的最大虚拟内存大小。运

2013-07-15 15:50:01 481

原创 异常处理

常见异常:数组下标越界,算法溢出(超出了数值表达范围),除数为零,无效参数,内存溢出等。Java的异常处理功能使得程序能够主动去捕获错误和异常,从而不会任由错误出现并产生更大的麻烦。通常是在故障诊断和故障处理不在同一位置的情况下使用。即适用于在一个方法中可以检测出错误但不能处理错误的情况。主要用于处理一些同步错误,不宜处理异步事件。异常处理用助于提高程序的容错性。异常处

2013-07-14 22:30:59 433

原创 GUI图形用户界面(二)

文本区域 TextArea文本区域是一个可以显示多行文本的区域。与TextField一样继承自TextComponentTextField t = new TextArea( String s, int rows, int columns )文本区域不产生任何可由handleEvent方法或action方法处理的事件。要从文本区域获取文本,则需要一个外部事件来触发。画板 C

2013-07-05 09:15:47 407

原创 布局管理器

在整个屏幕中,可以放置多个面板(Panel),每个panel可以运用不同的布局。通过LayoutManager接口定义的方法来放置组件。设定布局:setLayout( new FlowLayout( FlowLayout.CENTER ) )常用布局有:FlowLayout安装添加顺序,从左到右放置组件常量:CENTER, LEFT, RIGHTBorder

2013-07-04 17:16:03 340

原创 GUI 图形用户界面(一)

GUI组件包含在Java.awt软件包中Java.awt软件包的继承层次结构component——组件  container——容器,用于放置多个组件标签 Label用于显示一行静态文本信息Label label = new Label( "My name is Christine" );方法:setText(), getText()揿压式按

2013-07-04 14:11:50 385

原创 图形

Java绘图软件包:java.awt 坐标系:屏幕左上角的坐标为(0, 0)。(x, y),x坐标是左上角向右平移的距离,y坐标是左上角向下平移的距离。坐标单位:像素Graphics对象通过控制如何绘制信息来管理一个图形环境。包含绘图,字体操作和颜色操作等方法。Graphics类是一个abstract类——为了Java的可移植性,因为支持Java的每个平台上绘图的执

2013-07-04 01:14:27 353

原创 StringTokenizer

StringTokenizer 将一个字符串分成组件标记。构造函数:StringTokenizer tokens = new StringTokenizer( "this is a book" );常用方法tokens.countTokens() 返回tokens的数量tokens.hasMoreTokens()  如果还有tokens返回true,否则返回false

2013-07-01 10:00:36 352

原创 StringBuffer

一旦创建了String对象以后,它的内容就不再改变。而StringBuffer就是可修改的String。String对象是常量字符串,StringBuffer对象则是可修改字符串。StringBuffer在进行字符串处理时,不生产新的对象,在内存使用上要优于String类。因此在实际使用中,如果一个字符串涉及到修改处理,例如插入,删除,则使用StringBuffer比较合适。S

2013-07-01 09:20:38 483

原创 String

String 构造函数String s1 = new String();  //初始化一个新的String对象,并用String类的默认构造函数将其赋值给引用s1。String s2 = new String( s );  // 实例化一个新的String对象,并用String类的复制构造函数将其赋值给引用s2。对象s作为参数递给构造函数。String s3 = new String(

2013-07-01 00:01:03 396

原创 多态

在Java中的多态机制等效于switch逻辑,即允许不同类的对象对同一消息作出响应。使用多态编程可以避免由switch逻辑带来的常见错误。它包含较少的分支逻辑,倾向于更简化的顺序代码,改善了测试,调试和程序维护。example:/** * Employee class *//** * @author Administrator * */public abstra

2013-06-28 11:21:14 387

原创 抽象类和具体类

所谓抽象类,也就是这个类太过于一般化,而无法定义真正的对象,即无法实例化对对象。具体类,就是那些可以实例化对象的类。example:抽象类:TwoDimensionalObject 具体类:Square, Circle, Triangle如果一个类派生自一个抽象类,则必须在子类中重写抽象类方法,否则这个新类包含了抽象类方法会自动变成抽象类,从而无法实例化。抽象类中叶

2013-06-28 09:49:54 759

原创 final关键字

关键字 final 有终态的 含义,它可以修饰非抽象类,非抽象类成员方法和变量。final 类不能被继承,没有子类,final类中的方法默认为 final。final 的方法不能被子类的方法覆盖,但可以被继承。final 成员变量表示常量,只能被赋值一次,赋值后值不再改变。final 不能用于修饰构造方法。父类的private成员方法是不能被子类方法覆盖的,因此priv

2013-06-28 09:34:58 330

原创 继承

继承就是通过包含现有类的属性和行为来创建新类。产生出比父类含有更多特性的子类。新的类,称为子类(subclass)可以直接继承父类(superclass)的实例变量和实例方法。Java只支持单继承,即一个类派生于一个超类。而不支持多继承。子类会添加自己的变量和方法,因此子类一般大于它的父类,且更加专门化,代表一组更小的对象组。子类的每个对象也是其父类的一个对象,但是反过

2013-06-27 11:57:29 436

原创 终止函数 finalizer

系统资源是有限,因此我们需要一种规范的方式将不再需要的资源返回系统,以避免资源泄漏。最常见的资源就是内存。当一个类创建对象时,会使用构造函数来对数据进行初始化,获取相应的内存空间。在Java中我们无需担心内存空间的回收,因为Java实现了内存无用单元的自动回收。但是其他资源仍然会发生泄漏。因此在每个类中,构造一个终止函数(finalizer),来将资源返回给系统。并且每个类中只能有一个finali

2013-06-27 09:30:00 416

转载 this 关键字的几种用法

1.     当成员变量和局部变量重名时,在方法中使用this时,表示的是该方法所在类中的成员变量。(this是当前对象自己)如:public class Hello {    String s = "Hello";     public Hello(String s) {       System.out.println("s = " + s);       Syst

2013-06-26 22:08:25 420

原创 面向对象

Java中,编程的单元是类,最终从类中实例化对象。而数据(属性)和方法(行为)都被封装到对象中。在向方法传递对象时,是传递对象的引用。(按引用调用)对象之间是信息隐藏的,互相通信通过接口。信息隐藏增进了程序的可修改性,简化了客户对类的理解。类中一般实例变量声明为private,而方法声明为public。当然private方法也是有的,一般称为实用方法或帮助方法,由该类中的其

2013-06-26 17:55:42 360

原创 修饰符

当创建一个对象后,该对象可以访问本类或其他类中的变量,并使用类中的方法。但是这种访问是有一定的限制的,在Java中通过修饰符private, public, protected, friendly来说明使用权限。1. private关键字private修饰的变量和方法称为私有变量和私有方法。私有变量和私有方法只能在本类中创建该类的对象时,这个对象才能访问和使用。声明为pri

2013-06-26 15:30:39 333

原创 数组排序——快速排序

基本思想:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分所有数据都比另一部分的所有数据要小,然后再按此方法对这两部分分别进行快速排序,递归进行,直到数列成为有序序列。每一趟快速排序算法步骤:Partition( A, p, q)1. 设置两个变量i, j,排序开始的时候:i = p, j = p+1;2. 第一个数组元素作为关键数据,赋值给key,即key=A[p

2013-06-25 21:34:13 465

原创 数组排序——归并排序

把待排序序列分成若干个子序列,每个子序列都是有序的,然后再把有序子序列合并成为整体有序序列。算法描述:分治法A[1, ..., n]归并排序1. 如果n = 1,则排序完成。2. 否则递归排序 A[1, ..., n/2] 和 A[ n/2, .., n]3. 把两个序列合并时间复制度:O(nlogn)比较占用内存,但却效率高且稳定程序如下:

2013-06-25 20:30:28 362

原创 数组排序——插入排序

将n个元素的数列分为有序和无序两个部分。每次处理就是将无序数列的第一个元素与有序数列的元素从后往前逐个进行比较,找出插入的位置,将该元素插入。时间复杂度:O(n^2)插入排序是稳定的。程序如下:// Insertion sort programimport java.io.IOException;public class InsertionSort { publi

2013-06-25 16:51:22 420

原创 数组排序——选择排序

每一趟从数列中选出最小的一个元素,顺序放在已排好序的数列的最后,直到全部元素排完。1. 第1趟排序在无序的数列中找出最小的,记录为a[k],将其与第1个a[1]交换。同时整个数列分成两部分,有序区a[1..1]和无序区a[2..n].2. 第i趟排序此时有序区和无序区分别为a[1,...,i-1]和a[i,.., n]。在无序区选出最小数记录为a[k],并将它与无序区第一个a[i]

2013-06-25 14:33:38 329

原创 数组查找

查找:找出数组中特定元素的过程。线性查找利用查找关键值与每一个数组元素进行比较。由于元素的排列是随机的,其概率是均匀分布的,因此程序必须同数组的一半元素进行比较。线性查找适用于小数组或未排序的数组。example:// Linear search programimport java.applet.Applet;import java.awt.Event;

2013-06-25 13:18:05 394

原创 数组排序——冒泡排序

冒泡排序本质:较小的值会逐渐冒泡至数组的顶端,同时较大的数会下沉到低端。算法如下:1、比较相邻的两个元素,如果第一个比第二个大,则交换位置。2、针对所有元素重复以上的步骤,除了最后一个。3、重复以上步骤遍历数组,直到没有任何一个数字需要比较。时间复杂度为O(n^2) 比较慢稳定排序算法程序如下// Bubble sortimport java.io.IO

2013-06-25 12:17:50 471

原创 引用

两种传递参数的方法:按值调用和按引用调用按值调用产生该参数值的一个副本,并将其传递给被调用的方法。由于传递的是副本,因此改变这个值不会影响到原参数的值。按引用调用传入的参数在物理上是相同的,因为两个引用指向的是堆中的同一个对象。调用者赋予被调用的方法直接访问调用者数据的能力,还可以修改此数据。由于不需要复制大量数据,因此能够提高程序性能,但由于被调用方法

2013-06-25 10:53:00 310

原创 数组

数组是包含相同类型的相关数据项的数据结构。一个数组是一组连续的存储单元,其每个成员均有相同的名称和类型。数组是静态的实例,其创建后的大小将保持不变。数组 = 数组名 + 元素的位置序号  ex: c[ i ]元素位置的计数从0开始赋值语句:c[2] = 12;数组的长度:c.length声明:int c[ ] = new int[ 12 ];为数组分配空间以后,其元素将

2013-06-25 10:35:36 437

原创 电脑重生了

周六下午手贱点了个系统update,晚上回来后,就一直处于无法开机的状态。屏幕停留在了开机前的最后画面,两行字:配置service pack失败,还原更改,请勿关闭电脑,默默地看了两个小时后,意识到也许出问题了。于是开始用手机搜如何解决。大多数给的回应是重装系统,想到这个实在太麻烦,自动跳过了这个方法。于是把其他方法逐个尝试了下。方法一:强制重新开机。无果。依旧停在了那个画面。方法二:

2013-06-25 09:17:56 495

原创 堆和栈

堆和栈都是Java用来在内存中存放数据的地方。堆类的实例化对象都是在堆上分配内存空间的,通过new指令实现。String str = new String( "abc" );Java中,堆的释放是由垃圾回收机制来负责处理。垃圾收集器会自动回收不再使用的内存空间。在运行时,堆是动态分配内存空间的,所以内存存取速度比较慢。栈栈中主要存放一些基本数据类型。栈有一个

2013-06-21 16:55:45 340

原创 方法重载与方法重写

方法重载:方法名相同,但是具有不同的参数集合(参数个数,参数类型和参数的顺序)。通常用于创建完成任务相似,但又不同数据类型的几个同名方法。调用时,根据参数个数,类型和顺序来选择合适的方法。方法不能由返回类型进行区分,即返回值类型可以相同也可以不同。方法重载就是让类以统一的方式处理不同类型数据的一种手段。是类的多态性的一种表现。example:// Method overloadin

2013-06-21 15:24:37 386

原创 递归与迭代

当调用递归方法来解决问题时,该方法实际上只知道如何解决最简单的情况,即基本情况。递归调用就是将不知道如何处理的部分模拟成原始问题,于是便可以调用自己的新副本来解决问题,一系列越来越小的问题最终会成为基本情况。该方法识别了基本情况后,向方法的前一个副本返回一个值,经过一系列的返回,直到原始方法向调用者返回最终的的值为止。常见错误:忽略了基本情况,或者不正确地编写了递归步骤而未包含基本

2013-06-21 14:09:04 475

原创 淘宝技术部电话面试

昨天接到了淘宝技术部的电话面试通知,因为人在外面,于是约了今天10点进行(淘宝还真是人性化,还可以自行约时间)。一早起来准备了下自我介绍,然后看看书等着被审讯。10点手机准时响起,对面响起一个温柔的男声。这就是面试我的人,他做了简单的自我介绍后,就正式进入面试。整个过程持续了35分钟,起先比较紧张,特别是在我介绍的时候,心跳突然加快。接着是一阵阵的心虚,问到一些技术面的问题,好多只能弱弱的回答

2013-06-20 10:56:12 2178

原创 变量的生存期和作用域

标识符除了有名字,类型,存储大小和值等属性外,还有其他属性,如生存期和作用域。生存期:决定了它在内存中的存在周期。自动变量——自动生存期变量,一个方法中的局部变量。在进入到声明它们的块是创建,当该块活动时存在,当退出该块时将其删除。实例变量,如果没有提供初始值,编译器对其自动初始化。而自动变量必须由程序员初始化。静态变量——静态生存期变量,变量前加了static。当把它

2013-06-19 23:15:20 739

原创 Craps

今天参考书里的例子,动手写了一个Craps的小程序。就是掷骰子游戏。投掷两个骰子,计算点数和。如果第一次掷出了7和11,则赢了。如果第一次掷出2,3,12,则输了。第一次掷出了其他的点数,则该点数将做为接下来需要投掷的目标点数。接下来可以不停地投掷,直到投到了目标点数则赢,如果接下来任何一次投到了7,则输了。具体代码如下://Crapsimport java.applet.Applet;im

2013-06-19 22:45:56 590

原创 随机数

double randomValue = Math.random();可用 Math 类中的 random 方法来产生一个0.0到1.0的 随机数比例缩放——使用乘法运算符(*)与random 一起ex:n = a + ( int ) ( Math.random() * b )其中,a是位移值(期望的连续整数范围的第一个数值),b是比例因子(期望的连续整数的宽度)。

2013-06-19 11:37:41 449

原创 方法

开发和维护一个大型程序的最佳办法,是使用那些比原始程序更易于管理的小段程序和,模块来构造程序。分而治之,各个击破。Java中的模块成为方法(method)和类(class)。通过编写方法来定义特定任务,定义方法的语句对其他方法是隐藏的。通过方法调用来激活方法。方法——允许程序员模块化一个程序,其中声明的所有变量均为局部变量。所有方法必须在一个类的定义中进行定义。一个

2013-06-18 23:17:47 327

原创 控制结构(二)

while 循环结构while ( condition )statement;for循环结构for ( expression1; expression2; expression3 )statement;expression1:初始化循环控制变量, 控制变量只能在for结构内部使用expression2:循环条件expression3:增加控制变量的值三个

2013-06-18 17:02:20 386

原创 Scanner

一开始的小程序只需要获取一个字符,于是用System.in.read() 来取得便可以了。但在今天写一个测试回文小程序中,需要获取输入一个整数,于是上网找了下相关方法。Scanner这个类在这方面非常好用。java.util.ScannerScanner extends Object一个可以使用正则表达式来解析基本类型和字符串的简单文本扫描器。从 System,in 中读取一个

2013-06-17 22:27:58 342

原创 控制结构(一)

任何可计算性问题的解决过程,都可以转化为按指定顺序执行的一系列操作过程。算法——一种解决问题的过程,可分为两部分1. 可执行的操作2. 执行操作的顺序伪代码——帮助程序员开发算法的人工非正式语言在程序设计过程中,通常先用伪代码走“设想”程序,然后再将伪代码转换成Java程序。流程图——代表整个算法或部分算法的图形有助于开发和表示算法椭圆符号:

2013-06-17 21:26:02 461

原创 Java Second Day

Java程序中的每一个数据都可以看做一个对象,但是由原始数据类型定义的变量除外。只有类的对象必须用动态方式(new)申请空间,原始类型的变量由Java自动分配空间。一个变量或引用的名称可以是任何有效的标识符。标识符:包含字母,数字,下划线,以及美元符号,并且不以数字开头。在方法使用之前定义变量,在方法中定义的变量无法由其他方法直接使用。变量——对应于计算机内存的某一位置

2013-06-16 23:42:55 442

原创 Java First program

//A first program in Java                                      每个程序由一个表明本程序用途的注释开始import java.applet.Applet;                                   import语句用来载入编译一个Java程序所需要的类import java.awt.Graphi

2013-06-15 11:03:04 389

北京Java私塾Java基础入门教程

北京Java私塾Java基础入门教程 包括课件PDF 在线视频地址 视频下载地址

2011-10-19

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除