JNI (java native interface)   java本地开发接口(一句话 : 就是1个 adapter)。

JNI  是一个协议  -   是用来让   java代码和C,C++ 代码可以沟通(相互调用) 的一种协议 ,JNI 扩展了java虚拟机的能力 。

Java语言提供的类库无法满足要求,且在数学运算,实时渲染的游戏上,音视频处理等方面上与C/C++相比效率稍低。

Java语言无法直接操作硬件,C/C++代码不仅能操作硬件而且还能发挥硬件最佳性能。

首先 要从最基本的开始 androd 调用 C,C++代码 肯定最起码代码不说会写,最起码是要能看懂和修改的,我把大1学的C语言也早早就忘光了哈哈。所以跟着复习点基础吧。

更深入的学习就有待以后吧 - -

C语言的基本数据类型:

         char(C语言中 byte类型也是用 char),  1
int, 4
float, 4
double, 8
signed, 4 有符号的
unsigned, 4 无符号的
long, 4- 8根据编译器的不同
short, 2

C语言的输入和 输出:

           %d  -  int
%ld – long int
%c - char
%f - float
%lf – double
%x – 十六进制输出 int 或者long int 或者short int
%o - 八进制输出
%s – 字符串 int a; //定义变量a
scanf("%d",&a); //从键盘上获取数据 放入a所在的 地址 &a
printf("a=%d\n",a); // 输出a的值

C语言的指针 - 这个是核心啦

       int p =11;        //32位操作系统 指针占 4个字节    64位占8个字
int* pp = &p; printf("P的中存放的值: %d\n",p);
printf("P的地址是: %X\n",&p); printf("PP指针变量存放的地址是: %X\n",pp);
printf("PP指针变量的大小: %d\n",sizeof(pp));
printf("PP指针变量存放的地址 - 对应的值: %d\n", *pp); int* p; //定义一个指针变量 垃圾值
指针变量如果没有赋值就不能使用 int dd;
char* c; ; // 编译错误 不符合的指针类型
c = ⅆ
//printf("*p=%d\n",*p);

指针输出图:

C语言的多级指针:

     int   bb = 10;
int* m = &bb; //m存的是 (bb的内存地址 )
int** mm = &m; //mm 存的是 m指针变量的 -地址
printf("mm的值(m的内存地址) : %X\n", *mm);
printf("(m的内存地址) 所对应的值 = bb : %d\n", **mm);
printf("bb : %d\n", bb);

数组

        int a[5] = {1,2,3,4,5};
printf("a0= %X\n", &a[0] ); // a表示的直接就是 数组a 的第一个元素所对应的内存区域
printf("a0= %X\n", &a ); printf("a0= %d\n", *(a+0));
printf("a1= %d\n", *(a+1));
printf("a2= %d\n", *(a+2));
printf("a3= %d\n", *(a+3)); //利用char类型指针 方便的表示一个字符串 char* arr1= "hello androd ndk";
printf("%s",arr1);

动态数组

 // 6.动态的创建1个数组

      int* aa = malloc(sizeof(int) * 6);    //先申请1个能够存 6个 int的空间
aa = realloc(aa , sizeof(int)* 8); //变成 能放8个的 空间大小
*aa =0;
*(aa+ 1) =1;
*(aa+ 2) =2; printf("aa1= %d\n", *(aa+1));
printf("aa2= %d", *(aa+2)); //free(aa); //用过后 不用了要自己手动释放

C语言的结构体

    //结构体 - 这个就有点类似 java中的class了
struct ll{
int age;
char* name;
char* sex;
}; struct ll s={11, "lilei","boy"};
struct ll* lss; printf("age = %d\n", s.age);
printf("name = %s\n", s.name);
printf("sex = %s\n", s.sex);
//2种方式
lss = &s;
printf("age = %d\n", lss->age);
printf("name = %s\n", lss->name);
printf("sex = %s\n", lss->sex);

联合体

    union { long i; char ii; int iii; }    pp ; 

    // 联合体的作用就是用来表示一组数据类型 数据的数据类型为这一组中的某一种数据类型
//注意 : 联合体里面的数据内容会相互覆盖 printf("pp:%d\n",sizeof(pp));
pp.ii = 'A';
printf("long=%ld\n",pp.i);
printf("char=%c\n",pp.ii);
printf("int=%d\n",pp.iii);

枚举

     enum WeekDay
{
Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday
}; //其实就是一连串的数字而已
enum WeekDayNum
{
Monday1=50,Tuesday1,Wednesday1,Thursday1,Friday1,Saturday1,Sunday1
}; enum WeekDay day = Sunday;
enum WeekDayNum dayNum = Sunday1; printf("day : %d\n",day);
printf("dayNum : %d\n",dayNum); system("pause");

typedef

     typedef int  myInt;
myInt a = 10;
printf("myInt - a: %d\n",a);

宏定义

     #define STE_LEN 80          

还有很多要复习的东西,先看这么多。

