CodeGym /Java Course /मॉड्यूल 1 /जावा में आदिम प्रकार

जावा में आदिम प्रकार

मॉड्यूल 1
स्तर 12 , सबक 0
उपलब्ध

1. आदिम प्रकारों की सूची

जावा में 8 मूल आदिम प्रकार हैं। उन्हें आदिम कहा जाता है क्योंकि इस प्रकार के मान ऑब्जेक्ट नहीं होते हैं और सीधे वेरिएबल्स के अंदर संग्रहीत होते हैं।

यहाँ इन प्रकारों के बारे में कुछ संक्षिप्त जानकारी वाली तालिका दी गई है:

प्रकार
बाइट्स में आकार
मूल्य पहुंच डिफ़ॉल्ट मान विवरण
byte 1 -128 .. 127 0 सबसे छोटा पूर्णांक प्रकार एक बाइट है
short 2 -32,768 ... 32.767 0 लघु पूर्णांक, दो बाइट्स
int 4 -2*10 9 .. 2*10 9 0 पूर्णांक, 4 बाइट्स
long 8 -9*10 18 .. 9*10 18 0L लंबा पूर्णांक, 8 बाइट्स
float 4 -10 38 .. 10 38 0.0f फ्लोटिंग-पॉइंट नंबर, 4 बाइट्स
double 8 -10 308 .. 10 308 0.0d डबल-सटीक फ़्लोटिंग पॉइंट नंबर, 8 बाइट्स
boolean 1 true,false false बूलियन प्रकार (केवल trueऔर false)
char 2 0 .. 65.535 '\u0000' वर्ण, 2 बाइट्स, सभी 0 से अधिक
डिफ़ॉल्ट मान

वैसे, यहाँ एक महत्वपूर्ण अति सूक्ष्म अंतर है। यदि आप एक उदाहरण चर (फ़ील्ड) या एक स्थिर वर्ग चर घोषित करते हैं और तुरंत इसके लिए कोई मान निर्दिष्ट नहीं करते हैं, तो इसे डिफ़ॉल्ट मान के साथ प्रारंभ किया जाता है । तालिका इन मानों की एक सूची प्रस्तुत करती है।

विधि में स्थानीय चर का कोई डिफ़ॉल्ट मान नहीं है। यदि आप ऐसे वेरिएबल्स को कोई मान निर्दिष्ट नहीं करते हैं, तो उन्हें अप्रारंभीकृत माना जाता है और उनका उपयोग नहीं किया जा सकता है।

लेकिन आइए आदिम प्रकारों पर लौटें और उन पर करीब से नज़र डालें।



2. पूर्णांक प्रकार

जावा में 4 पूर्णांक प्रकार हैं : byte,, और । वे अपने आकार और उनके द्वारा संग्रहीत मूल्यों की सीमा में भिन्न होते हैं।shortintlong

intप्रकार

सबसे अधिक इस्तेमाल किया जाने वाला intप्रकार है। यह नाम इंट ईगर (संपूर्ण संख्या) शब्द से आया है । कोड में सभी पूर्णांक अक्षर (पूर्ण संख्याएं) हैं (यदि वे , या intsमें समाप्त नहीं होते हैं )।LFD

-2,147,483,648इस प्रकार के चर मान से से तक ले सकते हैं +2,147,483,647

यह बहुत कुछ है और लगभग हर अवसर के लिए पर्याप्त है। लगभग हर फ़ंक्शन जो एक संख्या लौटाता है, एक देता है int

उदाहरण:

कोड व्याख्या
int n = "String".length();
विधि length()एक स्ट्रिंग की लंबाई लौटाती है
String[] array = {"Tic", "Tac", "Toe"};
int n = array.length;
फ़ील्ड lengthमें सरणी की लंबाई होती है।

shortप्रकार

प्रकार shortको इसका नाम मिलता है short int। इसे अक्सर लघु पूर्णांक भी कहा जाता है । प्रकार के विपरीत int, इसकी लंबाई केवल दो बाइट है और संभावित मानों की श्रेणी से से -32,768है +32,767

