Java
文章平均质量分 61
qq1712088151
这个作者很懒,什么都没留下…
展开
-
创建数组
语法: = new [];或 = new []{};说明::任何合法的标识符。它代表所声明属性的名称。:可以是任何原始类型(基本类型)或其它类(引用类型)。: 一个整数值,数组的大小用来指示单个数组元素的下标必须总是从0开始,并保持在合法范围之内--大于或等于0,并小于数组长度。任何访问在上述界限之外的数组元素的企图都会引起运行时出错。public int[]原创 2012-03-05 15:14:05 · 564 阅读 · 0 评论 -
多维数组
Java编程语言没有象其它语言那样提供多维数组。因为一个数组可被声明为具有任何基础类型,所以你可以创建数组的数组(和数组的数组的数组,等等)。一个二维数组(JAVA中没有二维数组的概念,二维数组其实就是数组的数组)如下例所示:int twoDim [][] = new int [4][];twoDim[0] = new int[5];twoDim[1] = new int[5];原创 2012-03-05 15:18:57 · 225 阅读 · 0 评论 -
数组界限
在Java编程语言中,所有数组的下标都从0开始。 一个数组中元素的数量存储在length属性中; 这个值被用来检查所有运行时访问的界限。如果发生了一个越出界限的访问,那么运行时的报错也就出现了。使用length属性的例子如下:int list [ ] = new int [10];for (int i= 0; iSystem.out.println(list[i]);}使用原创 2012-03-05 15:23:21 · 501 阅读 · 0 评论 -
单继承(single inheritance)
在面向对象一章中我们学习了OO的特征之一:继承,我们已知,任何面向对象的语言必然实现了继承这一特性,java也不例外,但是,我们应该注意的是,java和某些面向对象语言(如c++)在实现继承的不同之处在于java只支持单继承,不支持多重继承。即,java中一个类只能继承于另一个类。我们将被继承的类称之为父类(基类),继承类称之为子类(派生类)。在java中用关键字extends来实现单继承,语原创 2012-03-05 15:30:39 · 445 阅读 · 0 评论 -
拷贝数组
数组一旦创建后,其大小不可调整。然而,你可使用相同的引用变量来引用一个全新的数组:int myArray [ ] = new int [6];myArray = new int [10];在这种情况下,第一个数组被丢弃,除非对它的其它引用保留在其它地方。Java编程语言在System类中提供了一种特殊方法拷贝数组,该方法被称作arraycopy()。例如,araycopy可作如下使原创 2012-03-05 15:26:32 · 335 阅读 · 0 评论 -
访问控制
Java视频教程在java中是通过各种访问区分符来实现数据封装的,共分为四种访问级别(由高到低):private(私有)、friendly(缺省)、protected(受保护)、public(公共)。注意:以上四种访问修饰符可以作用于任何变量和方法,类只可以定义为私有或公共级别(嵌套类除外)。¨ public(公共)当变量或方法被public修饰时,该变量和方法可以在任何地原创 2012-03-05 16:06:26 · 298 阅读 · 0 评论 -
方法重载(method overloading)
Java视频教程成员方法重载学习重载之前,我们来了解一下在java中方法的特征。在java中,每一个方法都有自己的特征,其特征主要是指方法名以及方法的参数。void method1(){}void method2(){}method1()和method2()可以被理解为是两个方法名不同的方法,即方法的特征不一致。void method1(int x){}void原创 2012-03-05 16:20:00 · 2849 阅读 · 0 评论 -
构造方法重载
如果有一个类带有几个构造函数,那么也许会想复制其中一个构造函数的某些功能到另一个构造函数中。可以通过使用关键字this作为一个方法调用来达到这个目的。public class Employee { private String name; private int salary; public Employee(String n, int s) { name = n; sala原创 2012-03-05 16:22:25 · 514 阅读 · 0 评论 -
方法覆盖(method overriding)
覆盖是基于继承的,没有继承就没有覆盖。在java中,覆盖的实现是在子类中对从父类中继承过来的非私有方法的内容进行修改的一个动作(注意:不能违反访问级别的限制)。下面我们来分析一个例子:class A {public void method() {System.out.println("SuperClass method()");}}class B extends A {原创 2012-03-05 16:26:43 · 1007 阅读 · 0 评论 -
基于继承的多态实现
多态:一个名字可以表示许多不同类(这些不同类必须拥有一个共同的超类)的对象,从而实现以不同的方式来响应某个共同的操作集。在java中,名字指的就是变量名,我们可以认为每个对象都有一个名字---引用该对象的变量名。比如String str = "abcd";我们就称之为对象str。因此,在java中的多态就体现在一个变量可以引用多个不同类对象,前提是这些不同类必须有者共同的父类,从而该变量可以且原创 2012-03-05 16:36:12 · 598 阅读 · 0 评论 -
隐藏(hiding)
通过上面的学习,我们发现,父类的私有方法对于子类来说是不可见的,注意,不可见!=没有,子类仍旧继承了父类所有的成员,那么这些私有的父类成员去哪了?实际上,它们都被隐藏,对子类来说,这些父类的私有成员都被隐藏了起来,从而导致子类中的不可见。分析以下例题:class A { private void method(String str, int i) { System.out.pri原创 2012-03-05 16:41:49 · 877 阅读 · 1 评论 -
== 与 equals()
在java中,==与equals()都是用来比较引用,只是==即可以比较基本类型,也可以比较对象,而equals()则只能在对象之间进行引用比较。先来了解一下==运算符,分析一下语句执行结果:int num1 = 10;int num2 = 10;System.out.println(num1 == num2); //打印trueString str1 = new Strin原创 2012-03-05 16:49:59 · 430 阅读 · 0 评论 -
super关键字
构造方法不能被继承,因此,在子类中调用父类构造方法只能通过super关键字来实现。super可以理解为父类在子类中的一个对象,我们可以象使用父类对象一样使用子类对象。例:class A { A() { System.out.println("A()"); }}class B extends A { B() { super(); // 调用父类A的构造方法,打印"A()"原创 2012-03-05 16:44:27 · 230 阅读 · 0 评论 -
公共异常
Java编程语言提供几种预定义的异常。下面是可能遇到的更具共同性的异常中的几种:ArithmeticException:整数被0除,运算得出的结果。int i = 12 / 0;NullPointerException:当对象没被实例化时,访问对象的属性或方法的尝试:Date d = null;System.out.println(d.toString());Negativ原创 2012-03-07 09:59:30 · 465 阅读 · 0 评论 -
自定义异常
用户定义异常是通过扩展Exception类来创建的。这种异常类可以包含一个"普通"类所包含的任何东西。下面就是一个用户定义异常类例子,它包含一个构造函数、几个变量以及方法请看下例:class TestMyException { public static void main(String[] args) { ABC abc = new ABD();// ABD 是 ABC的子类原创 2012-03-07 10:01:26 · 324 阅读 · 0 评论 -
方法覆盖和异常
方法覆盖要注意两点:n 访问权限不能比父类的弱n 抛出的异常不能比父类的多。(注意多并不是数量上的多,而是父类方法抛出的异常必须包含子类覆盖方法抛出的异常)请看下例:class TestMyException2 { public static void main(String[] args) { ABC abc = new ABD(); try { abc.a(5)原创 2012-03-07 10:03:18 · 597 阅读 · 0 评论 -
包装类
对于每一个java基本数据类型,java都提供了对应的包装类,如:Boolean、Character、Integer、Double等8种包装类。在java中,包装类主要是用于将基本数据类型与对象之间进行联结。int num = 10;String str = (String)num;当执行第二条语句时,就会产生转换异常,因为我们在将一个非对象类型转换成一个对象类型!问题就是原创 2012-03-05 16:47:44 · 293 阅读 · 0 评论 -
构造方法在继承中的使用
分析例题:class A {A() {System.out.println("A()");}}class B extends A {B() {System.out.println("B()");}public static void main(String[] args) {new B();}}执行结果为分别打印:A()B()分析原创 2012-03-05 16:42:40 · 401 阅读 · 0 评论 -
toString( )方法
toString方法被用来将一个对象转换成String表达式。当自动字符串转换发生时,它被用作编译程序的参照。例如:Date now = new Date()System.out.println(now)将被翻译成:System.out.println(now.toString());对象类定义缺省的toString()方法,它返回类名称和它的引用的地址(通常情况下不是很有用)原创 2012-03-05 16:51:11 · 310 阅读 · 0 评论 -
异常的概念
在Java编程语言中,异常类定义程序中可能遇到的轻微的错误条件。你可以写代码来处理异常,并继续执行程序,而不需要让程序中止。在程序执行中,任何中断正常程序流程的条件都是异常。例如,发生下列情况时,会出现异常:想打开的文件不存在网络连接中断操作数超出预定范围非常感兴趣地正在装载的类文件丢失在Java编程语言中,错误类定义被认为是不能恢复的严重错误条件。在大多数情况下,当遇到这原创 2012-03-07 09:53:51 · 269 阅读 · 0 评论 -
异常的分类
在Java编程语言中,异常有三种分类。java.lang.Throwable类充当所有对象的父类,可以使用异常处理机制将这些对象抛出并捕获。在Throwable类中定义方法来检索与异常相关的错误信息,并打印显示异常发生的栈跟踪信息。它有Error和Exception两个基本子类。Throwable类不能使用,而使用子类异常中的一个来描述任何特殊异常。每个异常的目的描述如图:能指望程原创 2012-03-07 09:55:27 · 427 阅读 · 0 评论 -
XML
XML,称为可扩展标记语言(Extensible Markup Language),用来创建自定义标记的标记语言。它由万维网协会(W3C)创建,用来克服 HTML(即超文本标记语言(Hypertext Markup Language),它是所有网页的基础)的局限。和 HTML 一样,XML 基于 SGML ― 标准通用标记语言(Standard Generalized Markup Languag原创 2012-03-24 09:33:45 · 321 阅读 · 0 评论 -
定义XML文档
有三个通用术语用来描述XML文档的组成部分:标记,元素和属性。n 标记是左尖括号()之间的文本。有开始标记(例如:)和结束标记(例如:)。n 元素是开始标记,结束标记以及位于二者之间的所有内容。在上面的样本中,元素包含四个子元素,,,.n 属性是一个元素的开始标记中的名称-值对。如:80 danwei 是元素的属性。定义XML基本语法要求:n XML文档必须包含在一个单一元原创 2012-03-24 09:34:49 · 350 阅读 · 0 评论 -
命名空间(Naming Space)
命名空间(Naming Space)XML 命名空间提供了一种避免元素命名冲突的方法。命名冲突因为XML文档中使用的元素不是固定的,那么两个不同的XML文档使用同一个名字来描述不同类型的元素的情况就可能发生。而这种情况又往往会导致命名冲突。请看下面两个例子这个 XML 文档在table元素中携带了水果的信息:table>tr>td>Applestd>td>Banan原创 2012-03-24 09:46:22 · 365 阅读 · 0 评论 -
XML Schema
上面我们讨论了用DTD来验证XML文档,虽然DTD胜任对XML文档结构的验证,但是它有很多局限。为此,微软提出了Schema的方案来改进DTD。Schema从字面意义上来说,可以翻译成架构,它的基本意思是为XML文档制定一种模式。Schema相对于DTD的明显好处是XML Schema文档本身也是XML文档,而不是像DTD一样使用自成一体的语法。这就方便了用户和开发者,因为可以使用相同的工具来处理原创 2012-03-24 09:54:07 · 453 阅读 · 0 评论 -
程序交互的几种方式
程序在运行的时候,我们要给程序输入数据,程序根据输入的数据作出响应。常见的输入方式有:n 命令行参数n 系统属性n 标准的输入n 在程序中实现文件的创建,读,写Math类是用来支持数学计算的,它打包在java.lang包中,包含一组静态方法和两个常数,是终态(final)的,它不能被实例化。它主要包括下列方法:分割 int ceil(double d):返回不小于d原创 2012-03-08 11:23:39 · 836 阅读 · 0 评论 -
String的方法
String concat(String s):返回一个新的String,即,在原来的String后面追加上s。String replace(String old, String new):返回一个新的String,将原来的String中的old替换成new。String substring(int start, int end):返回一个新的String,它是原来的String中从sta原创 2012-03-08 11:24:49 · 351 阅读 · 0 评论 -
集合类的使用
收集收集(或容器)是代表一个对象组的单个对象,其它对象被认为是它的元素。收集用于处理多种类型对象的问题,所有的类型都有一个特殊的种类(也就是说,它们都是从一个共同父类继承来的)。Java编程语言支持收集类Vector,Bits, Stack,Hashtable ,LinkedList等等。例如,Stack实现后进先出(LIFO)的顺序,Hashtable提供一个相关的对象数组。收集可用于保原创 2012-03-08 11:32:47 · 837 阅读 · 2 评论 -
StringBuffer与String的区别
主要是效率上的区别。它们都可以表示一个字符串对象,只不过String类型的字符串对象,只要值改变,存储的空间也会改变,而StringBuffer是在原来的空间上进行修改的。所以要进行大量的字符串操作,要用StringBuffer.而如果不是频繁操作字符串对象,两者都可以,只不过String 更方便些,因为用两个双引号就可以表示一个Sting对象。www.rjpx.net原创 2012-03-08 11:25:38 · 349 阅读 · 0 评论 -
List 容器
问题的描述:List 容器的使用解决方案:在下面的例题中,程序声明了一个Collections API的List 型对象,并且用它的子类ArrayList初始化它。然后向List中添加元素,打印结果。 注意:List允许重复的元素。请看下例:import java.util.*;class TestList { public static void main(S原创 2012-03-08 11:34:20 · 302 阅读 · 0 评论 -
迭代器
问题的描述:迭代器的用法解决方案:请看下例:可以用迭代扫描一个集合。基本的Iterator接口可以向前扫描任何集合。对于一个Set来说,它的迭代是没有顺序的。对于一个List来说,它的迭代的顺序与List中元素的顺序相同,只能向前,不能后退。此外,List对象还支持ListIterator接口,允许迭代向后移动。示例:import java.util.*;public原创 2012-03-08 11:37:06 · 415 阅读 · 0 评论 -
排序
问题的描述:排序的用法解决方案:对于复杂的应用,尤其是生成报表时,排序是一种必不可少的基本操作。在Java 2 Collections API中,已经实现了几种排序。给数组排序可以使用Arrays对象的一套sort方法。对于boolean以外的基本类型,Arrays.sort有两种变化:Arrays.sort( array[])用来为整个数组排序。Arrays.sor原创 2012-03-08 11:41:10 · 299 阅读 · 0 评论 -
映射(Maps)
问题的描述:映射(Maps)的用法解决方案: 映射这种数据结构含有两个部分:关键字和值。对于每个关键字都有一个值,也就是说,一个关键字映射一个值。映射允许通过关键字访问数据结构。Java 在Collections API的Map接口中声明了一对一的映射。当向映射中插入一对关键字和值时,如果出现关键字重用,则用新值替换映射中原有的值,不在映射中增加一个元素。请看下例:impo原创 2012-03-08 11:38:51 · 424 阅读 · 0 评论 -
GUI概述及组成
Java1.0刚出现时,包含一个用于基本GUI编程的类库,Sun把它叫做抽象窗口工具箱(Abstract Window Toolkit,AWT)。AWT库处理用户界面元素的方法是把这些元素的创建及其行为委托给每个目标平台(Windows,Solaris,Macintosh等)的本地GUI工具进行处理。不同平台的AWT用户界面存在着不同的bug。程序员们必须在每一个平台上测试他们的应用程序,他们因此原创 2012-03-09 11:50:51 · 2762 阅读 · 0 评论 -
线程中断/恢复的几种方式
Ø 该线程调用Thread.sleep() 进入中断状态必须经过规定的毫秒数才能从中断状态进入可运行状态Ø 该线程进行了IO操作 而进入中断状态必须等待IO操作完成,才能 进入可运行状态Ø 该线程调用了其它线程的join()方法,而使自己进入中断状态必须等待调用的线程执行完,才能进入可运行状态Ø 该线程试图访问被另一个线程锁住的对象 而进入中断状态必须等待另一个线程释放对象锁,该线程才原创 2012-03-10 11:06:29 · 2583 阅读 · 0 评论 -
布局管理器
由Swing开发的GUI界面通常由两种组件构成:n 容器组件:用于管理其他界面组件的组件,例如:JFrame,JPanel等。n 元素组件:用于构成各种用户界面的组件,例如:JLabel,JTextField等。容器中组件出现的位置和组件的大小通常由布局管理器控制。每个Container(比如一个JPanel或一个JFrame)都有一个缺省布局管理器,它可以通过调用setLayout(原创 2012-03-09 11:55:19 · 451 阅读 · 0 评论 -
FlowLayout
前面所用的FlowLayout布局管理器对组件逐行地定位。每完成一行,一个新行便又开始。与其它布局管理器不一样,FlowLayout布局管理器不限制它所管理的组件的大小,而是允许它们有自己的最佳大小。Flow布局构造函数参数允许将组件左对齐或右对齐(缺省为居中)。如果想在组件之间创建一个更大的最小间隔,可以规定一个界限。当用户对由Flow布局管理的区域进行缩放时,布局就发生变化原创 2012-03-09 11:57:46 · 1765 阅读 · 0 评论 -
BorderLayout
BorderLayout布局管理器为在一个Panel或Window中放置组件提供一个更复杂的方案。BorderLayout布局管理器包括五个明显的区域:东、南、西、北、中。北占据面板的上方,东占据面板的右侧,等等。中间区域是在东、南、西、北都填满后剩下的区域。当窗口垂直延伸时,东、西、中区域也延伸;而当窗口水平延伸时,东、西、中区域也延伸。BorderLayout布局管理器原创 2012-03-09 12:00:56 · 4147 阅读 · 0 评论 -
创建线程的两种方式(实现接口的方式请看实例分析5)
Ø 实现Runnable接口Ø 继承Thread类实现Runnable的优点从面向对象的角度来看,Thread类是一个虚拟处理机的严格封装,因此只有当处理机模型修改或扩展时,才应该继承类。由于Java技术只允许单一继承,所以如果你已经继承了Thread,你就不能再继承其它任何类。继承Thread的优点当一个run()方法体出现在继承Thread的类中,用this指向实际控制原创 2012-03-10 11:07:20 · 398 阅读 · 0 评论 -
线程的基本控制
终止一个线程:当一个线程结束运行并终止时,它就不能再运行了。可以用一个标志来指示run()方法,必须退出一个线程。public class Runner implements Runnable {private boolean timeToQuit = false; //终止标志public void run() { while(! timeToQuit) { //当结束条件为原创 2012-03-10 11:09:09 · 390 阅读 · 0 评论