亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java創(chuàng)建對(duì)象之顯示創(chuàng)建與隱式創(chuàng)建

 更新時(shí)間:2023年05月12日 09:27:43   作者:一一哥Sun  
在本篇文章中,小編會(huì)帶大家學(xué)習(xí)面向?qū)ο笾嘘P(guān)于對(duì)象的創(chuàng)建之顯示創(chuàng)建和隱式創(chuàng)建,其實(shí)類和對(duì)象作為面向?qū)ο笾凶罨镜?,也是最重要?需要的朋友可以參考下

一. 對(duì)象簡(jiǎn)介

1. 概念

在之前的文章中,其實(shí)已經(jīng)給大家解釋過(guò)對(duì)象的概念了。在面向?qū)ο蟮木幊桃?guī)范中,“一切皆對(duì)象”,對(duì)象就是面向?qū)ο缶幊痰暮诵摹,F(xiàn)實(shí)世界中的每一個(gè)物體都是對(duì)象!當(dāng)然,這個(gè)“對(duì)象”不是你懷里撒嬌的男/女朋友,而是指某個(gè)“類”的一個(gè)實(shí)例。

比如,“人”是一個(gè)“整體”的概念,它不是“個(gè)體”的概念,所以“人”是“類別(模板)”,而不是對(duì)象。但是在人這個(gè)“類別”中,有法外狂徒張三這個(gè)個(gè)體,張三就是一個(gè)具體的“對(duì)象”。每個(gè)對(duì)象都有自己的狀態(tài)和行為,比如張三的狀態(tài)有:身高、體重、愛(ài)好;行為有:吃、喝、piao、du、抽,坑、蒙、拐、騙、偷等。

2. 行為和特征

一個(gè)對(duì)象主要包括行為和特征(狀態(tài)、屬性)兩個(gè)核心要素。

行為:一般是動(dòng)詞,指的是方法,代表一個(gè)對(duì)象能干什么,具有哪些功能或能力,例如人可以吃飯、睡覺(jué)、說(shuō)話、工作等;在Java中,一般是用方法來(lái)表明對(duì)象所具有的行為。

特征:也可以叫做狀態(tài),一般是名詞,指的是屬性,代表一個(gè)對(duì)象有什么特點(diǎn)或參數(shù),例如每個(gè)人的姓名、年齡、性別、體重等。在Java中,一般是用變量來(lái)表明對(duì)象的狀態(tài)。

3. 對(duì)象的創(chuàng)建方式(重點(diǎn))

對(duì)象就是類的實(shí)例化,也就是根據(jù)類來(lái)創(chuàng)建一個(gè)具體的對(duì)象,就好比我們使用一個(gè)手機(jī)殼模具制造出一個(gè)具體的手機(jī)殼。接下來(lái)就給大家講一下,在Java中創(chuàng)建對(duì)象的兩種主要方式:顯式創(chuàng)建與隱式創(chuàng)建。

3.1 顯式創(chuàng)建

其中顯式創(chuàng)建對(duì)象時(shí),又有以下4種具體的創(chuàng)建方式:

  • 使用new關(guān)鍵字創(chuàng)建對(duì)象;
  • 使用newlnstance()實(shí)例方法創(chuàng)建對(duì)象;
  • 使用clone()方法創(chuàng)建對(duì)象;
  • 使用ObjectlnputStream對(duì)象的readObject()方法創(chuàng)建對(duì)象。

3.2 隱式創(chuàng)建

隱式創(chuàng)建對(duì)象主要是包括以下幾種方式:

  • 給String字符串變量賦值;
  • “+”號(hào)拼接多個(gè)字符串;
  • JVM虛擬機(jī)加載類時(shí)隱式創(chuàng)建類對(duì)象。

接下來(lái)分別給大家講解一下這幾種創(chuàng)建對(duì)象的方式。受限于篇幅,今天主要是給大家講解通過(guò)new關(guān)鍵字創(chuàng)建對(duì)象的方式,其他的方式我們以后再細(xì)講。

二. 顯式創(chuàng)建

1. 使用new關(guān)鍵字創(chuàng)建對(duì)象

1.1 new簡(jiǎn)介

