當前位置:首頁 » 編程語言 » 指針函數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 07:10:20 瀏覽:501
多角線演算法 發布:2025-02-07 07:08:56 瀏覽:273
有效提高ftp傳輸速度 發布:2025-02-07 07:06:47 瀏覽:703
寒靈之劍腳本 發布:2025-02-07 06:57:12 瀏覽:119
解壓的窗口 發布:2025-02-07 06:44:34 瀏覽:798
android身份證 發布:2025-02-07 06:36:43 瀏覽:431
python的庫在哪 發布:2025-02-07 06:30:24 瀏覽:349
帶鎖的鉛筆如何改密碼 發布:2025-02-07 06:18:05 瀏覽:165
ubuntu搭建samba伺服器 發布:2025-02-07 05:52:54 瀏覽:55
小型企業網如何配置可以互通 發布:2025-02-07 05:33:56 瀏覽:243