06 2012 档案

摘要:Java使用两种方式进行参数的传递:1、值传递:即对参数的值进行复制,对复制后的副本进行传递。(这类传递针对基础型数据)2、引用传递: 又称地址传递,即传递的是参数的地址,而非参数值的一个副本。(String对象、类对象、数组对象、接口对象使用的都是这种方式)从两者的机制中可以发现:使用值传递时,函数的内部操作并不会改变原来其参数的实际值,因为函数内部操作的只是其的一个副本,并未操作参数的实际值。使用引用传递时,函数的内部操作会改变作为参数的对象的实际值,因为引用传递的是对象的实际地址,即使对象的实际值发生了变化。!十分注意,Java中String类对象也使用的是引用传递方式,但是其由于实现机 阅读全文
posted @ 2012-06-28 11:48 airforce 阅读(2336) 评论(0) 推荐(0)
摘要:Java中允许对异常进行再次抛出,以提交给上一层进行处理,最为明显的例子为Java的常规异常。常规异常:有Java所定义的异常,不需要异常声明,在未被try-catch的情况下,会被默认上报到main()方法。Example:public class TestException { TestException(int i) throws ExceptionA,ExceptionB{ int a[]={0,}; a[1]=1; }}当从main()方法中调用TestException类的构造函数的时候,会得到以下的异常提示,从中可以看出异常的冒泡机制(这是一个栈信息)。异常的冒泡上传机制:当一. 阅读全文
posted @ 2012-06-26 17:56 airforce 阅读(7744) 评论(0) 推荐(0)
摘要:为了应对运行期间可能出现的错误,提高程序的的稳健性,Java中定义了强大的异常处理机制。Java的异常机制在增强程序稳健性的同时(围绕异常声明,在编译期间就具有严格的异常制度),增强了业务代码的逻辑性和连贯性(通过try-catch,避免了C等语言下的业务逻辑代码和异常检测代码严重混合)。异常声明:Java要求能抛出异常的方法必须加上异常声明(该些异常未被处理,且非Java中定义的标准异常)。Example: 1 package demo; 2 import static net.mindview.util.Print.*; 3 4 public class TestException { . 阅读全文
posted @ 2012-06-26 16:14 airforce 阅读(2546) 评论(0) 推荐(0)
摘要:由于Java中数据容器众多,而对数据容器的操作在很多时候都具有极大的共性,于是Java采用了迭代器为各种容器提供公共的操作接口。使用Java的迭代器iterator可以使得对容器的遍历操作完全与其底层相隔离,可以到达极好的解耦效果。public interface Iterable<T> Iterator<T>iterator()Returns an iterator over a set of elements of type TCollection接口拓展了接口Iterable,根据以上的对Iterable接口的定义可以发现,其要求实现其的类都提供一个返回迭代器It 阅读全文
posted @ 2012-06-25 10:34 airforce 阅读(41539) 评论(0) 推荐(5)
摘要:为了方便的对Array对象、Collection对象进行操作,Java中提供了Arrays类和Collections类对其进行操作。其中Arrays和Collections中所有的方法都为静态的,以方便直接传入对象引用,执行相应的功能。十分常用的方法有:Arrays.asList(数组对象) //此静态方法用于将Array转化为List类型对象。常常用于List类型对象的初始化中。Collection.addAll(Collection对象,数组对象或可变参数列表 ) //次静态方法用于向一个已经存在的Collection中拼接数据Example:Collection<String> 阅读全文
posted @ 2012-06-24 22:39 airforce 阅读(7251) 评论(1) 推荐(0)
摘要:在书写程序的时候,我们常常需要对大量的对象引用进行管理。为了实现有效的归类管理,我们常常将同类的引用放置在同一数据容器中。由于数据容器中存放了我们随时可能需要使用到的对象引用,所以一般的数据容器要都要能能提供方便的查询、遍历、修改等基本接口功能。早期的OOP语言都通过数组的方式来实现对引用集的集中管理和维护。但是数组方式下,数组大小需要提前被确定,并不允许修改大小,导致其作为一种灵活的数据容器的能力的功能大为下降。为了方便的利用数据容器进行引用的管理,Java中提供了丰富的数据容器以满足程序员多样化的需求。JAVA的容器---List,Map,SetCollection├List│├Linke 阅读全文
posted @ 2012-06-24 17:45 airforce 阅读(46542) 评论(2) 推荐(1)
摘要:Java中的内部类虽然在状态信息上与其外围类在状态信息是完全独立的(可直接通过内部类实例执行其功能),但是外围类对象却是内部类对象得以存在的基础。内部类对象生成的时候,必须要保证其能够有外围类对象进行挂靠(hook),从而java提供了严格的内部类对象生成的语法。一般惯用两种方法,生成内部类对象。Method1: 使用 外围类实例.new 内部类名称() 的标准方法。Example 1:public class Outer{ int no; class Inner implents InterfaceA{}}interface InterfaceA{}main(){Outer insta... 阅读全文
posted @ 2012-06-24 10:17 airforce 阅读(10796) 评论(1) 推荐(1)
摘要:Java中提供了定义内部类的选择,这一机制使得代码的书写更为方便和优雅(功能上相关的代码被紧密的组织在了一起)。需要注意的是,内部类和传统的组合(即将一个类的实体定义为另一个类的成员)是完全不同的,其主要特性表现在以下的一些方面:1、外围类的实例并不一定具有内部类的实例,除非显示的将内部类的实例定义为外围类的数据成员。public class Outer{ int no; public class Inner{}}这里类inner为类outer的内部类,但是在类outer内部只定义了inner类,并没有将其作为outer一定要具有的成员。Example:Outer instanceA= ... 阅读全文
posted @ 2012-06-24 09:48 airforce 阅读(994) 评论(0) 推荐(0)
摘要:Java提供了public, private, protected 三个访问权限修饰词,提供了以下四种访问权限控制机制:1、包访问权限;2、Public访问权限;3、Private访问权限;4、Protected访问权限;1、包访问权限包访问权限是Java为了便于程序员开发而给定的一种权限选择。当方法或域未给定访问权限限制符时,其默认具有该权限。具有该权限的方法和域成员,在包内是完全可见的(注意要与其对象依附在一起),而包外则不可见。这有点类似于C++中友元类,友元类见彼此可见,以简化访问。E:Package accesscontrol//Animal.javapublic class Ani 阅读全文
posted @ 2012-06-19 10:39 airforce 阅读(4663) 评论(0) 推荐(0)
摘要:可变参数列表是JavaSE5以后所添加的一个重要特性,它使得程序员可以用更少的代码书写出优雅的方法访问方式。可变参数列表将大量的工作交给了编译器完成,包括参数数组的封包,自动转型等任务。在可变参数列表功能出现以前,函数的调用格式,必须与函数的声明格式完全对应一致。即对应位置的参数,必须满足类型要求。Example:static double addAll(Ball[] ballArray ){ double totalDiameter=0; foreach(ball b:ballArray ) { totalDiameter=b.diameter+totalDiameter; ... 阅读全文
posted @ 2012-06-18 10:52 airforce 阅读(205) 评论(0) 推荐(0)
摘要:Java编译器在初始化对象的时候,为同一类型(即同一类)的对象在栈区存储了函数副本(即使对static方法也是如此)。为了区别不同对象,新对象生成时,会由编译器生成一个引用变量进行指向。该引用变量指向堆区中存储具体对象域属性值的内存区域,即同属一类的对象,共享其类定义的函数。既然函数为公用的,那么当同一方法被不同对象调用的时候,如何正确的区别调用此方法的对象以产生正确的行为呢?Example:class Test{ int num; Test(int i) {num=i;} print() {System.out.printl(num);}}main(){ Test t1=t1(1); T.. 阅读全文
posted @ 2012-06-18 09:50 airforce 阅读(889) 评论(0) 推荐(0)
摘要:方法重载存在的必要性可以从类需要多样的构造器处得到一定的合理解释。方法的重载为灵活的编写程序,带来了极大的好处!(一定要将方法的重载与方法的覆盖区别开来)重载:为了表述同一行为目的的方法名,具有不同的行为方式。覆盖:发生在继承中,导出类具有与父类具有相同方法名和参数列表的方法,以实现对父类方法的屏蔽和覆盖。(可以通过final 关键字防止覆盖现象的发生)Example:class parent{ run(){}}class child extends parent(){ run(){}}此例子中,导出类child即实现了对基类parent中run()方法的覆盖。重载的方法具有相同的方法名,.. 阅读全文
posted @ 2012-06-13 22:03 airforce 阅读(417) 评论(0) 推荐(0)
摘要:无论是Java和C#都要求对象在建立时,其Field成员能够被初始化,于是一个对象在建立的时候需要调用其构造器(初始化方法)。构造器的格式,example:class Bread{ String taste; Bread() //构造器 { //Initialization }}构造器的标准格式要求构造方法必须与类名一致,不能有返回值类型标识(void也不行)。当生成一个新对象时:首先为对象分配存储空间,然后调用构造器来对域成员进行初始化。new Bread(),即生成一个新对象时,其构造器是被自动的调用的。当类中未显示的给出构造器时,编译器会调用默认的构造器完成域的初始化操作。... 阅读全文
posted @ 2012-06-13 21:27 airforce 阅读(735) 评论(0) 推荐(0)
摘要:MyEclipse中的程序调试与visualstudio 2010相比,稍显麻烦。MyEclipse中调试程序需要将当前工作叶跳转到含有main函数的,按下F11键,如果程序运行中中存在错误(比如越界访问内存元素),会自动停止到此时的临界数值。此时一定要小心的分析程序报错处的语句,常常可能暴露出一些难以发现的逻辑错误如:if(flag==true)写为了if(flag=true),由于这两句话都没有语法上的错误,编译器无法给出合理的错误信息提示,导致大量的时间浪费用于发现Bug。所以一定要认真的检错报错处,各变量的取值情况,以此为参考认真检错报错处前后的语句逻辑错误。灵活的使用调试器,设置调试 阅读全文
posted @ 2012-06-13 20:56 airforce 阅读(5757) 评论(0) 推荐(0)
摘要:无论是Java还是C#中,其常常需要对数据容器对象进行遍历。Java中提供了十分方便的遍历语法,以支持Foreach语法。传统的遍历方式一般为(for i=1;i<=arrary.length();i++){ Type temp=arrary[i]; /****/}卸载元素:从容器中取出存放的数据元素。此种方式需要设置循环变量,并控制步长,以对数据容器中的数据中的数据元素进行遍历,而且需要逐一的对容器中的数据进行卸载。但是Java中可以通过for循环实现foreach遍历,遍历容器中的每一项,而且自动卸载元素。for(float x:f){ //x即为从float容器f中取出的一个元素} 阅读全文
posted @ 2012-06-13 20:18 airforce 阅读(7191) 评论(1) 推荐(0)