जावा में नया होने के नाते, मैं वर्ग और प्रकार की अवधारणाओं के बीच भ्रमित हूं । उदाहरण के लिए, वस्तु प्रकार या वर्ग"Hello World!"
से संबंधित होनी चाहिए ? या शायद दोनों? String
String
जावा में नया होने के नाते, मैं वर्ग और प्रकार की अवधारणाओं के बीच भ्रमित हूं । उदाहरण के लिए, वस्तु प्रकार या वर्ग"Hello World!"
से संबंधित होनी चाहिए ? या शायद दोनों? String
String
जवाबों:
एक वर्ग एक प्रकार है। एक इंटरफ़ेस एक प्रकार है। एक आदिम एक प्रकार है। एक सरणी एक प्रकार है।
इसलिए, प्रत्येक प्रकार या तो एक वर्ग (एक एनम स्थिरांक सहित), एक इंटरफ़ेस, एक आदिम या एक सरणी है।
प्रकार की दो अलग-अलग श्रेणियां हैं: आदिम प्रकार और संदर्भ प्रकार:
Object
। संदर्भ प्रकार वर्ग प्रकार (एनम प्रकार सहित), इंटरफ़ेस प्रकार और सरणी प्रकार हैं।डेटा के हर टुकड़े में एक प्रकार होता है जो इसकी संरचना को परिभाषित करता है, अर्थात् यह कितना मेमोरी लेता है, इसे कैसे रखा जाता है, और इससे भी महत्वपूर्ण बात यह है कि आप इसके साथ कैसे बातचीत कर सकते हैं।
आदिम प्रकार के उदाहरण:
int
float
char
boolean
वर्ग प्रकार के उदाहरण:
इंटरफ़ेस प्रकार के उदाहरण:
सरणी प्रकारों के उदाहरण:
int[]
String[]
Integer[][][]
मूल रूप से, एक चर के रूप में आप जो कुछ भी संदर्भित कर सकते हैं उसका एक प्रकार है, और कक्षाएं एक प्रकार का एक प्रकार है।
अधिक जानकारी यहाँ: http://docs.oracle.com/javase/specs/jls/se8/html/jls-4.html
TLDR - कक्षा जावा में टाइप में से एक है।
नोट - उत्तर को पूरी तरह से समझने के लिए, आपको जावा में जेनेरिक के बारे में थोड़ा विचार करना चाहिए।
अंतर को समझने के लिए आइए पहले समझते हैं कि जावा में एक प्रकार क्या है ।
जेएलएस एसई 10 के अनुसार ,
जावा प्रोग्रामिंग भाषा में दो प्रकार के प्रकार होते हैं: आदिम प्रकार ( .24.2 ) और संदर्भ प्रकार ()4.3)।
आदिम प्रकार क्या है?
a) अभिन्न प्रकार बाइट, लघु, int, और लंबे होते हैं , जिनके मान 8-बिट, 16-बिट, 32-बिट और 64-बिट पर हस्ताक्षर किए गए दो-पूरक पूर्णांक, क्रमशः और चार होते हैं, जिनके मान 16-बिट होते हैं अहस्ताक्षरित पूर्णांक UTF-16 कोड इकाइयों (UT3.1) का प्रतिनिधित्व करते हैं।
b) फ्लोटिंग-पॉइंट प्रकार फ्लोट हैं , जिनके मानों में 32-बिट IEEE 754 फ़्लोटिंग-पॉइंट नंबर और डबल शामिल हैं , जिनके मान में 64-बिट IEEE 754 फ़्लोटिंग-पॉइंट नंबर शामिल हैं।
ग) बूलियन प्रकार के दो मूल्य हैं: सच और गलत।
अब, आइये संदर्भ प्रकार क्या है?
चार प्रकार के संदर्भ प्रकार होते हैं: वर्ग प्रकार ( ) 8.1 ), इंटरफ़ेस प्रकार ( kinds9.1 ), प्रकार चर ( ables4.4 ), और सरणी प्रकार ( .110.1 )।
आइए हम एक-एक करके चर्चा करें।
यदि आप देखें कि जेएलएस में क्लास को इस तरह कैसे परिभाषित किया जाता है:
एक वर्ग घोषणा एक नया नाम संदर्भ प्रकार निर्दिष्ट करता है।
वर्ग घोषणाएँ दो प्रकार की होती हैं: सामान्य कक्षा घोषणाएँ और एनम घोषणाएँ ।
ClassDeclaration:
NormalClassDeclaration
EnumDeclaration
NormalClassDeclaration:
{ClassModifier} class TypeIdentifier [TypeParameters] [Superclass] [Superinterfaces] ClassBody
आप देखते हैं कि [TypeParameters]
, यह दिखाता है कि वर्ग प्रकार में वे सामान्य वर्ग भी शामिल हैं।
class Example<T>{
}
वर्ग प्रकार कहा जाएगा Example
संक्षेप में, एक वर्ग प्रकार हमारे एनमों, हमारे नियमित (गैर जेनेरिक) वर्गों जैसे String
आदि और हमारे सामान्य वर्गों को भी कवर करता है।
इसी तरह, मुझे उम्मीद है कि इंटरफ़ेस और सरणी प्रकार भी स्पष्ट है। सरणी प्रकार से हमारा मतलब है int[]
, String[]
आदि।
अंतिम भाग में आते हैं - वेरिएबल्स टाइप करें। वे क्या हैं ?
एक प्रकार का चर एक अयोग्य पहचानकर्ता है जिसका उपयोग कक्षा, इंटरफ़ेस, विधि और निर्माणकर्ता निकायों में एक प्रकार के रूप में किया जाता है।
आइए इसे नीचे दिए गए JLS में उदाहरण द्वारा समझते हैं।
class Test {
<T extends C & I> void test(T t) {
t.mI(); // OK
t.mCPublic(); // OK
t.mCProtected(); // OK
t.mCPackage(); // OK
}
}
आप देखते हैं कि विधि पैरामीटर में आपकी वस्तु प्रकार की है T
। हां, यह T
टाइप वेरिएबल है और इसे संदर्भ के रूप में इस्तेमाल किया जा सकता है। हाँ यही है। (इस विचित्र उदाहरण को नहीं समझ सके - जानें जावा में जेनेरिक विधि क्या है)
यह उत्तर पूरा करता है।
"टाइप" अधिक समावेशी श्रेणी है। जावा में चर तीन प्रकार के हो सकते हैं: 8 "आदिम" प्रकार जैसे इंट और फ्लोट, इंटरफेस और कक्षाएं। मान (चर के विपरीत) आदिम या वर्ग उदाहरण हो सकते हैं।
"टाइप" परिभाषित करता है कि यह किस प्रकार का डेटा है '
Ex: "हेल्लो वर्ल्ड" एक स्ट्रिंग है -> "हैलो वर्ल्ड" स्ट्रिंग प्रकार है (स्ट्रिंग int के विपरीत एक प्राइमेटिव डेटा नहीं है .. इसलिए हम कह सकते हैं "हैलो वर्ल्ड" एक स्ट्रिंग क्लास प्रकार है)
10 एक int -> 10 पूर्णांक डेटा प्रकार है।