জাভা ইন টু স্ট্রিং - Integer.toString (i) বনাম নতুন পূর্ণসংখ্যা (i) .toString ()


428

মাঝে মাঝে জাভা আমার ধাঁধা দেয়।
আমি একটি বিশাল পরিমাণ আছে int- এ initializations করা।

কি বাস্তব পার্থক্য কি?

  1. Integer.toString(i)
  2. new Integer(i).toString()

20
আমি কেবল ব্যবহার করব "" + 42, কিন্তু ওহে, আমিই ফর্ম # 2 এর মধ্যবর্তী হিসাবে একটি নতুন পূর্ণসংখ্যার বস্তুর (i এর বেশিরভাগ মানের জন্য) ফলাফল করবে will এটি আরও টাইপিং হয়।

16
@ পিএসটি: যদি মধ্যবর্তী বস্তুটি আপনার পক্ষে একটি সমস্যা হয়ে থাকে, তবে এর "" + 42চেয়ে ভাল আর কিছু নয়, কারণ এর জন্য একটি মধ্যবর্তী প্রয়োজন StringBuilderযা একটি এর চেয়ে অনেক বেশি ভারী Integer
জোছিম সউর

47
"" 42 সম্ভবত কাজ করতে পারে তবে এটি একটি খারাপ ধারণা। আমার মতো লোকেরা আপনার কোডটি দেখে আসবে এবং হ্যাকটি খালি স্ট্রিংয়ের সাথে কী ঘটেছে তা বের করার চেষ্টা করবে।
মাইঙ্গুই

3
আমি সুপারিশ করব না "" + 42কারণ পূর্ণসংখ্যার স্ট্রিং যুক্ত করার ক্ষেত্রে আপনি মানগুলি যোগ করতে এবং এটি উপলব্ধি না করে শেষ করতে পারেন।
বোল্টজমানব্রাইন 21

20
আপনি যদি অনেক বেশি টাইপিং পছন্দ করেন না, তবে আপনার সম্ভবত জাভাতে প্রোগ্রামিং করা উচিত নয়।
অ্যাডাম পিয়ের্স

উত্তর:


548

Integer.toStringক্লাসে স্থির পদ্ধতি কল করে Integer। এটির উদাহরণের দরকার নেই Integer

আপনি যদি কল করেন তবে new Integer(i)আপনি টাইপের একটি উদাহরণ তৈরি করেন Integerযা আপনার সম্পূর্ণ মানের মান আবদ্ধকারী একটি সম্পূর্ণ জাভা অবজেক্ট। তারপর আপনি কল toStringচাওয়াই একটি স্ট্রিং উপস্থাপনা ফিরে যাওয়ার এটিতে পদ্ধতি নিজেই

আপনি যা চান তা intযদি কোনও মুদ্রণ করা হয় তবে আপনি প্রথমটি ব্যবহার করুন কারণ এটি হালকা, দ্রুত এবং অতিরিক্ত মেমরি ব্যবহার করে না (ফিরে আসা স্ট্রিংটি বাদ দিয়ে)।

যদি আপনি কোনও পূর্ণসংখ্যার মানকে উপস্থাপন করে এমন কোনও বস্তু চান - উদাহরণ হিসাবে এটি কোনও সংগ্রহের অভ্যন্তরে রাখুন - আপনি দ্বিতীয়টি ব্যবহার করতে চান, যেহেতু এটি আপনাকে খালি সঙ্গে না করতে পারে এমন সমস্ত ধরণের কাজ করার জন্য একটি পূর্ণাঙ্গ অবজেক্ট দেয় int


96

new Integer(i).toString()প্রথমে চারপাশে একটি (রিডানডেন্ট) মোড়কের বস্তু তৈরি করে i(যা নিজেই একটি মোড়কের বস্তু হতে পারে Integer)।

Integer.toString(i) এটি পছন্দসই কারণ এটি কোনও অপ্রয়োজনীয় অবজেক্ট তৈরি করে না।


43

আরেকটি বিকল্প হ'ল স্থির String.valueOfপদ্ধতি।

String.valueOf(i)