यानी आप इसमें एक लाख नंबर स्टोर नहीं कर सकते। या 50,000 भी। यह जावा में सबसे अधिक इस्तेमाल किया जाने वाला पूर्णांक प्रकार है। इसका उपयोग करने की मुख्य प्रेरणा स्मृति को संरक्षित करना है।

मान लीजिए कि आपके पास एक ऐसी स्थिति है जहां आप पहले से जानते हैं कि आप उन मूल्यों के साथ काम करेंगे जो कभी भी 30,000 से अधिक नहीं होंगे, और ये लाखों मूल्य होंगे।

उदाहरण के लिए, मान लें कि आप एक ऐसा एप्लिकेशन लिख रहे हैं जो अल्ट्रा-हाई डेफिनिशन पिक्चर्स को प्रोसेस करता है जो 10-बिट्स प्रति रंग का उपयोग करता है। और आपकी तस्वीर में एक लाख पिक्सेल हैं। intयह एक ऐसा परिदृश्य है जहां उपयोग या shortमायने रखने का निर्णय ।

longप्रकार

इस प्रकार को इसका नाम मिलता है long intऔर इसे एक लंबा पूर्णांक भी कहा जाता है । प्रकार के विपरीत int, इसमें मूल्यों की एक विशाल श्रेणी है: से से ।-9*1018+9*1018

यह मूल पूर्णांक प्रकार क्यों नहीं है?

क्योंकि जावा 90 के दशक के मध्य में दिखाई दिया, जब अधिकांश कंप्यूटर 32-बिट थे। इसका मतलब है कि सभी प्रोसेसर 32 बिट्स वाले नंबरों के साथ काम करने के लिए ऑप्टिमाइज़ किए गए थे। प्रोसेसर 64-बिट पूर्णांकों के साथ काम कर सकते थे, लेकिन उनके साथ संचालन धीमा था।

नतीजतन, प्रोग्रामर ने यथोचित रूप से intमानक पूर्णांक प्रकार बनाने का निर्णय लिया, और longवास्तव में आवश्यक होने पर ही प्रकार का उपयोग किया।

byteप्रकार

यह जावा में सबसे छोटा पूर्णांक प्रकार है, लेकिन कम से कम इस्तेमाल होने से बहुत दूर है। इसका नाम, byteजावा में मेमोरी के सबसे छोटे एड्रेसेबल ब्लॉक के लिए भी शब्द है।

प्रकार के लिए इतने मान्य मान नहीं हैं byte: से से -128तक +127। लेकिन यह इसकी ताकत नहीं है। इस byteप्रकार का सबसे अधिक उपयोग तब किया जाता है जब आपको मेमोरी में बड़े ब्लॉब डेटा को स्टोर करने की आवश्यकता होती है। byteइस उद्देश्य के लिए एस की एक सरणी आदर्श है।

मान लीजिए आपको कहीं एक फाइल कॉपी करने की जरूरत है।

आपको फ़ाइल की सामग्री को संसाधित करने की आवश्यकता नहीं है: आप बस मेमोरी (बफर) का एक क्षेत्र बनाना चाहते हैं, फ़ाइल की सामग्री को उसमें कॉपी करें, और फिर उस डेटा को बफर से दूसरी फ़ाइल में लिखें। इसके लिए आपको एक byteसरणी चाहिए।

ध्यान रखें कि एक सरणी चर केवल मेमोरी के एक क्षेत्र के संदर्भ को संग्रहीत करता है। जब वेरिएबल को किसी मेथड में पास किया जाता है, तो केवल मेमोरी एड्रेस पास किया जाता है। मेमोरी के ब्लॉक को ही कॉपी नहीं किया जाता है।

byte[] buffer = new byte[1024*1024];
FileInputStream sourceFile = new FileInputStream("c:\\data.txt");
FileOutputStream destFile = new FileOutputStream("c:\\output.txt");
while (true)
{
   int size = sourceFile.read(buffer); // Read data from a file into a buffer
   destFile.write(buffer, 0, size); // Write data from the buffer to a file

   // Stop copying if the buffer is not full
   if (size < buffer.length) break;
}
sourceFile.close();
destFile.close();


