如何学习以进行孝义网站建设和维护?

摘要:做网站维护需要学什么,孝义网站建设,网站推广营销方法,网站建设合同 代码应不应该给JNI的数据类型和类型签名 数据类型 JNI的数据类型包含两种:基本类型和引用类型。 基本类型主要有jboolean、jchar
做网站维护需要学什么,孝义网站建设,网站推广营销方法,网站建设合同 代码应不应该给JNI的数据类型和类型签名 数据类型 JNI的数据类型包含两种#xff1a;基本类型和引用类型。 基本类型主要有jboolean、jchar、jint等#xff0c;它们和Java中的数据类型的对应关系如下表所示。 JNI中的引用类型主要有类、对象和数组#xff0c;它们和Java中的引用类型的对…JNI的数据类型和类型签名 数据类型 JNI的数据类型包含两种基本类型和引用类型。 基本类型主要有jboolean、jchar、jint等它们和Java中的数据类型的对应关系如下表所示。 JNI中的引用类型主要有类、对象和数组它们和Java中的引用类型的对应关系如下表所示。 当然JNI 中还有个 Java 中没有的 jsize定义如下 typedef jint jsize;其实jsize整型是用来描述基本指标和大小没有什么神秘的。 类型签名 JNI的类型签名标识了一个特定的Java类型这个类型既可以是类和方法也可以是数据类型。 类的签名比较简单它采用 “L包名类名; ” 的形式只需要将其中的替换为/即可。比如java.lang.String它的签名为Ljava/lang/String;注意末尾的也是签名的一部分。 基本数据类型的签名采用一系列大写字母来表示如下表所示。 从上表可以看出基本数据类型的签名是有规律的一般为首字母的大写但是boolean除外因为B已经被byte占用了而long的签名之所以不是L那是因为L表示的是类的签名。 对象和数组的签名稍微复杂一些。对于对象来说它的签名就是对象所属的类的签名比如String对象它的签名为Ljava/lang/String;。对于数组来说它的签名为[类型签名比如int数组其类型为int而int的签名为I所以int数组的签名就是[I同理就可以得出如下的签名对应关系 char[] [C float[] [F double[] [D long[] [J String[] [Ljava/lang/String; Object[] [Ljava/lang/Object;对于多维数组来说它的签名为n个[类型签名其中n表示数组的维度比如int[][]的签名为[[I其他情况可以依此类推。 方法的签名为参数类型签名返回值类型签名这有点不好理解。举个例子如下方法boolean fun1(int a, double b, int[] c)根据签名的规则可以知道它的参数类型的签名连在一起是ID[I返回值类型的签名为Z所以整个方法的签名就是(ID[I)Z。再举个例子下面的方法boolean fun1(int a, String b, int[] c)它的签名是(ILjava/lang/String; [I)Z。为了能够更好地理解方法的签名格式下面再给出两个示例 int fun1() 签名为 ()I void fun1(int i) 签名为 (I)V一个Java类的方法的Signature可以通过javap命令获取javap -s -p Java类名 本地方法中访问java程序中的内容 1. 访问 String 对象 从java程序中传过去的String对象在本地方法中对应的是jstring类型jstring类型和c中的char*不同所以如果你直接当做 char*使用的话就会出错。因此在使用之前需要将jstring转换成为c/c中的char*这里使用JNIEnv的方法转换。下面是一个例子 JNIEXPORT jstring JNICALL Java_Prompt_getLine(JNIEnv *env, jobject obj, jstring prompt) {char buf[128];const char *str (*env)-GetStringUTFChars(env, prompt, 0);printf(%s, str);(*env)-ReleaseStringUTFChars(env, prompt, str); }这里使用GetStringUTFChars方法将传进来的promptjstring类型转换成为UTF-8的格式就能够在本地方法中使用了。 注意在使用完你所转换之后的对象之后需要显示调用ReleaseStringUTFChars方法让JVM释放转换成UTF-8的string的对象的空间如果不显示的调用的话JVM中会一直保存该对象不会被垃圾回收器回收因此就会导致内存溢出。
阅读全文