我們知道,new是"新的"的意思。在Java中,new是一個(gè)關(guān)鍵字,它用于創(chuàng)建一個(gè)新的類實(shí)例,即新的類對(duì)象。所以在Java中,創(chuàng)建新對(duì)象也可以叫做實(shí)例化對(duì)象。 對(duì)于引用類型來(lái)說(shuō),如果該類型沒(méi)有進(jìn)行實(shí)例化,也就是沒(méi)有進(jìn)行對(duì)象的創(chuàng)建,那么該對(duì)象的屬性、方法等在內(nèi)存中都是不存在的。只有使用new關(guān)鍵字創(chuàng)建了對(duì)象之后,這個(gè)對(duì)象在內(nèi)存中才會(huì)存在,才能使用。

1.2 new作用

當(dāng)一個(gè)引用類型的變量被聲明以后,如果沒(méi)有進(jìn)行初始化,那么它就不指向任何對(duì)象,我們也就沒(méi)辦法使用該變量。所以我們就可以通過(guò)new關(guān)鍵字對(duì)該變量進(jìn)行初始化,具體地來(lái)說(shuō),new關(guān)鍵字的作用如下:

  • 為新對(duì)象及對(duì)象中的各實(shí)例變量分配內(nèi)存空間;
  • 將新對(duì)象中的各實(shí)例變量自動(dòng)初始化成對(duì)應(yīng)類型的默認(rèn)值;
  • 初始化對(duì)象,并給各實(shí)例變量賦予正確的初始值;
  • 調(diào)用引用類型對(duì)應(yīng)的構(gòu)造方法;
  • 返回對(duì)象的引用。

1.3 基本語(yǔ)法

new關(guān)鍵字創(chuàng)建對(duì)象的語(yǔ)法格式如下:

類名 對(duì)象名 = new 類名();

1.4 代碼案例

為了讓大家更好地理解new的用法,給大家設(shè)計(jì)了如下代碼案例。

/**
 * @author 
 */
public class Demo01 {
    public static void main(String[] args) {
	// new關(guān)鍵字
	Person p1 = new Person();
    }
}

在這段簡(jiǎn)單的代碼中,Person p1=new Person();,前半部分Person p1,表示是在內(nèi)存中分配一個(gè)Person類型的變量p1。后半部分new Person();,表示利用new關(guān)鍵字和構(gòu)造方法來(lái)創(chuàng)建一個(gè)Person類型的對(duì)象,Person()是構(gòu)造方法的名字。當(dāng)構(gòu)造方法執(zhí)行完,這個(gè)Person類型的對(duì)象就建造出來(lái)了,也就為其分配了對(duì)應(yīng)的內(nèi)存。

雖然p1是引用類型的變量,但p1自身會(huì)存儲(chǔ)在棧內(nèi)存中。而使用new關(guān)鍵字創(chuàng)造出來(lái)的對(duì)象,則被存儲(chǔ)在堆內(nèi)存(heap)中。且在new關(guān)鍵字真正創(chuàng)建出引用類型的對(duì)象之后,會(huì)把這個(gè)對(duì)象在內(nèi)存中的地址返回給p1變量進(jìn)行引用,這樣我們就可以通過(guò)調(diào)用p1找到對(duì)內(nèi)存中的Person對(duì)象。

所以Person p1=new Person();這行代碼的作用就是,把Person對(duì)象在內(nèi)存中的地址 賦值 給變量p1。在Java中,我們可以把p1變量叫做引用變量,或者簡(jiǎn)稱為引用。又因?yàn)閜1變量中存放的是引用類型的內(nèi)存地址值,我們也可以把p1的值叫做引用地址。

2. newlnstance()方法

除了使用new關(guān)鍵字創(chuàng)建對(duì)象之外,我們還可以使用newInstance()方法創(chuàng)建對(duì)象。該方法是java.lang.Class 或 java.lang.reflect.Constuctor類中的實(shí)例方法,其語(yǔ)法格式如下:

java.lang.Class 類對(duì)象名稱 = java.lang.Class.forName(要實(shí)例化的類全稱);

類名 對(duì)象名 = (類名)Class類對(duì)象名稱.newInstance();

