代码从DELPHI语言到JAVA语言[delphi],从DELPHI到JAVA[delphi]
1 字符串处理 DELPHI var s :string; s := s + 'a string'; JAVA 习惯用法 String s = new String(); s += 'a string'; 由于String对象不可修改,导致对String对象赋值会有一个StringBuffer对象产生并销毁,一个新的String对象被产生。在大字符串处理和循环处理时,性能极差。(参见《JAVA 字符串处理速度测试》) JAVA 优化用法 StringBuffer s = new StringBuffer(); //如果字符串较大,最好能够赋予一个初始的StringBuffer大小。 s.Append('a string'); 2 数组 DELPHI var a:array of string; SetLength(10); JAVA 1: Arrays String[] a = new String[10]; int [] a = {1,2,3,4} 可以直接赋初始值(不管是基本类型还是对象) 注意:不可改变数组大小! 拥有以下实用函数:full,sort,equals,binarySearch,System.arraycopy JAVA 2: ArrayList (LinkedList) ArrayList a = new ArrayList(); a.add(new Integer(1)); a.get(1); 注意:数组的值必须是对象类型! 不能用“[]”取值。 容器的元素是Object类。(也即使用时需要强制转型)【JDK1.5支持泛型JAVA】 ArrayList随机访问性能好,但元素插入和删除性能差。LinkedList反之。 LinkedListList中央插入和删除元素性能好,可以用来制作stack,queue或deque。包含下列函数:addFirst,addLast,getFirst,getLast,removeFirst,removeLast 要访问一个容器,最好是使用迭代器,例如a.iterator()。 迭代器使用: void print(Iterator e) { while (e.hasNext) System.out.println(e.next());} 迭代器包含下列函数:next,hasNext,remove 注意:当取得一个迭代器后,如果容器被改变,会抛出异常, delphi override 和 overload 的区别。 3 集合 DELPHI var option : set of char; option := ['a','b']; JAVA 1 BitSet 大小不限制。 性能相比array略差。 JAVA 2 HashSet (TreeSet) 元素必须唯一。 每个元素都必须定义equals函数和compareTo函数,delphi pchar string互转函数。 HashSet查找性能好,但无法排序。必须定义hashCode函数。 TreeSet是有序的,但查找性能较差。 TreeSet可以产生大小在一定范围内的一批元素。 Collection函数说明(包含Set和Map): 函数名称 函数说明 备注 add 将对象增加到容器 可能未被实现 addAll 将一批对象增加到容器 可能未被实现 clear 清除所有元素 可能未被实现 contains 检查是否存在元素 <o:p></o:p> containsAll 检查是否存在一批元素 <o:p></o:p> isEmpty 容器是否为空 <o:p></o:p> iterator 返回一个迭代器 <o:p></o:p> remove 删除一个元素 可能未被实现 removeAll 删除一批元素 可能未被实现 retainAll 删除除了一批元素外的所有元素 可能未被实现 size 容器中元素个数 <o:p></o:p> toArray 返回一个含所有元素的array <o:p></o:p> max,min 取得最大、最小值 <o:p></o:p> copy 从一个容器复制到另一个容器 <o:p></o:p> <o:p></o:p> <o:p></o:p> <o:p></o:p> <o:p></o:p> <o:p></o:p> <o:p></o:p> 4 Key/Vaue对 DELPHI var sl :TStringList; sl.Values['key'] := 'value'; JAVA HashMap (TreeMap,WeakHaspMap) TreeMap可排序,但性能较差。可以返回在一定大小范围内元素的子集。 HashMap性能好,不可排序。需要提供hashCode、equals等函数。 WeakHaspMap似乎可以节省内存空间。 5 多线程同步 JAVA Collection c = Coolections. synchronizedCollection(new ArrayList()); List l = Coolections. synchronizedList(new ArrayList()); Set s = Coolections. synchronizedSet(new HashSet()); Map c = Coolections. synchronizedMap(new HashMap()); 6 文件操作 DELPHI var fin :TFileStream; JAVA 1 InputStream / OutputStream JAVA 2 RandomAccessFile 7 目录操作 DELPHI FindFirst,etc. JAVA File String[] list = path.list( new FilenameFilter() { public boolean accept(File dir, String s) { String f = new File(s).getName(); return f.indexOf(filter)!=-1; } //这儿是一个内嵌类(inner class) }); File类提供下列函数:getAbsolutePath, getName, getPath, length, lastModified, renameTo, mkdirs, isFile, isDirectory, exists,delete等。 <o:p></o:p> 8 压缩 DELPHI zlib.pas JAVA ZipInputStream / ZipOutputStream <o:p></o:p> 9 RTTI DELPHI is, as ,className,typInfo.pas JAVA instanceof或isInstance()相当于DELPHI中的is Class.forName("AClass") 相当于 AClass.class 对于外覆类例如Integer,其Integer.TYPE 等同于 integer.class Class.forName("AClass").newInstance()可以产生一个新对象(该类必须具有缺省构造函数)。 java.lang.reflect提供Field, Method. Constructor等类。 10 跳出嵌套循环 DELPHI goto JAVA label1: for (int i=0; i<10; i++) for (int j=0; j<10; j++) { continue label1; //跳转到label1,循环继续执行 break label1; //跳转到label1,循环中止执行 }<o:p></o:p> <o:p></o:p> <o:p></o:p> 测试: 建议在编写程序时同时编写测试代码。 <o:p></o:p> 其他常用函数: 函数功能 DELPHI JAVA 输出调试信息 writeln System.out.println() 随机函数 random Math.random() 字符串转换为整数 原文来自: 【100脚本网 www.pc100.net】