最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java中`void`和`Void`的區(qū)別和特性詳解

 更新時(shí)間:2026年03月13日 10:47:40   作者:李少兄  
這篇文章主要介紹了Java中`void`和`Void`的區(qū)別和特性的相關(guān)資料,void一般用于函數(shù),表示沒(méi)有返回結(jié)果,是java的一個(gè)關(guān)鍵字,Void是一種類型,例如給Void引用賦值null,不可以繼承與實(shí)例化,需要的朋友可以參考下

前言

在 Java 編程中,voidVoid 是兩個(gè)容易混淆的概念。雖然它們看起來(lái)相似,但實(shí)際上有著截然不同的用途和特性。

void關(guān)鍵字

定義

  • void 是 Java 中的一個(gè)關(guān)鍵字。
  • 用于方法聲明中,表示該方法不返回任何值。

用途

  • 當(dāng)一個(gè)方法執(zhí)行某些操作(如打印、修改數(shù)據(jù)等),但不需要返回結(jié)果時(shí),可以使用 void 作為返回類型。
  • 方法內(nèi)部可以有任意數(shù)量的語(yǔ)句,但不能有 return 語(yǔ)句返回一個(gè)值。不過(guò),可以使用 return; 來(lái)提前結(jié)束方法。

示例

public class Example {
    public static void main(String[] args) {
        // 調(diào)用一個(gè) void 方法
        printHello();
    }

    // 定義一個(gè) void 方法
    public static void printHello() {
        System.out.println("Hello, World!");
    }
}

在這個(gè)例子中,printHello 方法沒(méi)有任何返回值,它只是簡(jiǎn)單地打印一條消息。

Void類

定義

  • Voidjava.lang 包中的一個(gè)類。
  • 它是 void 關(guān)鍵字的引用類型包裝類。
  • Void 類是一個(gè)不可實(shí)例化的類(即不能創(chuàng)建 Void 對(duì)象)。
  • Void 類只有一個(gè)靜態(tài)字段 NULL,通常用來(lái)表示沒(méi)有實(shí)際的 Void 值。

用途

  • 主要用于泛型(Generics)中,因?yàn)榉盒筒荒苤苯邮褂没绢愋突?void 關(guān)鍵字。
  • 在某些情況下,特別是使用函數(shù)式接口(如 ConsumerSupplier)時(shí),Void 可以用來(lái)表示沒(méi)有返回值的情況。

示例

泛型中的使用

import java.util.ArrayList;
import java.util.List;

public class VoidExample {
    public static void main(String[] args) {
        // 創(chuàng)建一個(gè) List<Void>,但實(shí)際上我們不會(huì)真正存儲(chǔ) Void 實(shí)例
        List<Void> voidList = new ArrayList<>();
        
        // 嘗試添加 null 到列表中
        voidList.add(null);
        
        // 打印列表
        for (Void v : voidList) {
            System.out.println(v);  // 輸出: null
        }
    }
}

在這個(gè)例子中,雖然我們創(chuàng)建了一個(gè) List<Void>,但由于 Void 類不可實(shí)例化,我們只能將 null 添加到列表中。

函數(shù)式接口中的使用

import java.util.function.Consumer;

public class VoidExample {
    public static void main(String[] args) {
        // 使用 Consumer<Void> 表示一個(gè)消費(fèi)者,它接受一個(gè) Void 類型的參數(shù)
        Consumer<Void> consumer = (v) -> {
            System.out.println("This is a consumer that takes no input.");
        };
        
        // 傳遞 null 作為 Void 類型的值
        consumer.accept(null);
    }
}

在這個(gè)例子中,Consumer<Void> 表示一個(gè)消費(fèi)者,它接受一個(gè) Void 類型的參數(shù)。由于 Void 類不可實(shí)例化,我們傳遞 null 作為參數(shù)。

獲取Void的唯一實(shí)例

public class VoidExample {
    public static void main(String[] args) {
        // 獲取 Void 的唯一實(shí)例
        Void aVoid = null;  // 或者 Void aVoid = Void.TYPE;
        
        // 打印 Void 實(shí)例
        System.out.println(aVoid);  // 輸出: null
    }
}

在這個(gè)例子中,Void 類有一個(gè)靜態(tài)字段 NULL,我們可以使用 nullVoid.TYPE 來(lái)表示這個(gè)唯一的實(shí)例。

實(shí)際代碼例子

使用R<Void>的刪除操作

假設(shè)你有一個(gè) RESTful API 控制器,其中包含一個(gè)刪除記錄的方法:

import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class WarehouseController {

    private final IMmsWarehouseDetailedAppService iMmsWarehouseDetailedAppService;

    public WarehouseController(IMmsWarehouseDetailedAppService iMmsWarehouseDetailedAppService) {
        this.iMmsWarehouseDetailedAppService = iMmsWarehouseDetailedAppService;
    }

    @DeleteMapping("/deleteById/{detailId}")
    public R<Void> deleteById(@PathVariable Long detailId) {
        boolean success = iMmsWarehouseDetailedAppService.deleteById(detailId);
        return toAjax(success);
    }

    public static <T> R<T> toAjax(boolean success) {
        if (success) {
            return new R<>(200, "操作成功", null);
        } else {
            return new R<>(500, "操作失敗", null);
        }
    }
}

