当前位置:首页 » 编程语言 » 指针函数java

指针函数java

发布时间: 2023-07-31 21:58:01

java里面,c里面都有回调函数,回调函数都是什么东西啊

嗯,的确都有回调函数,但是C与java中的回调实现的方法不太一样
C中的回调函数,是由指针实现的,将某个函数方法的地址赋给某个指针变量,然后直接由这个变量去调用方法。可以通过一个指针实现不同方法的调用。
java中,没有指针这一概念。所以回调函数的意义似乎也不太一样,感觉跟C比起来更像是团队开发的一种手段和方法。java中的回调是通过接口实现的,调用函数不用知道被调用的函数是如何实现的,只需要写好一个被调函数的接口声明,然后根据接口调用。至于被调用函数,只需要重载接口方法就可以让调用函数去调用...说白了就是,一个人只负责去写大的程序流程,细节的方法部分不需要写,只要留好接口声明,然后让别的人去写这个接口的重载就可以了。更适合于团队开发以及程序更新优化。
好吧我快给我自己说晕了
给你两个例子去看下,这俩写的还都比较清楚
java的:http://blog.csdn.net/allen_zhao_2012/article/details/8056665
C的:http://www.cnblogs.com/chenyuming507950417/archive/2012/01/02/2310114.html

⑵ 在java中没有指针,如何修改函数中参数的值

想通过函数改变参数的值,这点好像不可能,因为java的函数传参是值传递,没有C语言中的重命名和指针传参方法。不过也有方法:在函数中通过return值将结果返回,在通过用要改变的参数接收返回值就可以了,不过这点好像和直接赋值没多大区别,但如果函数体中赋值过程比较复杂,这个方法还是可行的。

⑶ java怎么使用类似c++的函数指针

Java通过函数式接口实现函数式编程。函数式接口也可以简写为lambda表达式。
interface FI {
void s();
}

public class Main
{
public static void main(String[] args) {
FI[] a = {
() -> System.out.println("s1"),
() -> System.out.println("s2"),
() -> System.out.println("s3"),
};
for (int i = 0; i < 3; i++) {
a[i].s();
}
}
}

⑷ JAVA中怎么处理指针参数

用JNI技术,就是把那个函数再经过Java JNI规范包裹一下,让Java可以调用包裹的函数。
比如:
/* C++ */ void foo(void* address) { printf("%ld", address); }
要调用这样的函数
/* C++ */ jobject com_test_Klass_foo(jobject arr) { foo(convertToVoidP(arr)); }
把这个函数编译成Windows DLL或者Linux so:
在Java里:
/* Java */ package com.test; class Klass { public native foo(ArrayList<?> arr); static {System.loadLibrary('dll/or/so/path');}}

⑸ java里的指针和c++指针的区别

  1. 类型:引用其值为地址的数据元素,java封装了的地址,可以转成字符串查看,长度可以不必关心。C++指针是一个装地址的变量,长度一般是计算机字长,可以认为是个int。

    2.所占内存: 引用声明时没有实体,不占空间。C++指针如果声明后会用到才会赋值,如果用不到不会分配内存。

    3.类型转换:引用的类型转换,也可能不成功,抛异,或者IDE就不能通过。C++指针只是个内存地址,指向那里,对程序来说还都是一个地址,但可能所指的地址不是程序想要的!

    4.初始值:引用初始值为java关键字null。C++指针是INT,如不初始化指针,那他的值就不是固定的了。

    5.计算:引用是不可以计算的。C++指针是INT,所以他可以计算,所以经常用指针来代替数组下标。

    6.控制:引用不可以计算,所以他只能在自己程序里,可以被控制。C++指针是内存地址,也可以计算,所以他有可能指向了一个不归自己程序使用的内存地址,对于其他程序来说是很危险的,对自己程序来说也是不容易被控制的。

    7.内存泄露:JAVA引用不会产生内存泄露。C++指针是容易产生内存泄露的,所以程序员要小心使用,及时回收。

    8.作为参数:JAVA的方法参数只是传值,引用做为参数使用时候,回给函数内引用的值的COPY,所以在函数内交换两个引用参数是没意义的,因为
    函数只交换的参数的COPY值,但在函数内改变一个引用参数的属性是有意义的,因为引用参数的COPY所引用的对象是和引用参数是同一个对象。
    C++指针做为参数给函数使用,实际上就是他所指的地址在被函数操作,所以函数内用指针参数的操作都将直接作用到指针所指向的地址(变量,对象,函数,等
    等)。

    9.操作符和声明:java里用"."。C++指针用"->" 用"*"声明指针。(似乎这条没什么用!)

    10.本质:java中的引用和C++中的指针本质上都是想通过一个叫做引用或者指针的东西,找到要操作的目标(变量 对象等),方便在程序里操作。所不同的是JAVA的办法更安全,方便些,但没有了C++的灵活,高效。

    java中的引用和C++中的指针,他们最好不要混在一起,也不要认为是一回事,只不过他们的作用有些相似,总叫人不自觉的对比。但在我们写
    JAVA程序的时候最好忘记C++的指针,写C++程序的时候,也不要老惦记着JAVA的引用。只要记得
    引用无大小,安全,不可计算,强转时要小心就好了。

请采纳。

热点内容
国开在线密码是多少 发布:2025-02-07 04:29:13 浏览:147
服务器可以用来干什么 发布:2025-02-07 04:28:39 浏览:945
资源为什么可以配置 发布:2025-02-07 04:27:38 浏览:988
数字电路存储器实验 发布:2025-02-07 04:13:29 浏览:812
在什么地方查qq密码 发布:2025-02-07 04:01:51 浏览:11
买二手笔记本电脑看哪些配置 发布:2025-02-07 04:01:48 浏览:308
我的世界里面什么服务器是建造的 发布:2025-02-07 03:51:48 浏览:189
不能连接到数据库 发布:2025-02-07 03:47:00 浏览:45
安卓手机如何设置翻屏动画 发布:2025-02-07 03:46:18 浏览:594
利基型存储器什么意思 发布:2025-02-07 03:43:58 浏览:556