3. वास्तविक प्रकार

आदिम प्रकारों में वास्तविक संख्याओं के लिए दो प्रकार शामिल हैं। हालांकि यह उस शब्द का उपयोग करने के लिए पूरी तरह सटीक नहीं है। जब कंप्यूटर वास्तविक संख्याओं को संभालते हैं, तो हम उन्हें फ़्लोटिंग-पॉइंट नंबर कहते हैं । यह नाम संख्याओं का प्रतिनिधित्व करने के लिए एक मानक से आता है, जिसमें किसी संख्या के पूर्णांक और भिन्नात्मक भाग एक अवधि (एक बिंदु, अल्पविराम नहीं) से अलग होते हैं।

कुछ उपयोगी जानकारी:

संख्याओं को लिखने के लिए प्रत्येक देश के अपने मानक होते हैं (आश्चर्य!)

बहुत से लोग दशमलव विभाजक के रूप में हजारों और अल्पविरामों को अलग करने के लिए अवधियों का उपयोग करने के आदी हैं: उदाहरण के लिए, वे one million ones and 153 thousandthsलिखेंगे 1.000.000,153। लेकिन संयुक्त राज्य अमेरिका में, जहां जावा के निर्माता रहते थे, एक अलग मानक अपनाया गया था:1000000.153

जावा के दो फ्लोटिंग-पॉइंट आदिम प्रकार हैं: doubleऔर float

जैसा कि हमने पहले कहा, इन प्रकारों की एक बहुत ही विशिष्ट आंतरिक व्यवस्था होती है: वास्तव में, इन प्रकारों के प्रत्येक चर के अंदर एक संख्या नहीं, बल्कि दो होती हैं:

उदाहरण के लिए, फ़्लोटिंग-पॉइंट नंबर को 987654.321इस रूप में दर्शाया जा सकता है । फिर स्मृति में इसे दो संख्याओं ( मंटिसा , यानी संख्या का महत्वपूर्ण हिस्सा) और ( प्रतिपादक , यानी दस की शक्ति) के रूप में दर्शाया जाएगा।0.987654321*1069876543216

floatप्रकार

प्रकार का नाम फ्लोट आईएनजी-पॉइंट नंबरfloat से आता है । इस प्रकार का आकार काफी छोटा है - केवल 4 बाइट्स (32 बिट्स) - लेकिन यह मूल्यों को से स्टोर कर सकता है । मंटिसा का प्रतिनिधित्व करने के लिए 24 बिट आवंटित किए जाते हैं, और एक्सपोनेंट के लिए 8 बिट आवंटित किए जाते हैं। यह प्रकार केवल 8 महत्वपूर्ण अंकों को संग्रहित करने में सक्षम है।-3.4*10383.4*1038

intयह दृष्टिकोण समान 4 बाइट्स का उपयोग करते हुए, की तुलना में बहुत बड़ी संख्याओं को संग्रहीत करना संभव बनाता है । लेकिन ऐसा करने के लिए, हम सटीकता का त्याग करते हैं। क्योंकि मेमोरी का हिस्सा मंटिसा को स्टोर करता है, ये वेरिएबल्स केवल 6-7 दशमलव स्थानों को स्टोर करते हैं जबकि बाकी को छोड़ दिया जाता है।

उदाहरण:

कोड कीमत
float a = (float) 123.456789;
123.45679
float a = (float) 12345.9999;
12346.0
float a = (float) -123.456789E-2;
-1.2345679

जैसा कि आप देख सकते हैं, इस प्रकार का मुख्य दोष महत्वपूर्ण अंकों की बहुत छोटी संख्या है, और आठवें अंक के रूप में सटीकता का नुकसान है। यही कारण है कि floatजावा प्रोग्रामर्स के बीच यह प्रकार बहुत लोकप्रिय नहीं है।

doubleप्रकार

प्रकार doubleमानक फ़्लोटिंग-पॉइंट प्रकार है। नाम डबल सटीक फ़्लोटिंग-पॉइंट नंबर से आता है । डिफ़ॉल्ट रूप से सभी वास्तविक शाब्दिक doubles हैं।