// 自定義響應(yīng)類
class R<T> {
    private int code;
    private String message;
    private T data;

    public R(int code, String message, T data) {
        this.code = code;
        this.message = message;
        this.data = data;
    }

    // Getter 和 Setter
    public int getCode() {
        return code;
    }

    public void setCode(int code) {
        this.code = code;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public T getData() {
        return data;
    }

    public void setData(T data) {
        this.data = data;
    }
}

解析

  1. @DeleteMapping 注解

    • @DeleteMapping 用于映射 HTTP DELETE 請(qǐng)求到特定的處理方法。
    • /deleteById/{detailId} 是請(qǐng)求路徑,其中 {detailId} 是路徑變量,表示要?jiǎng)h除的記錄的 ID。
  2. 方法簽名

    • public R<Void> deleteById(@PathVariable Long detailId)
      • R<Void> 表示返回一個(gè)泛型類型 R,其泛型參數(shù)是 Void。這意味著該方法不會(huì)返回具體的業(yè)務(wù)數(shù)據(jù),只會(huì)返回一個(gè)狀態(tài)信息。
      • @PathVariable Long detailId 表示從 URL 路徑中提取 detailId 參數(shù),并將其作為方法參數(shù)傳遞。
  3. 方法體

    • return toAjax(iMmsWarehouseDetailedAppService.deleteById(detailId));
      • iMmsWarehouseDetailedAppService.deleteById(detailId) 調(diào)用服務(wù)層的方法來(lái)刪除指定 ID 的記錄。
      • toAjax(...) 是一個(gè)工具方法,將服務(wù)層的返回結(jié)果轉(zhuǎn)換為一個(gè) R 類型的對(duì)象,通常包含成功或失敗的狀態(tài)碼和消息。
  4. 自定義響應(yīng)類 R<T>

    • R<T> 是一個(gè)泛型類,用于封裝 API 的響應(yīng)數(shù)據(jù)。
    • 它包含三個(gè)屬性:code(狀態(tài)碼)、message(消息)和 data(數(shù)據(jù))。
    • data 屬性的類型是泛型 T,當(dāng) TVoid 時(shí),表示該方法不返回具體的業(yè)務(wù)數(shù)據(jù)。
  5. 工具方法 toAjax

    • toAjax 是一個(gè)工具方法,用于將布爾值轉(zhuǎn)換為 R 對(duì)象。
    • 如果刪除成功,返回 R<Void> 對(duì)象,包含成功狀態(tài)碼和消息;否則,返回失敗狀態(tài)碼和消息。

總結(jié)

  • void 是一個(gè)關(guān)鍵字,用于方法聲明,表示該方法不返回任何值。
  • Void 是一個(gè)類,主要用于泛型和某些特定場(chǎng)景下表示沒(méi)有返回值的情況。它是一個(gè)不可實(shí)例化的類,只有一個(gè)靜態(tài)字段 NULL。

void

  • 定義void 是 Java 中的一個(gè)關(guān)鍵字。
  • 用途:用于方法聲明,表示該方法不返回任何值。
  • 通俗理解void 就像一個(gè)“空盒子”,表示這個(gè)方法執(zhí)行完之后不會(huì)給你任何東西。它只是做一些事情,比如打印信息、修改數(shù)據(jù)等,但不會(huì)返回任何結(jié)果。

Void

  • 定義Voidjava.lang 包中的一個(gè)類。
  • 用途:主要用于泛型中,因?yàn)榉盒筒荒苤苯邮褂没绢愋突?void 關(guān)鍵字。
  • 通俗理解Void 是一個(gè)特殊的“盒子”,雖然它里面什么也沒(méi)有(不可實(shí)例化),但它可以用來(lái)表示“沒(méi)有具體的返回值”。在某些情況下,特別是在使用泛型時(shí),我們需要一個(gè)占位符來(lái)表示沒(méi)有返回值的情況,這時(shí)就可以使用 Void。

通俗對(duì)比

  • void:方法執(zhí)行完后沒(méi)有任何返回值,就像你做了一件事但沒(méi)有得到任何回報(bào)。
  • Void:方法可能有返回值,但返回的是一個(gè)特殊的對(duì)象,表示“沒(méi)有具體的業(yè)務(wù)數(shù)據(jù)”,但它仍然可以包含一些狀態(tài)信息(如成功或失敗的狀態(tài)碼和消息)。

附:Java 方法中加void和不加void的區(qū)別

只要記住void即無(wú)返回值就OK了,如果不用void,那么這個(gè)地方一定是被一個(gè)其它的數(shù)據(jù)類型所替代,比如下面用的是String,當(dāng)然也可能是int或者Boolean等等,那么此時(shí)我們下面就要有一個(gè)return返回值。

package com.Thursday.one;
 