我們?cè)谡{(diào)用java.lang.Class類中的forName()方法時(shí),需要將待實(shí)例化類的全限定名(如 com.yyg.Person)作為參數(shù)傳遞進(jìn)來(lái),然后再調(diào)用 java.lang.Class類對(duì)象的newInstance()方法創(chuàng)建對(duì)象。

/** 
 * @author 
 */
public class Demo01 {
    public static void main(String[] args) {
	//newInstance()方法創(chuàng)建對(duì)象
	try {
            Class<?> clazz = Class.forName("com.yyg.Person");
            Person p2 = (Person) clazz.newInstance();
	} catch (ClassNotFoundException | InstantiationException | IllegalAccessException e) {
            e.printStackTrace();
	}
    }
}

因?yàn)檫@一塊的內(nèi)容涉及到了反射的知識(shí)點(diǎn),后面會(huì)專門講解反射,這一塊的內(nèi)容大家先有所了解即可。

3. clone()方法

第三種顯式創(chuàng)建對(duì)象的方法,就是利用實(shí)例對(duì)象的clone()方法進(jìn)行對(duì)象的復(fù)制,也可以創(chuàng)建一個(gè)新對(duì)象出來(lái)。clone()方法創(chuàng)建對(duì)象時(shí),不會(huì)調(diào)用類的構(gòu)造方法,它會(huì)創(chuàng)建一個(gè)復(fù)制的對(duì)象,這個(gè)對(duì)象和原來(lái)的對(duì)象具有不同的內(nèi)存地址,但它們的屬性值卻相同。

另外clone()方法是Java Object對(duì)象中被protected修飾的方法,可供子類調(diào)用以實(shí)現(xiàn)子類的克隆邏輯,但不能直接調(diào)用。并且我們使用該方法創(chuàng)建對(duì)象時(shí),還要求待實(shí)例化的類必須實(shí)現(xiàn) java.lang.Cloneable接口,否則會(huì)拋出 java.lang.CloneNotSupportedException異常,比較麻煩,所以該方法并不常用。 clone()方法創(chuàng)建對(duì)象的語(yǔ)法格式如下:

類名 對(duì)象名 = (類名)已創(chuàng)建好的類對(duì)象名.clone();

4. readObject()方法

我們還可以使用java.io.ObjectlnputStream對(duì)象的readObject()方法來(lái)創(chuàng)建一個(gè)新對(duì)象。ObjectlnputStream是IO流中的內(nèi)容,以后會(huì)詳細(xì)講解Java中的IO流,大家對(duì)此先有一個(gè)大致的印象即可。

5. 小結(jié)

在上面給大家提到了4種顯式創(chuàng)建對(duì)象的方式,在此我們進(jìn)行一個(gè)小小的總結(jié):

  • new關(guān)鍵字是最常用的創(chuàng)建對(duì)象方式;
  • 使用 new關(guān)鍵字 或 Class對(duì)象的newInstance()方法 創(chuàng)建對(duì)象時(shí),都會(huì)調(diào)用類的構(gòu)造方法;
  • 使用 Class類的newInstance()方法 創(chuàng)建對(duì)象時(shí),會(huì)調(diào)用類的默認(rèn)構(gòu)造方法,即無(wú)參構(gòu)造方法;
  • 使用 Object類的clone()方法 創(chuàng)建對(duì)象時(shí),不會(huì)調(diào)用此類的構(gòu)造方法,只會(huì)創(chuàng)建一個(gè)復(fù)制出的對(duì)象,該對(duì)象和原來(lái)的對(duì)象具有不同的內(nèi)存地址,但它們的屬性值相同;
  • 如果類沒(méi)有實(shí)現(xiàn)Cloneable接口卻調(diào)用它的clone()方法,會(huì)拋出 java.lang.CloneNotSupportedException異常。

三. 隱式創(chuàng)建

在Java中,除了可以顯式地創(chuàng)建對(duì)象之外,還可以隱式地創(chuàng)建對(duì)象。隱式創(chuàng)建對(duì)象主要是通過(guò)以下幾種方式:

  • 給String字符串變量賦值;
  • “+”號(hào)拼接多個(gè)字符串;
  • JVM虛擬機(jī)加載類時(shí)隱式創(chuàng)建類對(duì)象。

