在你学了C语言之后,顶多了解了C语言的思想以及某些语法。但是在java里除了语法与C语言有个别类似的,其他的都不太一样。所以如果说在学Java之前先学C语言,对于你后续帮助不太大,但是还是有那么一点点帮助的,比如说你接触和学习Java会比一般小白更容易接受,因为你已经有了编程的基础概念了。如果为了就业的话,除了技术主要还是要看学历,毕竟现在JAVA火了太多年,许多学校学计算机的都学JAVA,一问到就说学了JAVA,所以市场也逐步饱和。投简历的时候,基本上都是要求大专,本科以上学历,大专以下的直接OUT了。
如果你是大专学历的话,学了C语言,建议学嵌入式会好点,毕竟嵌入式的基础就是C语言。当然,如果你的学历够高,JAVA学的够深,进入大厂也不是太大难事。毕竟在IT行业里,技术才是硬道理,技术相当的话就会看学历。
所以学完C语言再去学Java完全是没有问题的,只是相对于Java,更建议去学习嵌入式,如果确实是想学Java的,那么可以直接学习Java,不需要绕弯子先学C语言。
JNI允许您从本机代码内调用 Java 类方法。要做到这一点,通常必须使用 Invocation API 在本机代码内创建和初始化一个 JVM。
下列是您可能决定从 C/C++ 代码调用Java 代码的典型情况:
1.希望实现的这部分代码是平台无关的,它将用于跨多种平台使用的功能。
2.需要在本机应用程序中访问用 Java 语言编写的代码或代码库。
3.希望从本机代码利用标准 Java 类库。
从C/C++ 程序调用 Java 代码的四个步骤:
1.编写 Java 代码。
这个步骤包含编写一个或多个 Java 类,这些类实现(或调用其它方法实现)您想要访问的功能。
2.编译 Java 代码。
在能够使用这些 Java 类之前,必须成功地将它们编译成字节码。
3.编写 C/C++ 代码。
这个代码将创建和实例化 JVM,并调用正确的 Java 方法。
4.运行本机 C/C++ 应用程序。
如何在c语言中使用java传入的字符串s,也就是说如何使用jstring类型。那么在c语言实现中如何使用传入的字符串s?我们知道java中的String,c语言中应该对应的是char*类型,也就是说我们在jni的c语言实现中如何把jstring类型转换成为char*即可。
方法是这样的:
在c文件中声明char* str,然后
str= (char*)(*env)->GetStringUTFChars(env, jstring,NULL)
这样就可以得到传入的字符串,过程如下:
JNIEXPORT jstring JNICALLJava_Test_sayHello
(JNIEnv * env, jobject obj, jstring s)
{
char * str
str=(char*)(*env)->GetStringUTFChars(env,s,NULL)
printf("%s",str)
(*env)->ReleaseStringUTFChars(env, s, str)
......
}
当然,java中有垃圾回收机制,二c语言没有,那么使用完该字符串之后该如何处理呢?字符串str使用完后,需要通知虚拟机平台相关代码无需再访问,方法是
(*env)->ReleaseStringUTFChars(env, jstring, str)
最后还要说一下,如果传入传出的字符串是中文,就又有问题了,我们需要手工进行uncode编码,否则就是乱码,当然如果程序设计合理,这里一般情况下尽量避免进行汉字的传递。
呵呵,就这样了!