从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】

时间: 2024-08-26 18:59:27

从DELPHI到JAVA[delphi]的相关文章

delphi调用 java 的 WebService服务端.

// InvRegistry.RegisterInvokeOptions(TypeInfo(ModelADServicePortType), ioLiteral); InvRegistry.RegisterInvokeOptions(TypeInfo(ModelADServicePortType), ioDocument); delphi调用 java 的 WebService服务端.,布布扣,bubuko.com

Delphi XE8中Delphi和JAVA数据类型对应关系!

Delphi XE8中Delphi和Java数据类型对应关系所在单元文件:Androidapi.JNI.JavaTypes 对应关系: JObject = interface;//java.lang.Object JInputStream = interface;//java.io.InputStream JByteArrayInputStream = interface;//java.io.ByteArrayInputStream JOutputStream = interface;//jav

世界上最恶心的调用方法:Delphi调用Java的class方法法

世界上最恶心的调用方法是,:用Delphi调用Java的class方法: 如果写了一个java方法: package com.api; public class DelphiCallJava { public static String dTest(String args,int args2,String args3){ if(args==null){ return "您沒有輸入參數."; }else { return "您輸入的參數是:"+args; } } }

Delphi调用JAVA的WebService上传XML文件(XE10.2+WIN764)

相关资料:1.http://blog.csdn.net/luojianfeng/article/details/512198902.http://blog.csdn.net/avsuper/article/details/8764165 注意事项: 1.生成WSDL文件时,D7可能有的无法生成,用XE版本可以全部生成. 返回字节流: 1 function GetByte(AString: string): TByteDynArray; 2 var 3 sByte: TByteDynArray;

zw版【转发&#183;台湾nvp系列Delphi例程】Delphi 使用 HALCON库件COM控件数据格式转换

zw版[转发·台湾nvp系列Delphi例程]Delphi 使用 HALCON库件COM控件数据格式转换 Delphi 使用 HALCON库件COM控件数据格式转换,与IHObjectX接口有关 var rg0,rg1 : HRegionX;begin rg0 := CoHRegionX.Create; rg0.GenRectangle1(10,10,150,150); rg1 := CoHRegionX.Create; rg1.GenRectangle1(200,200,250,250); r

[Delphi]Python For Delphi使用大全 (转)

原始地址:http://blog.csdn.net/kernelspirit/article/details/760413 Python For Delphi搭建了Delphi和强大的脚本语言Python的桥梁,使用起来非常方便,让Delphi华丽的界面配合Python强大.简洁.稳定的后台逻辑处理能力,让应用程序模块清晰.界面漂亮.后台复杂逻辑不再复杂,大幅提高开发效率.使用的时候出现了一些容易忽视造成的问题,现总结如下. 版本 Python For Delphi支持的Python版本为2.3

delphi 基础之四 delphi 组织结构

delphi 组织结构 在Delphi中,一个正在开发的应用程序可以被称作项目或者工程.一般地,一个项目主要由dpr(项目).pas(单元)和dfm(窗体)三种文件组成,另外还有一些附属文件,如res(资源)文件等.在源代码中,项目文件用关键字program标识,单元文件用unit标识. 通常,一个项目只有惟一的dpr文件.一个dfm文件总是有对应的pas文件,但是pas文件可以没有对应的pas文件. 如果打开Delphi,选择菜单File|New|Application,则可以新建一个项目.该

Delphi与Java中的日期互换

在最近做的一个项目中用到了Java和Delphi,发现它们不能正确读取对方的日期类型,如在Java中写入一个值为“2007-12-1”的日期值,通过Delphi读取却不是这个值了.通过查阅资料,发现两者对日期类型的定义略有不同.Java中日期使用的是长整型进行存储的,它表示距“1970-1-1”的毫秒数.如“1970-1-2”是在“1970-1-1”后的86400000毫秒,所以Java中就使用86400000表示“1970-1-2”这个日期.由于长整型是带符号的,所以我们可以使用负的毫秒数来表

Delphi和JAVA用UTF-8编码进行Socket通信例子

最近的项目(Delphi开发),需要经常和java语言开发的系统进行数据交互(Socket通信方式),数据编码约定采用UTF-8编码. 令我无语的是:JAVA系统那边反映说,Delphi发的数据他们收到是乱码,而我这边(Delphi7,ANSI)收到的数据将utf-8转码成ansi也是乱码. 因为不太熟悉java语言,还曾经怀疑是不是Delphi的utf-8编码和java语言的不一样. 最近学习了一下java的相关知识,写一个小程序来测试验证一下我曾经的怀疑. 事实证明,Delphi7的UTF-