1. 給String字符串變量賦值

我們經(jīng)常給一個(gè)字符串變量賦值,如下所示:

String str = "Hello,壹哥";

上面的str變量,其實(shí)就是一個(gè)String對(duì)象,該對(duì)象會(huì)由JVM虛擬機(jī)隱式地創(chuàng)建出來(lái)。

2. “+”號(hào)拼接多個(gè)字符串

我們知道,“+”運(yùn)算符有兩個(gè)基本作用:加法運(yùn)算和字符串拼接。當(dāng)進(jìn)行字符串拼接時(shí),其運(yùn)算的結(jié)果是一個(gè)新的 String對(duì)象,示例如下:

String str1 = "Hello";
String str2 = "一一哥";
String str3 = str1+str2;    // str3引用一個(gè)新的String對(duì)象

通過(guò)上面的語(yǔ)句,JVM會(huì)隱式地創(chuàng)建出第3個(gè)String對(duì)象。

3. JVM虛擬機(jī)加載類時(shí)隱式創(chuàng)建類對(duì)象

當(dāng)Java的JVM虛擬機(jī)加載一個(gè)類時(shí),會(huì)隱式地創(chuàng)建出一個(gè)可以描述這個(gè)類的Class實(shí)例對(duì)象。類的加載是指把類的.class字節(jié)碼文件讀到內(nèi)存中,把它存放到運(yùn)行時(shí)數(shù)據(jù)區(qū)的方法區(qū)中,然后會(huì)在堆區(qū)創(chuàng)建一個(gè) java.lang.Class對(duì)象,用來(lái)封裝類在方法區(qū)內(nèi)的數(shù)據(jù)結(jié)構(gòu)。

4. 小結(jié)

無(wú)論我們是釆用顯式或是隱式方式創(chuàng)建對(duì)象,Java虛擬機(jī)都會(huì)在創(chuàng)建對(duì)象時(shí)包含以下步驟:

  • 給對(duì)象分配內(nèi)存;
  • 將對(duì)象的實(shí)例變量自動(dòng)初始化成該變量類型的默認(rèn)值;
  • 初始化對(duì)象,給實(shí)例變量賦予正確的初始值。

四. 對(duì)象的使用

1. 簡(jiǎn)介

我們?cè)谕ㄟ^(guò)一系列方式創(chuàng)建好對(duì)象之后,那么這個(gè)對(duì)象該怎么用呢?我們知道對(duì)象中有狀態(tài)和行為兩個(gè)核心要素,那怎么來(lái)調(diào)用一個(gè)對(duì)象的行為和狀態(tài)呢?Java中,一個(gè)普通的實(shí)例對(duì)象調(diào)用它的行為和狀態(tài),基本的語(yǔ)法格式如下:

//調(diào)用狀態(tài)

對(duì)象.屬性名;

//調(diào)用方法

對(duì)象.方法名();

接下來(lái)我們通過(guò)一個(gè)小案例給大家展示一下。

2. 使用

/** 
* @author 
*/
public class Demo02 {
    public static void main(String[] args) {
        // 對(duì)象的使用
	//先創(chuàng)建一個(gè)對(duì)象
	Person p1=new Person();
		
	//調(diào)用對(duì)象的屬性(該屬性不能是私有的,否則別的類中無(wú)法看到)--狀態(tài).
	String name = p1.name;
		
	//調(diào)用對(duì)象的方法
	p1.eat();
	p1.speak("一一哥", "男", 18);
    }
}

大家要注意,當(dāng)我們?cè)贏類中調(diào)用B類對(duì)象時(shí),B類對(duì)象的屬性或方法不能是私有的,否則在A類中會(huì)無(wú)法看到該屬性或方法。

五. 創(chuàng)建對(duì)象的內(nèi)存分析(重點(diǎn))

1. 內(nèi)存簡(jiǎn)介

