- 浏览: 30445 次
- 性别:
- 来自: 北京
最新评论
转 http://blog.csdn.net/windindance/archive/2004/09/14/104362.aspx
从DELPHI到JAVA
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
注意:当取得一个迭代器后,如果容器被改变,会抛出异常。
3 集合
DELPHI
var option : set of char;
option := ['a','b'];
JAVA 1 BitSet
大小不限制。
性能相比array略差。
JAVA 2 HashSet (TreeSet)
元素必须唯一。
每个元素都必须定义equals函数和compareTo函数。
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() |
字符串转换为整数 |
发表评论
-
java反射机制2 -- 通过名称创建类,并通过该类创建实例
2007-12-05 12:43 2667这几天一直在找java中是如何实现delphi中使用元类统一管 ... -
How does Java compiler resolve the ambiguity to decide which
2007-12-03 17:01 1130转http://bobcat.webappcabaret.ne ... -
java中的类之类 java.lang.reflect
2007-12-02 14:41 984不知道java.lang.reflect实现的功能算 ... -
转载,浅谈Object Pascal的指针
2007-11-30 16:15 1385转载,浅谈Object Pascal ... -
HelloWin
2007-11-30 16:14 996被Delphi惯坏了,发现写一个原生的F ... -
Delphi7远程调试
2007-11-30 16:12 2250Delphi7远程调试 请保留完整信息 Delphi7远程调 ... -
python thread lock
2007-11-30 16:11 29981 #coding=utf-8 2 ... -
delphi 函数指针 方法指针
2007-11-30 16:08 5095unit Unit1; interface ... -
Java线程
2007-11-30 16:07 7611 package org.zsk.error; 2 ... -
PostMessage和SendMessage区别
2007-11-30 16:06 1575PostMessage 只是把消息放入队列,不管其他程序是否处 ... -
模拟键盘输入
2007-11-30 16:04 1230SetForegroundWindow(HApp); ... -
控制另一个程序
2007-11-30 16:03 961实现思路分析: 1、找到目标程序的句柄,可以通过窗口的capt ... -
Eclipse 常用设置 快捷键
2007-11-30 15:50 1771常用设置 1、显示行号 Window->Prefe ... -
重构-保护
2007-11-30 15:46 817重构前的代码,使用字符串处理状态 package org.zs ...
相关推荐
DELPHI 7 调用 JAVA 接口 ,传入 JAVA接口地址,和参数 返回结果
Delphi调用Java类源代码,本人测试一切OK的,大家可以参考一下。
delphi调用Java函数示例 delphi调用Java函数示例 delphi调用Java函数示例 delphi调用Java函数示例
在Delphi中运行java的sdk
delphi(pas)转java,有这种需求的可以用一下!
通过测试,Delphi的RSA算法无法与Java的RSA算法兼容,经过各种周折最终尝试了Delphi调用Java的类的方法进行RSA加密解密;这是非常令人振奋的解决方案,但是前期也遇到不少问题。 在网上找到...
delphi调用java类,转换包jni.pas J2SDK v 1.4 DELPHI开发JNI必备 jni.pas
delphi调用java类,包.rar
Java2Pas是命令行工具,可以将Java代码(.java)转换成Delphi代码(.pas文件)
简便方法搞定第三方SDK的Jar包 在DELPHI XE 环境下的引入,生成原生桥接文件(NativeBridge File) 所谓“原生桥接文件”,即JAR文件的定义文件,说明了存在JAR库文件里的类、类型、函数等,相当于Windows系统下...
最近的项目(Delphi开发),需要经常和java语言开发的系统进行数据交互(Socket通信方式),数据编码约定采用UTF-8编码。 令我无语的是:JAVA系统那边反映说,Delphi发的数据他们收到是乱码,而我这边(Delphi7,...
java与delphi的完美结合 对java和delphi有兴趣的同学可以参考
Delphi ,Java,php等通用 RSA加密,解密,签名.
现在很多都是提供jar包,使用Delphi的同学们习惯于调用dll,附件就是一个通过DELPHI XE7调用JAVA的JAR的例子
Delphi实现AES加密和解密, 同Java加解密兼容
解决Delphi 中文MD5签名和Java MD5签名不一致的问题。
实现的delphi AES加解密与Java AES 加解密互转, delphi 7 下测试通过,这是一个delphi7下的例子程序.
本组代码采用标准AES算法(基础算法引用ElAES.pas,感谢作者),代码支持AES/ECB/PKCS5Padding、AES/CBC/PKCS5Padding 密钥长度128/192/256bit,密钥0填充,Delphi与JAVA互相加解密。
DELPHI 11 调用 JAVA 接口 ,传入 JAVA接口地址,和参数 返回结果
分别使用Delphi和Java实现AES的加解密,并且Delphi和Java也能互为加解密,支持中英文,字母,数字等等所有字符。