यह प्रकार 8 बाइट मेमोरी (64 बिट्स) लेता है और मानों को से स्टोर कर सकता है । एक महत्वपूर्ण बात यह जानना है कि 53 बिट्स मंटिसा के लिए आवंटित किए गए हैं, जबकि शेष 11 एक्सपोनेंट के लिए हैं।-1.7*103081.7*10308

यह 15-17 महत्वपूर्ण अंकों को संग्रहीत करने की अनुमति देता है।

उदाहरण:

कोड कीमत
double a = 1234567890.1234567890;
1234567890.1234567
double a = 1234567890.1234512345;
1234567890.1234512
double a = 1234567890.1357913579;
1234567890.1357913

यह सटीकता, विशेष रूप से प्रकार की तुलना में float, निर्णायक है: वास्तविक संख्या वाले सभी कार्यों का 99% doubleप्रकार का उपयोग करके किया जाता है।

11प्रतिपादक के लिए बिट्स आवंटित किए जाते हैं, जिसका अर्थ है कि आप दस की शक्तियों -323को से स्टोर कर सकते हैं (यह दो से +308की शक्ति है )। प्रकार दशमलव बिंदु के बाद सैकड़ों शून्य के साथ आसानी से एक संख्या को स्टोर कर सकता है:-1024+1023double

कोड कीमत
double a = 2E-300 * 3E+302
600.0


4. अनंत

फ़्लोटिंग-पॉइंट नंबरों की एक और दिलचस्प विशेषता है: वे एक विशेष मान को स्टोर कर सकते हैं जो अनंत को दर्शाता है । और आप सकारात्मक अनंतता और नकारात्मक अनंतता का प्रतिनिधित्व कर सकते हैं ।

उदाहरण:

कोड टिप्पणी
System.out.println( 100.0 / 0.0 );
Infinity
System.out.println( -100.0 / 0.0 );
-Infinity
double a = 1d / 0d;
double b = a * 10;
double c = b - 100;
a == Infinity
b == Infinity
c == Infinity

यदि अनंत को किसी संख्या से गुणा किया जाए तो अनंत प्राप्त होता है। यदि आप अनंत में कोई संख्या जोड़ते हैं, तो आपको अनंत मिलता है। यह बहुत सुविधाजनक है।

संख्या नहीं ( NaN)

अनंतता से जुड़े किसी भी ऑपरेशन से अनंतता प्राप्त होती है। ठीक है, अधिकांश लेकिन सभी नहीं।

फ़्लोटिंग-पॉइंट नंबर एक और विशेष मान संग्रहीत कर सकते हैं: NaN. यह N ot a N umber (संख्या नहीं) के लिए छोटा है ।

गणित में, यदि आप अनंत को अनंत से विभाजित करते हैं, तो परिणाम अपरिभाषित होता है।

लेकिन, जावा में, यदि आप अनंत को अनंत से विभाजित करते हैं, तो परिणाम होता है NaN

उदाहरण:

कोड टिप्पणी
System.out.println(0.0 / 0.0);
NaN
double infinity = 1d / 0d;
System.out.println(infinity / infinity);

NaN
double a = 0.0 / 0.0;
double b = a * 10;
double c = b - 100;
double d = a + infinity;
a == NaN
b == NaN
c == NaN
d == NaN

NaNपैदावार के साथ कोई भी ऑपरेशन NaN



5. charप्रकार

जावा के आदिम प्रकारों में , कुछ विशेष ध्यान देने योग्य हैं: charप्रकार। इसका नाम चार अभिनेता शब्द से आता है , और वर्णों को संग्रहीत करने के लिए ही प्रकार का उपयोग किया जाता है।

वर्ण वे हैं जिनसे तार बने होते हैं, है ना? स्ट्रिंग्स वर्णों की एक सरणी हैं।

लेकिन इससे भी दिलचस्प तथ्य यह है कि charप्रकार भी एक संख्यात्मक प्रकार है ! यह एक दोहरे उद्देश्य का प्रकार है, इसलिए बोलना है।

