- 浏览: 31193 次
- 性别:
- 来自: 北京
最新评论
转 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 2705这几天一直在找java中是如何实现delphi中使用元类统一管 ... -
How does Java compiler resolve the ambiguity to decide which
2007-12-03 17:01 1192转http://bobcat.webappcabaret.ne ... -
java中的类之类 java.lang.reflect
2007-12-02 14:41 1012不知道java.lang.reflect实现的功能算 ... -
转载,浅谈Object Pascal的指针
2007-11-30 16:15 1430转载,浅谈Object Pascal ... -
HelloWin
2007-11-30 16:14 1025被Delphi惯坏了,发现写一个原生的F ... -
Delphi7远程调试
2007-11-30 16:12 2295Delphi7远程调试 请保留完整信息 Delphi7远程调 ... -
python thread lock
2007-11-30 16:11 30491 #coding=utf-8 2 ... -
delphi 函数指针 方法指针
2007-11-30 16:08 5156unit Unit1; interface ... -
Java线程
2007-11-30 16:07 8211 package org.zsk.error; 2 ... -
PostMessage和SendMessage区别
2007-11-30 16:06 1602PostMessage 只是把消息放入队列,不管其他程序是否处 ... -
模拟键盘输入
2007-11-30 16:04 1282SetForegroundWindow(HApp); ... -
控制另一个程序
2007-11-30 16:03 1004实现思路分析: 1、找到目标程序的句柄,可以通过窗口的capt ... -
Eclipse 常用设置 快捷键
2007-11-30 15:50 1819常用设置 1、显示行号 Window->Prefe ... -
重构-保护
2007-11-30 15:46 857重构前的代码,使用字符串处理状态 package org.zs ...
相关推荐
总的来说,从Delphi转向Java涉及到语言特性的理解、代码结构的重构、库和API的替换,以及对新平台特性的掌握。这是一个复杂的过程,需要耐心和细致的工作。在转换过程中,保持代码清晰和可维护性,同时考虑未来扩展...
从 DELPHI 到 JAVA 转换 DELPHI 和 JAVA 是两种不同的编程语言,分别具有不同的编程思想和设计理念。本文将从 DELPHI 到 JAVA 的转换角度,介绍 JAVA 语言中的一些基本概念和编程技术。 字符串处理 在 DELPHI 中...
1. 项目迁移:当一个组织决定从Java转向Delphi,或者希望将部分Java组件整合到Delphi项目中时,Java2Pas可以帮助快速完成代码的初步转换。 2. 代码复用:开发者可以利用Java2Pas将已有的成熟Java库转换为Delphi代码...
Delphi,作为一款强大的Windows应用程序开发工具,有时需要与Java环境交互,以利用Java丰富的类库和跨平台能力。本篇文章将详细探讨如何在Delphi中调用Java类和包源代码,以实现两者之间的无缝连接。 首先,理解...
在IT行业中,跨语言通信是常见的需求,尤其是在不同的开发环境中,比如本文提到的Delphi 7与Java的交互。Delphi 7是一款历史悠久且功能强大的Windows应用程序开发工具,而Java则是一种广泛应用于服务器端和跨平台...
Java方法执行完成后,结果会返回,同样需要从JNI类型转换回Delphi类型。 6. **异常处理** Java的异常在JNI层会转换为本地异常,因此在Delphi中需要捕获并处理这些异常。 7. **资源释放** 调用完Java接口后,记得...
Java和Delphi是两种不同的编程语言,它们各自拥有独特的特性和优势。在特定情况下,将两者结合使用可以发挥出强大的协同效应,特别是在跨平台开发、系统集成和利用现有代码库时。本文将深入探讨Java与Delphi的结合,...
通过测试,Delphi的RSA算法无法与Java的RSA算法兼容,经过各种周折最终尝试了Delphi调用Java的类的方法进行RSA加密解密;这是非常令人振奋的解决方案,但是前期也遇到不少问题。 在网上找到...
从Delphi到Java转换 Delphi和Java都是流行的编程语言,但它们在语法和实现细节方面存在着一些差异。对于开发者来说,了解这些差异非常重要,以便更好地将Delphi项目迁移到Java平台上。本文将从字符串处理、数组、...
这个压缩包“delphi调用java类,包.rar”显然是一个关于如何在Delphi环境中调用Java类的示例或教程。Delphi,作为一种强大的Windows应用程序开发工具,常常需要与Java这样的跨平台语言集成,以利用其丰富的库和服务...
总的来说,"Java转Pas文件官方工具"为Java和Delphi之间的代码互操作提供了一个桥梁,它允许开发者利用Java的丰富库和工具集来增强Delphi项目,同时也能让Java开发者更轻松地进入Delphi开发领域。通过深入理解和有效...
Delphi程序需要链接到JNI的库文件。在Windows上,这通常是`jvm.dll`。在代码中使用`LoadLibrary`函数加载这个库,然后通过`GetProcAddress`获取JNI的函数指针。 3. **创建JNI接口** JNI接口定义了一系列的函数,...
通常,这涉及到Java的Java Native Interface (JNI),这是一个允许Java代码和其他语言写的代码进行交互的框架。Delphi可以通过JNI来调用Java的方法,反之亦然。 1. **创建Java库**:在Java端,你需要编写一个包含你...
最后,为了在Delphi程序中使用这个DLL,我们需要将其加载到内存中,并通过JNI接口调用Java函数。这可以通过`LoadLibrary`和`GetProcAddress`等API来实现。 总结来说,Delphi 10.3通过JNI调用Java函数的过程涉及以下...
1. **初始化JNIEnv指针**:在Delphi中,你需要获取到JNIEnv指针,这通常通过Java的JNI函数`AttachCurrentThread`或者`AttachCurrentThreadAsDaemon`来完成。这些函数会将当前线程连接到JVM,并返回一个JNIEnv指针。 ...
Java到Delphi源码转换是跨平台编程领域中的一个重要话题,尤其对于那些希望利用Java库在Delphi环境中工作的开发者来说。本资源提供了一个名为"JAVA JAR 转DELPHI源码 PAS"的工具,它能够将Java的类、方法和属性转换...
本资源"Delphi.rar_AES_AES加密_delphi AES加密_delphi 加解密_java delphi aes"提供的是在Delphi编程环境中实现AES加密和解密的示例代码,其目标是与Java平台上的加解密过程保持兼容。 首先,让我们深入了解一下...
简便方法搞定第三方SDK的Jar包 在DELPHI XE 环境下的引入,生成原生桥接文件(NativeBridge File) 所谓“原生桥接文件”,即JAR文件的定义文件,说明了存在JAR库文件里的类、类型、函数等,相当于Windows系统下...
然而,当需要与Java环境交互时,如何在Delphi XE7中调用Java的JAR文件就成为一个挑战。本篇将深入探讨如何实现这一目标。 首先,了解Java本地接口(JNI)是关键。JNI允许Java代码调用本地(如C/C++)代码,反之亦然...
例如,Delphi客户端可以将数据转换为JSON字符串,通过TCP连接发送到Java服务端,服务端再用JSON库(如Jackson或Gson)反序列化成Java对象。 接下来,安全性和错误处理是必须考虑的因素。使用SSL/TLS加密确保数据...