Java程序在運(yùn)行時(shí),操作系統(tǒng)會(huì)給程序分配三塊主要的內(nèi)存空間:棧內(nèi)存、堆內(nèi)存、方法區(qū)。

  • 棧內(nèi)存: 棧內(nèi)存也叫做虛擬機(jī)棧,可以存放基本類型的數(shù)據(jù)和引用類型的地址,主要是局部變量。 這些 局部變量存放了編譯期可知長(zhǎng)度的各種基本數(shù)據(jù)類型和對(duì)象引用,方法執(zhí)行完就會(huì)自動(dòng)釋放。棧內(nèi)存具有先進(jìn)后出、占用空間比較小、存取速度相對(duì)較快的特點(diǎn)。
  • 堆內(nèi)存: 堆內(nèi)存中可以存放各對(duì)象實(shí)例(所有new出來(lái)的對(duì)象都是)和數(shù)組都在堆中存放,即堆中存放的是引用類型的實(shí)際數(shù)據(jù)。 堆內(nèi)存占用的空間比較大,存取速度相對(duì)較慢。
  • 方法區(qū): 方法區(qū)主要用于存儲(chǔ)類信息、常量、靜態(tài)變量,靜態(tài)代碼塊、即時(shí)編譯器(JIT Compiler)編譯后的代碼數(shù)據(jù)等 , 簡(jiǎn)單言之就是存儲(chǔ)類的結(jié)構(gòu)信息。類的結(jié)構(gòu)信息包括類的名稱、方法信息、字段信息等。在方法區(qū)中,有一塊空間叫做常量池(串池),用來(lái)存放字符串常量。還有一塊空間叫做靜態(tài)區(qū),用來(lái)存儲(chǔ)靜態(tài)變量等靜態(tài)數(shù)據(jù)。但在JDK 7之后,常量池、靜態(tài)區(qū)作為堆中的一個(gè)子部分,方法區(qū)的概念被弱化。

2. 內(nèi)存分析

/**
* @author 
*/
public class Demo02 {
    public static void main(String[] args) {
        // 對(duì)象的使用
	//先創(chuàng)建一個(gè)Person對(duì)象
	Person p1=new Person();
        p1.name="一一哥";
        p1.age=18;
        p1.sex="男";

        //創(chuàng)建p2對(duì)象
        Person p2=new Person();
    }
}

在上述代碼中,我們定義的Person類型p1變量實(shí)際上是一個(gè)引用,它會(huì)被存放在棧內(nèi)存中,而存放實(shí)際數(shù)據(jù)的Person對(duì)象則存放在堆內(nèi)存中。如下圖所示:

根據(jù)上面的內(nèi)存分析圖可知:

  • Person類中包含了name、age、sex三個(gè)屬性,它們分別是String、int、String類型。我們知道,它們的默認(rèn)值分別是null、0、null。
  • 我們創(chuàng)建一個(gè)p1對(duì)象之后,p1會(huì)被存放在棧區(qū),然后p1會(huì)通過(guò)堆中Person對(duì)象的內(nèi)存地址,去找到該對(duì)象被實(shí)例化的內(nèi)容(即name、age、sex等)。
  • Java代碼中剛創(chuàng)建出來(lái)的對(duì)象屬性都是采用默認(rèn)值(null、0、null),等我們通過(guò)"對(duì)象.屬性"的方式對(duì)屬性進(jìn)行重新賦值后,堆內(nèi)存中存儲(chǔ)的才是賦值后的內(nèi)容。
  • 我們創(chuàng)建的另一個(gè)對(duì)象p2,p2依然在棧區(qū),但并沒(méi)有對(duì)p2進(jìn)行初始化,所以p2的屬性在堆內(nèi)存中都是默認(rèn)值。
  • 堆內(nèi)存中的每一個(gè)對(duì)象,都有一個(gè)獨(dú)立的內(nèi)存空間。

六. 結(jié)語(yǔ)

至此,就給大家把Java的對(duì)象介紹完畢了,現(xiàn)在你知道幾種創(chuàng)建對(duì)象的方式呢?最后再跟大家說(shuō)一下,不管我們用哪種方式創(chuàng)建出來(lái)的對(duì)象,每個(gè)對(duì)象都是相互獨(dú)立的。這些不同的對(duì)象在內(nèi)存中會(huì)占有獨(dú)立的內(nèi)存地址,且每個(gè)對(duì)象都具有自己的生命周期。當(dāng)一個(gè)對(duì)象的生命周期結(jié)束時(shí),對(duì)象就變成了垃圾,這些垃圾對(duì)象會(huì)被JVM虛擬機(jī)自帶的GC垃圾回收機(jī)制來(lái)處理。

