java与C之间通过jni传递中文字符串 简介 本文提供一个具体的实例,说明java和C之间通过jni传递含有中文字符串的参数,解决中文乱码问题(双字节或多字节乱码)。本文给出具体的源代码,对源代码进行了解释,C部分提供了 C和C++两种方式实现的完整代码。并且所有代码均在实验环境下测试通过。本文读者须对java和C(或C++)有一定的基础知识。 实验环境 Windows XP (或Windows2000) j2sdk1.4.2/j2re1.4.2 Microsoft VisualC++6.0 安装...
by wataxi - Java文档中心 - 2008-07-11 00:42:12 阅读(746) 回复(0)
java程序有一个数据类,里面的内容需要由C处理。 class data1 { String abc; String bcd; class data2; ......... ......... } class data2 { String abcd; String bcde; ...... ...... } 类似以上内容,基本上都是由字符串组成的。 在native代码部分如何获取这个类的内容呢。 刚刚接触jni,请大家都都帮助。 谢谢。
最近在Linux上写了一个测试程序。 先是用pure java——String stemp=new String("文件"); byte[] sarray=stemp.getBytes(); 然后通过打印可以看见"文件"这个String在java中的编码是CEC4,BCFE 然后我用C—— char stemp[10]; strcpy(stemp,"文件"); 然后通过打印可以看见"文件"这个String在C中的编码也是CE,C4,BC,FE 但是我又写了一个jni的小东西。java的接口是一个native void test(String temp); C的实现是:J...
java参数传递 的讨论 java中的参数传递机制一直以来大家都争论不休,究竟是“传值”还是“传址(传引用)”,争论的双方各执一词,互不相让。不但“菜鸟”们一头雾水,一些“老鸟”也只知道结果却说不出所以然来。我相信看过下面的内容后,你就会明白一些。 先看基本类型作为参数传递的例子: public class Test1 { public static void main(String[] args) { int n = 3; System.out.println("Before chan...
public class t18 { public static void add3(Integer i) { int val = i.intValue(); val += 3; i = new Integer(val); } public static void main(String args[]) { Integer i = new Integer(0); add3(i); System.out.println(i.intValue()); } } 运行结果为0 我的理解是java中基本类型以值传递,对象以地址传递 在本题中如果以地址传递应该为3,请高手赐教 :em14:
/** * desc 将对象做为参数传值 * auther BianJiang * since 2007-05-20 * 纯碎学习之用代码 */ class MyTest1 { public float result; } class MyTest2 { public void add(float x, float y, MyTest1 obj) { obj.result = x + y; } } public class Run { public static void main(String[] args) { MyTest1 a = new MyTest1(); MyTest2 b = new MyTest2(); ...
关于java的赋值和参数传递是按值(by value)进行的还是按引用(by reference)进行的,这个问题曾经迷惑了很多人,包括我。而且,我想,这个问题还将继续迷惑一些人,包括那些 C++ 的高手。 在这里,我不准备用“按值(by value)”和“按引用(by value)”这样的术语来阐述这个问题。因为,从字面的理解来看,这样的术语在不同的人头脑里有不同的含义。我试图从java数据(包括原始类型(primitive type)和对象(ojbect))在内存中的 存...
java函数参数是值传递的。 . 如果参数是基本类型,函数不能改变参数的值。(包括 String) . 如果参数是对象,函数可以改变参数的属性。 . 如果参数是对象,函数不能使参数指向新的对象。 本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/7257/showart_93503.html
“java 编程语言只由值传递参数。当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变,但对象的引用是永远不会改变的。” 下面的程序似乎和书中所述矛盾,XXX对象在调用change方法后发生了改变!对象引用这里我一直很晕,烦劳高手指点一二 :em02: public class Reference { public void change(XXX yyy) { yyy.aa=100; System.out.println(yyy.aa); ...
java Native Interface Specification—Contents http://java.sun.com/javase/6/docs/technotes/guides/jni/spec/jniTOC.html android jni Tips http://blog.chinaunix.net/u1/38994/showart_1099466.html 一个jni下c和java程序范例 http://blog.chinaunix.net/u1/38994/showart_1100966.html 如何编写jni方法 http://blog.chinaunix.net/u1/38994/showart_1099528.html 本文来自ChinaUnix博客,如果查看原文请...