এটি আমার চেয়ে কিছুটা বেশি সঠিক অনুভব করেInteger.toString(i) । যখন আমি ধরণ পরিবর্তন, থেকে উদাহরণস্বরূপ intকরার double, কোড সঠিক থাকতে হবে।


2
হ্যাঁ. আপনার অবশ্যই RADIX ব্যবহার না করা (সে ক্ষেত্রে আপনাকে অবশ্যই Integer.toString ব্যবহার করতে হবে)
মার্কোলপস

14
  1. new Integer(i).toString();

    এই বিবৃতি পূর্ণসংখ্যা বস্তুর তৈরি করে এবং তারপর তার পদ্ধতি কল toString(i)করার পূর্ণসংখ্যা মান স্ট্রিং উপস্থাপনা আসতে

  2. Integer.toString(i);

    এটি স্ট্রিং অবজেক্টটি নির্দিষ্ট ইন্ট (পূর্ণসংখ্যা) উপস্থাপন করে তবে এখানে toString(int)একটি staticপদ্ধতি রয়েছে।

সংক্ষিপ্তসারটি প্রথম ক্ষেত্রে এটি বস্তুর স্ট্রিং প্রতিনিধিত্ব প্রদান করে, যেখানে দ্বিতীয় ক্ষেত্রে এটি পূর্ণসংখ্যার স্ট্রিং প্রতিনিধিত্ব করে।


13

আমি অত্যন্ত ব্যবহার করার পরামর্শ দিচ্ছি

int integer = 42;
String string = integer + "";

সহজ এবং কার্যকর।


38
এটি অবশ্যই খারাপ ফর্ম, কারণ এটি উভয়ই জাভা ভাষার মোটামুটি সূক্ষ্ম অংশের উপর নির্ভর করে এবং ইন্টিজার.টোস্ট্রিং (i) এর চেয়ে কম দক্ষ। দেখুন এই তাই পোস্ট
rickcnagy

এটি অদক্ষ হতে পারে। আমি কিছু প্রচলিত পছন্দ যেমন Integer.toString বা String.valueOf ব্যবহার করার পরামর্শ দিই। এখানে javadevnotes.com/java-integer-to-string-
উদাহরণ

এ জাতীয় অদম্য পদ্ধতিতে কাজ করা সাধারণত একটি খারাপ ধারণা। আরও সুস্পষ্ট পছন্দগুলির মতো আরও Integer.toString()কিছু অতিরিক্ত কীস্ট্রোক ব্যবহার করতে পারে তবে এটি আরও পরিষ্কার হয়, আপনি কোড বজায় রাখতে চাইলে এটি অত্যন্ত গুরুত্বপূর্ণ।
ক্যালভিন লি

এটি কি স্বয়ংক্রিয়ভাবে পূর্ণসংখ্যার ভেরিয়েবলের toString()পদ্ধতিতে কল করবে না ?
অঙ্কিত দেশপাণ্ডে

11

যদিও আমি ফুচোর সুপারিশটি পছন্দ করি

String.valueOf(i)

হাস্যকর বিষয় এই পদ্ধতিটি আসলে কল করে

Integer.toString(i)

সুতরাং, String.valueOf(i)এটি কীভাবে পড়তে পছন্দ করে এবং আপনার র‍্যাডিক্সের দরকার নেই তা ব্যবহার করুন, তবে এটির চেয়ে কম দক্ষ কিনা তাও জেনে রাখুন Integer.toString(i)


4

কর্মক্ষমতা পরিমাপের ক্ষেত্রে, আপনি যদি সময়ের পারফরম্যান্স বিবেচনা করে থাকেন তবে পূর্ণসংখ্যা.টোস্ট্রিং (i); আপনি যদি ১০০ কোটিরও কম বার কল করছেন তবে ব্যয়বহুল। অন্যথায় যদি এটি 100 মিলিয়নের বেশি কল হয় তবে নতুন পূর্ণসংখ্যা (10) .to স্ট্রিং () আরও ভাল সম্পাদন করবে।

নীচে আপনার মাধ্যমে কোডটি পারফরম্যান্সটি পরিমাপ করার চেষ্টা করতে পারে,

public static void main(String args[]) {
            int MAX_ITERATION = 10000000;
        long starttime = System.currentTimeMillis();
        for (int i = 0; i < MAX_ITERATION; ++i) {
            String s = Integer.toString(10);
        }
        long endtime = System.currentTimeMillis();
        System.out.println("diff1: " + (endtime-starttime));

        starttime = System.currentTimeMillis();
        for (int i = 0; i < MAX_ITERATION; ++i) {
            String s1 = new Integer(10).toString();
        }
        endtime = System.currentTimeMillis();
        System.out.println("diff2: " + (endtime-starttime));
    }

স্মৃতি শর্তাবলী,

নতুন পূর্ণসংখ্যা (i)। টু স্ট্রিং ();

এটি আরও মেমরি নেবে কারণ এটি প্রতিবার বস্তু তৈরি করবে, তাই মেমরি খণ্ডিত হবে।


2
আমি এই কোডটি new Integer(10).toString() can be simplified to Integer.toString(10)
ইন্টেলিজ আইডিইএতে

এই কোডটি আমার পক্ষে কাজ করে। আমি নতুন পূর্ণসংখ্যার (10)। টু স্ট্রিং ()
জেক স্টিভেনস-হাশ


প্রথমে উষ্ণতা তৈরি করতে সাহায্য করবে, অন্যথায় ফলাফলগুলি বৈধ নয়!
ছয়টি

যদি আপনি বলেন যে একটির ক্ষেত্রে একটি ব্যয়বহুল, এবং অন্যটি অন্য ক্ষেত্রে ভাল, তার অর্থ অন্য পরিস্থিতিতে সমস্ত পরিস্থিতিতে ভাল / সস্তা।
Sgene9

2

উত্তম:

Integer.valueOf(i).toString()

9
কেন এই ভাল?
এমিল

1
আমি মনে করি এটি আরও ভাল, কারণ @ ধীরাজ স্মৃতি হিসাবে দেখিয়েছেন যে, "নতুন পূর্ণসংখ্যা (i) .toString ();" আরও মেমরি নেবে কারণ এটি কেবলমাত্র পূর্ণসংখ্যার মানটি পাওয়ার পরিবর্তে এবং একটি স্ট্রিংতে রূপান্তরিত করার পরিবর্তে একটি নতুন অবজেক্ট তৈরি করে।
প্যাট্রিসিয়া

4
@ লুসি পূর্ণসংখ্যা.ভালিউওফ (আই) একটি নতুন পূর্ণসংখ্যা ফেরত দেয়, তাই কোনও পার্থক্য নেই
ইনিগডো

আপনি একেবারে প্রশ্নের উত্তর সরবরাহ করছেন না। প্রশ্নটি হচ্ছে ব্লাহ এবং ব্লাহের মধ্যে পার্থক্য কী, ব্লেহের জন্য আরও ভাল প্রতিস্থাপন কী নয়।
ahitt6345

2

সহজ উপায়টি কেবল ""পূর্ণসংখ্যার সাথে মিলিত হয়:

int i = 100;

String s = "" + i;

এখন স্ট্রিং মান হিসাবে sহবে 100


1

এখানে Integer.toString পূর্ণাঙ্গ শ্রেণিতে স্থিতিশীল পদ্ধতিটি কল করে। এটি কল করার জন্য বস্তুর প্রয়োজন হয় না।

আপনি যদি new Integer(i)প্রথম কল করেন তবে এটি পূর্ণসংখ্যার টাইপের একটি উদাহরণ তৈরি করুন যা আপনার সম্পূর্ণ আইটির মান encapsুলেট পূর্ণ জাভা অবজেক্ট। তারপরে আপনি নিজেটিকে toStringএকটি স্ট্রিং উপস্থাপনা ফিরিয়ে দিতে বলার জন্য এটিতে পদ্ধতিটি কল করুন ।


0

1।Integer.toString(i)

Integer i = new Integer(8);
    // returns a string representation of the specified integer with radix 8
 String retval = i.toString(516, 8);
System.out.println("Value = " + retval);

2।new Integer(i).toString()

 int i = 506;

String str = new Integer(i).toString();
System.out.println(str + " : " + new Integer(i).toString().getClass());////506 : class java.lang.String
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.