2013-11-26 5 views
6

मैं सिर्फ अपनी पुरानी पाठ्यपुस्तकों में से एक के माध्यम से स्कीम करने गया था "एक सरणी के आकार संकलन समय पर पता होना चाहिए" और इस मार्ग जावा में सरणियों को परिभाषित मिला:जावा पाठ्यपुस्तक:

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

मैं सरणियों की एक बुनियादी समझ है और उन्हें हर दिन के कार्यों में सहजता से इस्तेमाल कर रहा हूँ, लेकिन मैं बहुत बयान से उलझन में है कि सरणियों के आकार संकलन समय पर पता होना चाहिए हूँ।

एक बहुत ही सरल जावा प्रोग्राम दर्शाता है कि एक सरणी कार्यावधि में एक चर आकार के साथ instantiated जा सकता है:

import java.util.Scanner; 

public class test 
{ 
    public static void main(String[] args) 
    { 
     Scanner scan = new Scanner(System.in); 
     System.out.print("Enter a number: "); 
     int size = scan.nextInt(); 
     int[] array = new int[size]; 
     System.out.println("You just create an array of size " + array.length); 
    } 
} 

यह संकलित, कार्यान्वित करता है, और बिना किसी त्रुटि के अंत तक पहुँचता है।

क्या देता है?

+0

क्या आप इस विशेष पाठ्यपुस्तक (लिंक, लेखक, नाम) पर अतिरिक्त जानकारी पोस्ट कर सकते हैं? –

+0

मुझे कहना होगा कि लेखक यहां बहुत गलत परिभाषा देता है। ओपी की एक बहुत ही वैध आलोचना है। मैं बस कहूंगा कि लेखक गलत है, या उसके शब्द अपने विचार को सही तरीके से प्रस्तुत नहीं करते हैं। जब हम कहते हैं कि सरणी आकार संकलन समय में जाना जाता है, तो हम (पुराने) सी/सी ++ –

+0

मामले के बारे में बात कर रहे हैं। पुस्तक डेल, जॉयस और वेम्स द्वारा जावा (प्रथम संस्करण) का उपयोग कर ऑब्जेक्ट ओरिएंटेड डेटा स्ट्रक्चर है। यह अनुच्छेद पृष्ठ 9 0 पर है। – CptSupermrkt

उत्तर

3

यह एक बहुत ही खराब शब्द का अनुच्छेद है, लेकिन यदि आप इसे कम समझते हैं, तो यह सही है।

अपने उदाहरण में, सरणी के आकार संकलन समय पर जाना जाता है। आकार size है।

आप "स्थिर" या "स्थिर" के साथ "संकलित समय पर ज्ञात" व्याख्या कर रहे हैं जो समझ में आता है। बेशक जैसा कि हम जानते हैं, JVM size के मान के आधार पर गतिशील रूप से स्मृति आवंटित करता है।

लेखक शायद एक सरणी और ArrayList जैसे कुछ अंतर करने की कोशिश कर रहा है, जहां आयामों को प्रारंभिकरण पर निर्दिष्ट नहीं किया जाना चाहिए।

0

यहां एक सरणी का आकार "आकार" है। कंपाइलर को "आकार" में क्या हो सकता है इसके बारे में परेशान नहीं है। संकलन समय के दौरान स्मृति आवंटित नहीं की जाती है, इसे रनटाइम के दौरान आवंटित किया जाता है। संकलन समय चर के दौरान उनके मूल्य प्राप्त करने के लिए सीधे जांच नहीं की जाती है। यह केवल रन टाइम के दौरान है कि संकलक देखता है कि "आकार" में क्या मौजूद है और स्मृति आवंटित करता है।

संबंधित मुद्दे