随笔分类 -  编程基础

摘要:Java的集合类关系图:List:add/remove/get/set。1,ArrayList:其实就是数组,容量一大,频繁增删就是噩梦,适合随机查找;2,LinkedList:增加了push/[pop|remove|pull],好啰嗦,其实都是removeFirst;3,Vector:历史遗留产物,同步版的ArrayList,名字起的奇奇怪怪,代码和ArrayList太像;4,Stack:继承自Vector。Java里其实没有纯粹的Stack,自己实现一个吧,用组合的方式,封装一下LinkedList即可;5,Queue:为什么归到这里呢?本来是单独的一类,不过在SUN的JDK里就是用Lin 阅读全文
posted @ 2011-12-13 22:30 Bryan Wong 阅读(2270) 评论(0) 推荐(0) 编辑
摘要:微软的StyleCop作为一款代码分析插件,集成到Visual Studio 2008和Visual Studio 2010之中,可以帮助开发人员迅速地理清编程规范问题。对确保软件质量,确保软件开发效率而言,意义非凡。与同样出自微软的另一款代码分析工具fxcop通过分析程序集来检查各类编程规范错误不同的是,StyleCop是针对C#源代码的分析工具。有点类似java的checkstyle。StyleCop可以检查代码中的各类静态编程规范错误,从代码注释,代码布局,可维护性,命名规范,可读性等各方面对代码规范性进行检查。重要的是,其规则可以自定义,可以屏蔽掉不适用于特定项目的规则,甚至可以自定义 阅读全文
posted @ 2010-07-04 17:25 Bryan Wong 阅读(8753) 评论(3) 推荐(1) 编辑
摘要:什么是圈复杂度: 比较通用的解释:一种代码复杂度的衡量标准,中文名称叫做圈复杂度。在软件测试的概念里,圈复杂度“用来衡量一个模块判定结构的复杂程度,数量上表现为独立现行路径条数,即合理的预防错误所需测试的最少路径条数,圈复杂度大说明程序代码可能质量低且难于测试和维护,根据经验,程序的可能错误和高的圈复杂度有着很大关系”。圈复杂度是一种为程序逻辑复杂性提供定量测度的软件度量,... 阅读全文
posted @ 2010-06-06 22:10 Bryan Wong 阅读(2998) 评论(0) 推荐(0) 编辑
摘要:断言是J2SE 1.4开始引入的,其语法如下assert <逻辑表达式>assert <逻辑表达式> : <信息表达式>第一种语法,如果逻辑表达式判断false时将抛出AssertionError异常,第二种语法在抛出异常的同时还会打印信息表达式的值。断言的编译如果使用的是 J2SE 1.4,则必须告诉编译器需要使用断言,语法如下javac -source 1.4 <源文件>如果使用的是 JavaSE 5.0及其后续版本,则不需要任何特殊说明。而如果需要关闭断言,需要增加一项说明如下javac -source 1.3 <源文件>运行时 阅读全文
posted @ 2010-04-11 22:08 Bryan Wong 阅读(266) 评论(0) 推荐(0) 编辑
摘要:一,编译时常量使用static final类似于C/C++/C#中的const。应用于基本类型,java编译器可以将该常量值代入任何可能用它的计算式中,这样可以减轻运行时的负担。二,运行时初始化,其后不可改变的变量分两种情况:如果是值类型,表示其值不可改变;如果是引用类型,表示其引用(指向)不可改变,但其引用的对象(状态和行为)可以改变。c#采用单独的关键字readonly指定。三,只读参数与第二种情况类似,在方法内部无法修改修饰为final的参数的引用指向。四,密封类与密封方法密封类表示该类不允许继承,密封方法表示该方法不可以被重写。c#采用单独的关键字sealed来指定。final关键字在 阅读全文
posted @ 2010-04-11 21:01 Bryan Wong 阅读(181) 评论(0) 推荐(0) 编辑
摘要:与C#一样,java也对基本类型进行了封装,int封装出Integer类,boolean封装出Boolean类。这样一来,基本类型就突破了值类型的限制,获得了面向对象的好处。然而,与.NET不同,java中的封装类是真正的引用类型,比如在java中用“==”比较两个封装类对象,尽管值相等,得到的结果也很可能是false,而不是像.NET一样,将基本类型的一些操作符作了重载,使得“==”符号的行为看起来与基本类型完全一致。在java中,“Integer i=10,j=10;”使得i==j为true,但如果i或者j任何一个使用“new Integer(10)”,那么i==j的值将是false,因为 阅读全文
posted @ 2010-02-18 19:33 Bryan Wong 阅读(510) 评论(0) 推荐(0) 编辑
摘要:搞惯了C#,这几天初学java,诸多不习惯。Java里面还是保留了很多C++的旧语法,比如switch不能应用于String类型,比如switch中的case如果没有break就会一直往下执行,等等。最不习惯的是java将包、类与文件夹严格对应这一点。这不,今天就遇到一个问题,郁闷了半天。有两个类ClassFather和ClassChild,其中ClassFather位于包hh.Card下,而ClassChild则属于默认包,我直接使用javac ClassFather.java在当前目录编译好ClassFather类以后将ClassFather.class文件手工copy至hh\Card目录 阅读全文
posted @ 2010-02-17 22:19 Bryan Wong 阅读(8837) 评论(2) 推荐(1) 编辑