开始我的 JNI 入门吧的更多相关文章

  1. 三、Android NDK编程预备之Java jni入门创建C/C++共享库

    转自: http://www.eoeandroid.com/thread-264971-1-1.html 应网友回复,答应在两天前要出一篇创建C/C++共享库的,但由于清明节假期,跟朋友出去游玩,丢手 ...

  2. 二、Android NDK编程预备之Java jni入门Hello World

    转自:  http://www.eoeandroid.com/forum.php?mod=viewthread&tid=264543&fromuid=588695 昨天已经简要介绍了J ...

  3. Android NDK JNI 入门笔记-day04-NDK实现Hash算法

    * Android NDK JNI 入门笔记目录 * 开头 前面的学习,我们已经掌握了 NDK 开发的必备知识. 下一步就要多实践,通过创造问题并解决问题,来增加熟练度,提升经验. 日常开发中,经常会 ...

  4. jni 入门 android的C编程之旅 --->环境搭建&&helloworld

    需要进行jni的开发有一下几个条件: 1:能初步使用C/C++如果不会,请参读 谭浩强的  C编程语言 2:android应用开发已经基本入门,如果没有,请先行学习 这两个条件基本满足后,我们开始了: ...

  5. JNI 入门

    1.http://cherishlc.iteye.com/blog/1756762 Android 学习笔记--利用JNI技术在Android中调用.调试C++代码 2.http://my.eoe.c ...

  6. JNI入门

    JNI是Java Native Interface的缩写,Native指C/C++. JNI内容涉及两个方面: Java调用C,这种情况是最主要的 C调用Java,这种情况不常见 第一步:编写Java ...

  7. 使用as开发jni入门(附验证):配置ndk开发环境,配置as相关jni配置

    编写jni,生成so文件: 1.通过as内置的Android SDK下载需要使用的ndk,在系统环境变量设置相关参数 2.新建一个普通as项目,新建一个类,用来静态加载so库和书写本地native方法 ...

  8. andorid jni入门教程一之helloworld

    开发环境:windows2007, eclipse 做anroid越深发现用到底层开发的时候越多,但是我以前也没有搞过,因此现在打算好好学习学习.先从最简单的做起.正所谓万事开头难啊. 搞了近一天终于 ...

  9. Android之jni入门

    jni即java native interface,使用jni我们可以在JAVA中调用C代码,提高了效率,可以复用代码,可以灵活的应用于各种场景 怎么使用JNI 安装软件 1.NDK 用于将C代码编译 ...

  10. 【转】 Android 开发 之 JNI入门 - NDK从入门到精通

    原文网址:http://blog.csdn.net/shulianghan/article/details/18964835 NDK项目源码地址 : -- 第一个JNI示例程序下载 : GitHub  ...

随机推荐

  1. Extjs4.2.1学习笔记[更新]

    心血来潮准备学习一下Extjs,就从官方网站http://extjs.org.cn/下载了最新版本4.2.1,开始从头学习,记一下笔记,让自己能够持之以恒. 先说一下基本文件类库引用吧, 每个项目一开 ...

  2. QTP插入Output Value和插入CheckPoint,注意点

    1. 必须打开程序才能进行Output value和CheckPoint的插入. 2. 也有可能是对象获取不到,从新加载对象库. 提示如下图:

  3. Json串到json对象的转换

    JSON(JavaScript Object Notation) JS对象符号 是一种轻量级的数据交换格式 JavaScript eval()函数实现 (一) 标准格式 function JsonFo ...

  4. YII 验证功能

    YII 表单的验证可以在module目录下的xxx.php里面定义验证方法,设定需要验证的字段就行 //用户表单验证,在模型里面设置一个方法,具体表单验证规则        public functi ...

  5. 再次探究Android ListView缓存机制

    概述 虽然现在5.0后Google推出了RecycleView,但在5.0 Lollipop普及前Listview仍会被广泛使用,所以打算再次探究一下Listview的源码,了解一下Listview ...

  6. 【算法】简单选择排序 O(n^2) 不稳定的 C语言

    简单选择排序 一.算法描述 假设序列中有N个元素: 第1趟找到第1到N个元素之间最小的一个,与第1个元素进行交换 第2趟找到第2到N个元素之间最小的一个,与第2个元素进行交换 第3趟找到第3到N个元素 ...

  7. 3ds max 2016 新功能

    3ds max 2016 新功能_MCG节点编辑器 这是介绍视频下载: http://pan.baidu.com/s/1gds4wqJ

  8. 转:php使用websocket示例详解

    原文来自于:http://www.jb51.net/article/48019.htm 这篇文章主要介绍了php使用websocket示例,需要的朋友可以参考下   下面我画了一个图演示 client ...

  9. BZOJ 1016 最小生成树计数

    Description 现在给出了一个简单无向加权图.你不满足于求出这个图的最小生成树,而希望知道这个图中有多少个不同的最小生成树.(如果两颗最小生成树中至少有一条边不同,则这两个最小生成树就是不同的 ...

  10. codeforces C. Inna and Huge Candy Matrix

    http://codeforces.com/problemset/problem/400/C 题意:给你一个n*m的矩阵,然后在矩阵中有p个糖果,给你每个糖果的初始位置,然后经过x次顺时针反转,y次旋 ...