public class Variable {
 
	
	public static void speaker(){
		System.out.println("你好");
	}
	public static String Talk(){
		return "hello";
	}
	public static void main(String[] args) {
		speaker();
		Talk();
		String aString = Talk();
		System.out.println(aString);
	}
}

到此這篇關(guān)于Java中void和Void的區(qū)別和特性的文章就介紹到這了,更多相關(guān)Java void和Void區(qū)別內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • mybatis實(shí)現(xiàn)一對(duì)一關(guān)聯(lián)映射實(shí)例代碼

    mybatis實(shí)現(xiàn)一對(duì)一關(guān)聯(lián)映射實(shí)例代碼

    這篇文章主要給大家介紹了關(guān)于mybatis實(shí)現(xiàn)一對(duì)一關(guān)聯(lián)映射的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-11-11
  • MyBatisPlus標(biāo)準(zhǔn)數(shù)據(jù)層CRUD的使用詳解

    MyBatisPlus標(biāo)準(zhǔn)數(shù)據(jù)層CRUD的使用詳解

    這篇文章主要介紹了MyBatisPlus標(biāo)準(zhǔn)數(shù)據(jù)層CRUD的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • Java零基礎(chǔ)入門數(shù)組

    Java零基礎(chǔ)入門數(shù)組

    數(shù)組對(duì)于每一門編程語(yǔ)言來(lái)說(shuō)都是重要的數(shù)據(jù)結(jié)構(gòu)之一,當(dāng)然不同語(yǔ)言對(duì)數(shù)組的實(shí)現(xiàn)及處理也不盡相同。Java?語(yǔ)言中提供的數(shù)組是用來(lái)存儲(chǔ)固定大小的同類型元素
    2022-04-04
  • java時(shí)間格式的簡(jiǎn)單整理

    java時(shí)間格式的簡(jiǎn)單整理

    這篇文章主要介紹了java時(shí)間格式的簡(jiǎn)單整理,文中通過(guò)示例介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考一下
    2019-06-06
  • SpringBoot集成redisson全過(guò)程

    SpringBoot集成redisson全過(guò)程

    本文主要介紹了如何集成Redisson,包括環(huán)境配置、引入Redisson的依賴、添加Redisson的配置類以及Redisson的常見(jiàn)使用方法,在類中注入Redisson后,可以獲取鎖對(duì)象和使用,這些都是作者的個(gè)人經(jīng)驗(yàn),供讀者參考
    2024-10-10
  • SpringBoot自動(dòng)裝配原理及過(guò)程解讀

    SpringBoot自動(dòng)裝配原理及過(guò)程解讀

    文章解析SpringBoot自動(dòng)裝配機(jī)制,結(jié)合SPI源碼分析與手寫Starter實(shí)踐,闡述如何通過(guò)ServiceLoader和SpringFactoriesLoader實(shí)現(xiàn)服務(wù)發(fā)現(xiàn)及動(dòng)態(tài)配置加載,并利用條件注解@Conditional進(jìn)行智能過(guò)濾,最終指導(dǎo)開(kāi)發(fā)者自定義Starter并配置屬性提示
    2025-09-09
  • Java?AQS中ReentrantLock條件鎖的使用

    Java?AQS中ReentrantLock條件鎖的使用

    ReentrantLock繼承了Lock接口,?lock方法實(shí)際上是調(diào)用了Sync的子類NonfairSync(非公平鎖)的lock方法。ReentrantLock的真正實(shí)現(xiàn)在他的兩個(gè)內(nèi)部類NonfairSync和FairSync中,默認(rèn)實(shí)現(xiàn)是非公平鎖
    2023-02-02
  • Springboot如何讀取resources下的json配置文件

    Springboot如何讀取resources下的json配置文件

    這篇文章主要介紹了Springboot如何讀取resources下的json配置文件問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • Java Spring AOP詳解

    Java Spring AOP詳解

    這篇文章主要介紹了Java的Spring框架中的AOP實(shí)現(xiàn)實(shí)例,AOP面向切面編程其實(shí)也可以被看作是一個(gè)設(shè)計(jì)模式去規(guī)范項(xiàng)目的結(jié)構(gòu),需要的朋友可以參考下
    2021-09-09
  • 這一次搞懂SpringMVC原理說(shuō)明

    這一次搞懂SpringMVC原理說(shuō)明

    這篇文章主要介紹了這一次搞懂SpringMVC原理說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-08-08

最新評(píng)論

弥渡县| 盖州市| 肇东市| 磴口县| 根河市| 澎湖县| 银川市| 江门市| 武邑县| 安宁市| 万荣县| 达拉特旗| 枣庄市| 隆尧县| 新和县| 桂阳县| 海淀区| 怀仁县| 庆元县| 平山县| 舒兰市| 连城县| 前郭尔| 阿拉尔市| 阳谷县| 鄱阳县| 鄂尔多斯市| 九龙县| 澜沧| 乡宁县| 开平市| 邓州市| 九江县| 涟源市| 高碑店市| 深圳市| 广宁县| 东辽县| 泸水县| 金坛市| 马关县|