हकीकत यह है कि charप्रकार वास्तव में वर्ण नहीं है। इसके बजाय, यह यूनिकोड एन्कोडिंग से वर्ण कोड संग्रहीत करता है। प्रत्येक वर्ण एक संख्या से मेल खाता है: वर्ण का संख्यात्मक कोड।

प्रत्येक charचर स्मृति में दो बाइट्स (प्रकार के समान short) पर कब्जा कर लेता है। लेकिन shortप्रकार के विपरीत, charपूर्णांक प्रकार अहस्ताक्षरित है और मूल्यों 0को से स्टोर कर सकता है 65,535

प्रकार charएक संकर प्रकार है। इसके मूल्यों को संख्याओं के रूप में (जैसे उन्हें जोड़ा और गुणा किया जा सकता है) और वर्णों के रूप में व्याख्या किया जा सकता है। ऐसा इसलिए किया गया क्योंकि यद्यपि वर्ण दृश्य प्रतिनिधित्व हैं, एक कंप्यूटर के लिए वे सभी संख्याओं से ऊपर हैं। और संख्याओं के रूप में उनके साथ कार्य करना कहीं अधिक सुविधाजनक है।

यूनिकोड

यूनिकोड एक विशेष तालिका (एन्कोडिंग) है जिसमें दुनिया के सभी वर्ण शामिल हैं। और प्रत्येक वर्ण की अपनी संख्या होती है। यह लगभग इस प्रकार दिखता है:

जावा में आदिम प्रकार

charकिसी वेरिएबल को वैल्यू असाइन करने के अलग-अलग तरीके हैं ।

कोड विवरण
char a = 'A';
चर aमें लैटिन अक्षर होगा A
char a = 65;
चर aमें लैटिन अक्षर होगा A। इसका कोड है 65
char a = 0x41;
चर aमें लैटिन अक्षर होगा A
इसका कोड है 65, जो 41हेक्साडेसिमल सिस्टम में बराबर है।
char a = 0x0041;
चर aमें लैटिन अक्षर होगा A
इसका कोड है 65, जो 41हेक्साडेसिमल सिस्टम में बराबर है।
दो अतिरिक्त शून्य कुछ भी नहीं बदलते हैं।
char a = '\u0041';
चर aमें लैटिन अक्षर होगा A
किसी वर्ण को उसके कोड द्वारा परिभाषित करने का दूसरा तरीका।

अक्सर, लोग केवल चरित्र को उद्धरण चिह्नों में इंगित करते हैं (जैसा कि तालिका की पहली पंक्ति में है)। उस ने कहा, बाद वाला तरीका भी लोकप्रिय है। इसका फायदा यह है कि इसे स्ट्रिंग्स में इस्तेमाल किया जा सकता है।

और जैसा कि हमने कहा, charप्रकार भी एक पूर्णांक प्रकार है, तो आप कुछ इस तरह लिख सकते हैं:

कोड कंसोल आउटपुट
char a = 'A';
a++;
System.out.println(a);
लैटिन अक्षर Bस्क्रीन पर प्रदर्शित किया जाएगा।
क्योंकि :
A--- 65
B_66
C67

charएस के साथ काम करना

प्रत्येक charसबसे पहले एक संख्या (अक्षर कोड) है, और फिर एक वर्ण है। यदि आप एक वर्ण कोड जानते हैं, तो आप हमेशा अपने कार्यक्रम में चरित्र प्राप्त कर सकते हैं। उदाहरण:

कोड कंसोल आउटपुट
char c = (char) 1128;
System.out.println(c);

Ѩ

मानक कोड

यहाँ सबसे प्रसिद्ध वर्ण कोड हैं:

पात्र कोड्स
0, 1, 2, ...9 48, 49, 50, ...57
a, b, c, ...z 97, 98, 99, ...122
A, B, C, ...Z 65, 66, 67, ...90


6. booleanप्रकार

और अंतिम आदिम प्रकार है boolean

जैसा कि आप पहले से ही जानते हैं, यह केवल दो मान ले सकता है: trueऔर false

और इसके साथ, आप इस प्रकार के बारे में जानने के लिए पहले से ही सब कुछ जानते हैं।

टिप्पणियां
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION