锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
]]>public class EscapeUnescape {
public static String escape(String src) {
int i;
char j;
StringBuffer tmp = new StringBuffer();
tmp.ensureCapacity(src.length() * 6);
for (i = 0; i < src.length(); i++) {
j = src.charAt(i);
if (Character.isDigit(j) || Character.isLowerCase(j)
|| Character.isUpperCase(j))
tmp.append(j);
else if (j < 256) {
tmp.append("%");
if (j < 16)
tmp.append("0");
tmp.append(Integer.toString(j, 16));
} else {
tmp.append("%u");
tmp.append(Integer.toString(j, 16));
}
}
return tmp.toString();
}
public static String unescape(String src) {
StringBuffer tmp = new StringBuffer();
tmp.ensureCapacity(src.length());
int lastPos = 0, pos = 0;
char ch;
while (lastPos < src.length()) {
pos = src.indexOf("%", lastPos);
if (pos == lastPos) {
if (src.charAt(pos + 1) == 'u') {
ch = (char) Integer.parseInt(src
.substring(pos + 2, pos + 6), 16);
tmp.append(ch);
lastPos = pos + 6;
} else {
ch = (char) Integer.parseInt(src
.substring(pos + 1, pos + 3), 16);
tmp.append(ch);
lastPos = pos + 3;
}
} else {
if (pos == -1) {
tmp.append(src.substring(lastPos));
lastPos = src.length();
} else {
tmp.append(src.substring(lastPos, pos));
lastPos = pos;
}
}
}
return tmp.toString();
}
public static void main(String[] args) {
String tmp = "涓枃";
System.out.println("testing escape : " + tmp);
tmp = escape(tmp);
System.out.println(tmp);
System.out.println("testing unescape :" + tmp);
System.out.println(unescape("%u6211%u4eec"));
}
}
浠ヤ笂涓轟竴涓伐鍏風被錛屼負瑙e喅涓枃涔辯爜
html鍓嶅彴:escape(escape('浣犲ソ'))
鍚庡彴:String txt=EscapeUnescape.unescape(aStringText);
escape鏈韓鍙傛暟緙栫爜涓篒SO8859-1,escape涓枃浼犳浛緇檚ervlet浼氱洿鎺ヤ負null鎺ユ敹涓嶅埌錛岀粡榪囦互涓婄壒孌婂鐞嗗嵆鍙В鍐?鍏朵粬鏂規硶涔熷彲錛屽錛氭墜鍔ㄨ漿鐮?..
]]>
]]>
package com.helloikvm.simple;
public class SimpleReturnString {
public String returnString() {
return "Hello, IKVM!";
}
public void throwException() throws Exception {
throw new Exception("Hello, Exception!");
}
}
// import java package
using com.helloikvm.simple;
namespace IKVMTest
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnTest_Click(object sender, EventArgs e)
{
// Initialize the Java method
SimpleReturnString simpler = new SimpleReturnString();
// Call Java method
String returnString = simpler.returnString();
txtTest.Text = returnString;
}
}
}
]]>
/** public class MD5 |
JarResources JR=new JarResources(" http://www.bt285.cn /GifBundle.jar");
Image logo=Toolkit.getDefaultToolkit().createImage(JR.getResources("logo.gif"));
JarResources
瀵硅薄錛屽茍灝嗗叾鍒濆鍖栦負鍖呭惈鎴戜滑瑕佷嬌鐢ㄧ殑璧勬簮鐨?/span> jar 鏂囦歡 -- images.jar
銆傞殢鍚庢垜浠嬌鐢?/span>JarResources
鐨?/span>getResource()
鏂規硶灝嗘潵鑷?/span> logo.gif 鏂囦歡鐨勫師濮嬫暟鎹彁渚涚粰 awt Toolkit 鐨?/span>createImage()
鏂規硶銆?/span>JarReources
綾葷殑閲嶈鏁版嵁鍩熺敤鏉ヨ窡韙拰瀛樺偍鎸囧畾 jar 鏂囦歡鐨勫唴瀹癸細public final class JarResources {
public boolean debugon=false;
private Hashtable htsizes=new Hashtable();
private Hashtable htjarcontents=new Hashtable();
private String jarfilename;
init()
鏂規硶瀹屾垚鍏ㄩ儴瀹為檯宸ヤ綔銆?/span>
public JarResources(String jarfilename) {
this.jarfilename=jarfilename;
init();
}
init()
鏂規硶鍙皢鎸囧畾 jar 鏂囦歡鐨勬暣涓唴瀹瑰姞杞藉埌涓涓?/span> hashtable錛堥氳繃璧勬簮鍚嶈闂級涓?/span> ZipFile
綾諱負鎴戜滑鎻愪緵浜嗗 jar/zip 妗f澶翠俊鎭殑鍩烘湰璁塊棶鏂規硶銆傝繖綾諱技浜庢枃浠剁郴緇熶腑鐨勭洰褰曚俊鎭備笅闈㈡垜浠垪鍑?/span>ZipFile
涓殑鎵鏈夋潯鐩紝騫剁敤妗f涓瘡涓祫婧愮殑澶у皬娣誨厖 htsizes hashtable錛?/span> private void init() {
try {
// extracts just sizes only.
ZipFile zf=new ZipFile(jarFileName);
Enumeration e=zf.entries();
while (e.hasMoreElements()) {
ZipEntry ze=(ZipEntry)e.nextElement();
if (debugOn) {
System.out.println(dumpZipEntry(ze));
}
htSizes.put(ze.getName(),new Integer((int)ze.getSize()));
}
zf.close();
ZipInputStream
綾昏闂。妗堛?/span>ZipInputStream
綾誨畬鎴愪簡鍏ㄩ儴欖旀湳錛屽厑璁告垜浠崟鐙鍙栨。妗堜腑鐨勬瘡涓祫婧愩傛垜浠粠妗f涓鍙栫粍鎴愭瘡涓祫婧愮殑綺劇‘瀛楄妭鏁幫紝騫跺皢鍏跺瓨鍌ㄥ湪 htjarcontents hashtable 涓紝鎮ㄥ彲浠ラ氳繃璧勬簮鍚嶈闂繖浜涙暟鎹細
// extract resources and put them into the hashtable.
FileInputStream fis=new FileInputStream(jarFileName);
BufferedInputStream bis=new BufferedInputStream(fis);
ZipInputStream zis=new ZipInputStream(bis);
ZipEntry ze=null;
while ((ze=zis.getNextEntry())!=null) {
if (ze.isDirectory()) {
continue;////鍟婂摕!娌℃湁澶勭悊瀛愮洰褰曚腑鐨勮祫婧愬晩 http://www.5a520.cn 灝忚520緗?/span>
}
if (debugOn) {
System.out.println(
"ze.getName()="+ze.getName()+","+"getSize()="+ze.getSize()
);
}
int size=(int)ze.getSize();
// -1 means unknown size.
if (size==-1) {
size=((Integer)htSizes.get(ze.getName())).intValue();
}
byte[] b=new byte[(int)size];
int rb=0;
int chunk=0;
while (((int)size - rb) > 0) {
chunk=zis.read(b,rb,(int)size - rb);
if (chunk==-1) {
break;
}
rb+=chunk;
}
// add to internal resource hashtable
htJarContents.put(ze.getName(),b);
if (debugOn) {
System.out.println(
ze.getName()+" rb="+rb+
",size="+size+
",csize="+ze.getCompressedSize()
);
}
}
} catch (NullPointerException e) {
System.out.println("done.");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
ZipEntry
綾誨皢琚懡鍚嶄負 "java/util/zip/ZipEntry"錛岃屼笉鏄?/span> "java.util.zip.ZipEntry"銆?/span> /**
* Dumps a zip entry into a string.
* @param ze a ZipEntry
*/
private String dumpZipEntry(ZipEntry ze) {
StringBuffer sb=new StringBuffer();
if (ze.isDirectory()) {
sb.append("d ");
} else {
sb.append("f ");
}
if (ze.getMethod()==ZipEntry.STORED) {
sb.append("stored ");
} else {
sb.append("defalted ");
}
sb.append(ze.getName());
sb.append("\t");
sb.append(""+ze.getSize());
if (ze.getMethod()==ZipEntry.DEFLATED) {
sb.append("/"+ze.getCompressedSize());
}
return (sb.toString());
}
/**
* Extracts a jar resource as a blob.
* @param name a resource name.
*/
public byte[] getResource(String name) {
return (byte[])htJarContents.get(name);
}
public static void main(String[] args) throws IOException {
if (args.length!=2) {
System.err.println(
"usage: java JarResources < jar file name> < resource name>"
);
System.exit(1);
}
JarResources jr=new JarResources(args[0]);
byte[] buff=jr.getResource(args[1]);
if (buff==null) {
System.out.println("Could not find "+args[1]+".");
} else {
System.out.println("Found "+args[1]+ " (length="+buff.length+").");
}
}
} // End of JarResources class.
寰蔣鍏徃.Net妗嗘灦涓嶫ava Swing鐨凣UI緙栫▼鐩告瘮瑕佺畝鍗曞緢澶氾紝鍚屾牱鏄簨浠墮┍鍔ㄦā鍨?Net妗嗘灦灝辮繘琛屼簡澶ч噺鐨勫皝瑁呭鐞嗭紝.Net鎶婅繖縐嶅皝瑁呯О涔嬩負濮旀墭鍣?Delegate)錛屽叾浠g爜濡備笅錛?
浣滀負瀵規瘮錛屾垜浠潵鐪嬬湅Java Swing鐨勪簨浠跺鐞嗗拰濮旀墭灝辮澶嶆潅寰堝浠g爜濡備笅錛?/p>
|
鏍規嵁浠ヤ笂浠g爜錛屾垜浠彲浠ユ竻鏅扮殑鐪嬪埌Java Swing瑕佹瘮.Net鐨勯夯鐑︾殑澶氾紝鑰屼笖鏇翠笉鑳借浜哄繊鍙楃殑灝辨槸錛屼竴涓〉闈㈠鏋滄湁澶氫釜鎸夐挳鐨勮瘽錛屾垜浠繀欏婚拡瀵規瘡涓寜閽紪鍐欏涓簨浠朵睛鍚被錛岃屼笖榪欎簺綾諱竴鑸兘浼氳璁句負鍐呴儴綾匯傚榪囪蔣浠跺緩妯$殑璇昏呭彲鑳界煡閬擄紝鍐呴儴杞歡寤烘ā鍦ㄨ蔣浠跺伐紼嬩腑鏄笉鎺ㄨ崘浣跨敤鐨勶紝鎵浠ヨ繖鏍風殑浠g爜緙栧啓鏄庢樉浼氬鍔犺璁″啑浣欏害鍜屽鏉傚害錛屽洜姝わ紝鎴戜滑鍙互鑰冭檻鑷繁緙栧啓涓涓被浼間簬.Net涓璄ventHandler涓鏍風殑浜嬩歡濮旀墭綾繪潵澶勭悊浜嬩歡鍒嗗彂銆?/p>
鐢變簬鎴戜滑鏃犳潈淇敼Java鐨勭紪璇戝櫒錛屾墍浠ユ垜鍦ㄨ繖閲屽皢浼氬熷姪浜庡弽灝勬妧鏈紝鍒╃敤涓涓簨浠跺鎵樼被澶勭悊鎵鏈夌殑鐐瑰嚮浜嬩歡錛屼唬鐮佸涓嬶細
|
鐜板湪鎴戜滑鏉ョ紪鍐欎竴涓祴璇曠▼搴忥紝浠g爜濡備笅錛?/p>
|
浠庝互涓婁唬鐮佷腑鎴戜滑鍙互娓呮櫚鐨勭湅鍒幫紝浜嬩歡澶勭悊鍜屼簨浠跺鎵樺浜庡悓涓紿椾綋涓簡錛?Net鏂逛究鐨凞elegate澶勭悊琚垜浠敤鍙嶅皠瀹炵幇浜嗐?/p>
public class Sub{
String str=new String( "good "); //涓涓湴鍧鐨勪紶閫?new鍑烘潵鐨勫璞★紝鍦ㄥ唴瀛樹腑宸茬粡寮杈熶簡絀洪棿
public static void main(String args[]){
Sub ex=new Sub();
ex.change(ex.str);
System.out.println(ex.str);
}
public void change(String bb){
bb= "test ok " }
闂錛?/font>String str=new String( "good ") 鍜孲tring str="good"鐨勫尯鍒紵
浣撲細1錛?/font>
浣撲細2錛?/font>瀛楃涓叉睜錛堣漿錛?/span>String a = "Hello";
String b = "Hello";
String c = new String("Hello");
String d = new String("Hello");
System.out.println(a == b);
System.out.println(b == c);
System.out.println(c == d);
System.out.println(a.equals(b));
System.out.println(b.equals(c));
System.out.println(c.equals(d));
緇撴灉鏄痶rue錛宖alse錛宖alse錛宼rue錛宼rue錛宼rue銆傝繖閲屽氨娑夊強鍒板瓧絎︿覆姹犮?#8220;瀛楃涓叉睜”錛屾槸Java涓轟簡鎻愰珮鍐呭瓨鍒╃敤鐜囪岄噰鐢ㄧ殑鎺柦錛?/span>
褰撻亣鍒癝tring a = "Hello"; 榪欐牱鐨勮鍙ユ椂錛孞ava浼氬厛鍦ㄥ瓧絎︿覆姹犱腑瀵繪壘鏄惁宸茬粡瀛樺湪"Hello"榪欎釜瀛楃涓?濡傛灉娌℃湁錛屽垯寤虹珛瀛楃涓?Hello"瀵硅薄錛岀劧鍚庡彉閲?a 鎸囧悜榪欎釜鍦板潃錛涚劧鍚庨亣鍒拌鍙tring b = "Hello"錛岃繖鏃跺瓧絎︿覆姹犱腑宸茬粡鏈?"Hello"浜嗭紝鎵浠ョ洿鎺ヨ鍙橀噺b涔熸寚鍚戣繖涓湴鍧錛岀渷鍘諱簡閲嶆柊鍒嗛厤鐨勯夯鐑︺傝屽湪Java涓紝鎿嶄綔絎?#8220;==”瀵逛簬涓や釜鍩烘湰鍨嬫潵璇達紝鏄垽鏂叾鍐呭鏄惁鐩稿悓錛屽浜庝袱涓璞℃潵璇達紝鍒欐槸鍒ゆ柇鍏跺湴鍧鏄惁鐩稿悓錛屾墍浠 == b榪斿洖 true銆?/span>
閭d箞String c = new String("Hello")鍙堝浣曞鐞嗗憿錛熷鏋滄槸榪欑鍐欐硶錛屽垯涓嶄細鍘昏闂瓧絎︿覆姹狅紝鑰屾槸鍏堜負鍙橀噺 c 寮杈熺┖闂達紝鐒跺悗灝嗗煎啓鍏ョ┖闂淬傛墍浠 == c榪斿洖false錛宑 == d鍚屾牱榪斿洖false銆?/span>
鑷充簬String鐨別quals鏂規硶錛屽洜涓哄畠姣旇緝鐨勪笉鏄璞$殑鍦板潃錛岃屾槸瀵硅薄鐨勫鹼紝鎵浠ラ兘榪斿洖true灝變笉濂囨簡銆?/span>
Java铏氭嫙鏈烘湁涓涓瓧絎︿覆姹狅紝淇濆瓨鐫鍑犱箮鎵鏈夌殑瀛楃涓插璞°傚瓧絎︿覆琛ㄨ揪寮忔繪槸鎸囧悜瀛楃涓叉睜涓殑涓涓璞°備嬌鐢╪ew鎿嶄綔鍒涘緩鐨勫瓧絎︿覆瀵硅薄涓嶆寚鍚戝瓧絎︿覆姹犱腑鐨勫璞′絾鏄彲浠ヤ嬌鐢╥ntern鏂規硶浣垮叾鎸囧悜瀛楃涓叉睜涓殑瀵硅薄.錛堟敞錛氬鏋滄睜涓凡緇忔湁鐩稿悓鐨勫瓧絎︿覆--浣跨敤equals鏂規硶紜畾錛屽垯鐩存帴榪斿洖姹犱腑鐨勫瓧絎︿覆錛屽惁鍒欏厛灝嗗瓧絎︿覆娣誨姞鍒版睜涓紝鍐嶈繑鍥烇級銆傛睜涓袱涓浉絳夌殑瀛楃涓插鏋滀嬌鐢?#8220;==”鏉ユ瘮杈冨皢榪斿洖鐪熴?/span>
鎬葷粨錛?/font>涔熷氨鏄湪change榪欎釜鏂規硶涓紝bb宸茬粡鍐欏叆str絀洪棿銆傝宐b鍦ㄧ瓑浜?#8220;test ok”鐨勬椂鍊欐槸榪愮敤瀛楃涓叉睜鍒涘緩浜嗗璞′腑浜嗐傛墍浠ヤ笉鑳借祴鍊箋傚彲浠ヨ繖鏍?bb="test ok"; this.str=bb;
鐞嗚В鏈夐敊璇紝甯屾湜鐪嬪埌鐨勯珮鎵嬪彲浠ュ憡璇夋垜錛屼互渚挎垜鍙互鏇村ソ鐨勪慨鏀癸紝璋㈣阿浜嗐?/span>