- 浏览: 282866 次
- 性别:
- 来自: 广州
博客专栏
-
数据结构
浏览量:70117
最新评论
-
clever101:
兄弟,能提供一个有参数传递的例子吗?
java jni详细入门实例 -
comsci:
拓扑分析算法...............寻径与导 ...
A星寻路算法 -
manxisuo:
感谢博主,好文章。
java的类加载器ClassLoader -
User_Java:
类的静态变量初始化顺序与其声明的顺序有关。自增操作都执行后保存 ...
据说一半以上的java程序员会出错的题 -
flashsnow:
在公司写这样的代码是要遭雷劈的But,为了理解ClassLoa ...
据说一半以上的java程序员会出错的题
文章列表
使用jni来操作java中的数组对象。java数组分为基本类型数组和对象数组。在jni中可以使用GetArrayLength(jarray array)来获取这两组数组的长度。
1.基本类型数组
jni提供两个重要函数来处理java数组
(1) Get<Type>ArrayElements(<Type>Array arr , jboolean* isCopide);
这 类函数可以把Java基本类型的数组转换到C/C++中的数组,有两种处理方式,一种是拷贝一份传回本地代码,另一个是把指向Java数组的指针直接传 回到本地 ...
//jstring to char* char* jstringTostring(JNIEnv* env, jstring jstr) { char* rtn = NULL; jclass clsstring = env->FindClass("java/lang/String"); jstring strencode = env->NewStringUTF("utf-8"); jmethodID mid = env->GetMethodID(clsstring, "getBytes", "( ...
在本地方法实现代码中创建java对象,其中还主要涉及到jni和java之间中文字符串的的乱码问题。
1.创建java对象
首先在java端自定义一个Person类如下
package com.example;
public class Person {
public String name;
public int age;
public Person()
{
}
public Person(String name,int age)
{
this.name=name;
this.age= ...
之前实现了简单的jni入门实例, 这篇博客将主要介绍使用jni在c++调用java的属性和方法。
本地方法函数有两个参数,JNIEnv *和jobject,这两个参数非常重要
1.JNI数据类型
为了方便记忆和书写java数据类型与c++数据类型的对应,jni对数据进行封装。具体为下
2.获取java属性和方法
首先需要获取对应的java的类,jni专门定义了jclass类型来表示java的Class类,JNIEvn类中有几个函数取得jclass:
1.jclass FindClass(const char * ...
JNI是Java Native Interface的缩写,译为Java本地接口。它允许Java代码和其他语言编写的代码进行交互。可以再java中调用C/C++的代码。本文使用一个简单的示例演示JNI的使用。
我的Eclipse的工作目录为:D:\workspace
Eclipse的项目结构:
1.在java类中声明一个native方法,运行在bin下生产class文件
package com.example;
public class jni_test {
public native void sayHello();/ ...
在Java中,每个class都有一个相应的Class对象。也就是说,当我们编写一个类,编译完成后,在生成的.class文件中,就会产生一个Class对象,用于表示这个类的类型信息。Class类是反射的根源。
1.获取Class对象
得到Class类对象有三种方式
1.使用Object类中的getClass()方法
2.类.class
3.通过Class类的forName方法
自定义Person类
public class Person{
public String name;
public int age;
p ...
java API为我们网络通信提供了服务器套接字ServerSocket类和客户端套接字Socket,Socket是网络驱动层提供给应用程序编程的接口和一种机制。
下面提供具体实现例子
服务端--ServerSocket
ServerSocket类实现了 ...
程序本身是一个静态的概念,而进程是程序的一次执行过程,每一个进程都有自己的地址空间。线程实际上是在进程的基础之上的进一步划分。一个进程至少对应一个线程,线程之间共享一个内存空间,线程之间可以相互切换,并发执行。
一.线程的实现
java中实现线程有两种方式:
1.继承Thread类
2.实现Runnable接口(这种方式用得比较多)
继承Thread类实现代码:
public class Test {
public static void main(String[] args){
myThread thread=n ...
Map使用键值对来存储数据,将键映射到值对象,一个映射不能包含重复的键,每一个键最多只能映射到一个值。Map接口的具体实现类:HashMap,Hashtable,TreeMap,LinkedHashMap
1)HashMap
基于哈希表(哈希表学习地址)的Map接口实现。允许使用null值和null键,不保证映射的顺序,特别是不保证顺序恒久不变。它除了非同步和允许使用null外,与Hashtable大致相同。
HashMap实现原理:
1.HashMap默认数组大小为16,加载因子为0.75,当数组使用量达到数组长度*加载因子时,需要进行扩充。
...
java的集合分为三大接口,分别是Collection,Map,Iterator,集合接口和类在java.util包中,此次主要介绍三大接口之一的Collection接口。
一些Collection允许有重复元素,而另一些则不允许,一些Collection是有序的,另一些则是无序的。Collection不提供接口的任何直接实现,它提供更加具体的子接口List和Set。
1.List接口
List是有序的集合,此接口的用户队列表的每一个元素的插入位置进行精确的控制,可以根据元素的整数索引访问元素,并搜索列表中的元素。
List接口实现类主要 ...
IO流即输入输出流,流是一组有顺序的,有起点和终点的字节结合,是对数据传输的总称。即数据在两设备间的传输称为流,流的本质是数据传输。
按照数据流的方向可分为:输入流和输出流
按照处理数据单位不同可以分为:字节流和字符流。
给出相应的IO结构图:
最近课程较忙,趁周末把学习一端时间的IO流整理汇总一下。拿出来给大家分享,也是对自己学习的总结。如有错误,望提醒纠正。
1.IO流之FileInputStream和FileOutputStream
2.IO流之FileWirter和FileReader
3.IO流之缓 ...
DataOutputStream数据输出流允许应用程序以适当方式将java基本数据类型写入输入流中,然后,应用程序可以使用DataInputStream数据输入流将数据读入。
1.DataOutputStream数据输出流
可以以java基本数据类型写入输出流中,
示例代码:
public static void main(String[] args) throws IOException{
OutputStream out=new FileOutputStream("L:\\test.txt");
//缓冲流
Buff ...
1.字节数组流
字 节数组输出流ByteArrayOutputStream实现了一个输出流,其中的数据被写入一个byte数组,缓冲区会随着数据的不断写入而自动增长。 关闭ByteArrayOutputStream流无效,此类中的方法在关闭该流后还可以使用,而不会产生任何IOException,数据存放在内存。
字节数组输出流ByteArrayInputStream实现了一个输入流,ByteArrayInputStream包含一个缓冲区,该缓冲区包含从流 中读取的字节,内部计数器跟踪read方法要读取的下一个字节。关闭ByteArrayInputStream流后, ...
Java平台允许我们在内存中创建可复用的Java对象,但一般情况下,只有当JVM处于运行时,这些对象才可能存在,即,这些对象的生命周期不会 比JVM的生命周期更长。但在现实应用中,就可能要求在JVM停止运行之后能 ...
打印流主要用于输出,可以根据类型很方便的进行输出。打印流分为两种
字节打印流:PrintStream
字符打印流:PrintWriter
下面来看看打印流的使用。
1.字节打印流:PrintStream
示例代码:
public class Test {
...