以上就是Java創(chuàng)建對(duì)象之顯示創(chuàng)建與隱式創(chuàng)建的詳細(xì)內(nèi)容,更多關(guān)于Java創(chuàng)建對(duì)象的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Spring Boot如何讀取自定義外部屬性詳解

    Spring Boot如何讀取自定義外部屬性詳解

    這篇文章主要給大家介紹了關(guān)于Spring Boot如何讀取自定義外部屬性的相關(guān)資料,這個(gè)功能實(shí)現(xiàn)介紹的很詳細(xì),需要的朋友可以參考下
    2021-05-05
  • 如何動(dòng)態(tài)替換Spring容器中的Bean

    如何動(dòng)態(tài)替換Spring容器中的Bean

    這篇文章主要介紹了如何動(dòng)態(tài)替換Spring容器中的Bean,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • Spring 整合多個(gè)配置文件的方法

    Spring 整合多個(gè)配置文件的方法

    在一些大型應(yīng)用中,可能存在多個(gè)配置文件,這篇文章給大家介紹了Spring 整合多個(gè)配置文件的方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,感興趣的朋友一起看看吧
    2018-05-05
  • 自帶IDEA插件的阿里開(kāi)源診斷神器Arthas線上項(xiàng)目BUG調(diào)試

    自帶IDEA插件的阿里開(kāi)源診斷神器Arthas線上項(xiàng)目BUG調(diào)試

    這篇文章主要為大家介紹了自帶IDEA插件阿里開(kāi)源診斷神器Arthas線上項(xiàng)目BUG調(diào)試,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • 簡(jiǎn)單了解Java編程中線程的創(chuàng)建與守護(hù)線程

    簡(jiǎn)單了解Java編程中線程的創(chuàng)建與守護(hù)線程

    這篇文章主要介紹了Java編程中線程的創(chuàng)建與守護(hù)線程,是Java多線程并發(fā)編程的基礎(chǔ),需要的朋友可以參考下
    2015-11-11
  • commons fileupload實(shí)現(xiàn)文件上傳的實(shí)例代碼

    commons fileupload實(shí)現(xiàn)文件上傳的實(shí)例代碼

    這篇文章主要介紹了commons fileupload實(shí)現(xiàn)文件上傳的實(shí)例代碼,包括文件上傳的原理分析等相關(guān)知識(shí)點(diǎn),本文給大家介紹的非常詳細(xì),具有參考借鑒價(jià)值,感興趣的朋友一起看看吧
    2016-10-10
  • java 中二分法查找的應(yīng)用實(shí)例

    java 中二分法查找的應(yīng)用實(shí)例

    這篇文章主要介紹了java 中二分法查找的應(yīng)用實(shí)例的相關(guān)資料,希望通過(guò)本文大家能掌握二分法的使用方法,需要的朋友可以參考下
    2017-09-09
  • 每日六道java新手入門面試題,通往自由的道路--多線程

    每日六道java新手入門面試題,通往自由的道路--多線程

    這篇文章主要為大家分享了最有價(jià)值的6道多線程面試題,涵蓋內(nèi)容全面,包括數(shù)據(jù)結(jié)構(gòu)和算法相關(guān)的題目、經(jīng)典面試編程題等,對(duì)hashCode方法的設(shè)計(jì)、垃圾收集的堆和代進(jìn)行剖析,感興趣的小伙伴們可以參考一下
    2021-06-06
  • 在springboot中使用AOP進(jìn)行全局日志記錄

    在springboot中使用AOP進(jìn)行全局日志記錄

    這篇文章主要介紹就在springboot中使用AOP進(jìn)行全局日志記錄,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • 淺談@FeignClient中name和value屬性的區(qū)別

    淺談@FeignClient中name和value屬性的區(qū)別

    這篇文章主要介紹了@FeignClient中name和value屬性的區(qū)別,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07

最新評(píng)論