जावा में स्ट्रिंग को लांग में कैसे बदलें?


400

मैं जावा में एक सरल सवाल है: मैं एक कैसे परिवर्तित कर सकते हैं Stringकि प्राप्त किया गया था द्वारा Long.toString()करने के लिए long?


1
जावा में स्ट्रिंग को लंबे समय तक बदलने के लिए उदाहरणों के साथ 5 तरीके
सोमनाथ मुलुक

1
आंतरिक रूप से सभी संस्करण कॉल विधि Long.parseLong (स्ट्रिंग) । इसका सीधा उपयोग करें। कुछ सीपीयू साइकिल बचाओ।
लोकेश

कृपया इस एक को देखें: developer.android.com/reference/java/lang/…
मिहिर त्रिवेदी

जवाबों:


664

उपयोग Long.parseLong()

 Long.parseLong("0", 10)        // returns 0L
 Long.parseLong("473", 10)      // returns 473L
 Long.parseLong("-0", 10)       // returns 0L
 Long.parseLong("-FF", 16)      // returns -255L
 Long.parseLong("1100110", 2)   // returns 102L
 Long.parseLong("99", 8)        // throws a NumberFormatException
 Long.parseLong("Hazelnut", 10) // throws a NumberFormatException
 Long.parseLong("Hazelnut", 36) // returns 1356099454469L
 Long.parseLong("999")          // returns 999L

2
"लंच / डिनर" के बारे में क्या?
नरेंद्र सोरठिया

अच्छा कोड है। इसका काम
१२

140

एक स्ट्रिंग को लॉन्ग (ऑब्जेक्ट) में बदलने के लिए , उपयोग करेंLong.valueOf(String s).longValue();

लिंक देखें


1
ओपी पूछ नहीं है कि क्या है।
क्रिश्चियन मान

7
@Belgi। नहीं, यह लौटाता हैjava.lang.Long
अलेक्जेंडर पोगरेबनीक

@ बेल्गी - Long.valueOf लौंग नहीं, एक स्ट्रिंग है।
डॉन रॉबी

4
@ मायकेडनील्स, क्योंकि यह करने का एक बहुत ही अप्रत्यक्ष तरीका है। Docs.oracle.com/javase/7/docs/api/java/lang/… देखें , यह एक लंबी वस्तु लौटाता है जो आदिम लंबा नहीं है।
पचेरियर

Long.valueOf (String s) एक Long (ऑब्जेक्ट) और Long.valueOf (String s) .longValue () लॉन्ग (आदिम) देता है।
Champ

27
public class StringToLong {

   public static void main (String[] args) {

      // String s = "fred";    // do this if you want an exception

      String s = "100";

      try {
         long l = Long.parseLong(s);
         System.out.println("long l = " + l);
      } catch (NumberFormatException nfe) {
         System.out.println("NumberFormatException: " + nfe.getMessage());
      }

   }
}


5

सबसे अच्छा तरीका Long.valueOf(str)यह है कि यह निर्भर करता है, Long.valueOf(long)जिस पर एक आंतरिक कैश का उपयोग करता है जो इसे अधिक कुशल बनाता है क्योंकि यह पुन: उपयोग करेगा यदि इसमें शामिल Longहोने के -128लिए कैश्ड उदाहरणों की आवश्यकता होगी 127

Longनिर्दिष्ट लंबी मान का प्रतिनिधित्व करने वाला एक उदाहरण देता है । यदि एक नए लंबे उदाहरण की आवश्यकता नहीं है, तो इस विधि का उपयोग आमतौर पर निर्माणकर्ता के लिए प्राथमिकता में किया जाना चाहिए Long(long), क्योंकि इस पद्धति से अक्सर अनुरोधित मूल्यों को कैच करके बेहतर स्थान और समय के प्रदर्शन की संभावना होती है। ध्यान दें कि इंटेगर वर्ग में संबंधित विधि के विपरीत, इस पद्धति को किसी विशेष श्रेणी के मानों को कैश करने की आवश्यकता नहीं है।

रैपर क्लास के इंस्टेंस को अपने संबंधित आदिम प्रकार में बदलने की अनुमति देने के लिए ऑटो-अनबॉक्सिंग के लिए धन्यवाद , कोड तब होगा:

long val = Long.valueOf(str);

कृपया ध्यान दें कि पिछला कोड अभी भी फेंक सकता है NumberFormatExceptionयदि प्रदान Stringकिया गया हस्ताक्षर के साथ मेल नहीं खाता है long

सामान्य शब्दों में, इसका इस्तेमाल करने के लिए एक अच्छा अभ्यास है staticकारखाने विधि valueOf(str)की तरह एक आवरण वर्ग के Integer, Boolean, Long, ... के बाद से उनमें से ज्यादातर मामलों का पुन: उपयोग जब भी यह संभव बनाने के लिए उन्हें संभवत: अधिक इसी से स्मृति पदचिह्न की अवधि में कुशल है parseतरीकों या कंस्ट्रक्टर्स ।


जोशुआ बलोच द्वारा लिखे गए प्रभावी जावा से उद्धरण :Item 1

आप अक्सर दोनों प्रदान करने वाले अपरिवर्तनीय वर्गों पर निर्माणकर्ताओं को वरीयता में स्थिर कारखाना विधियों (आइटम 1) का उपयोग करके अनावश्यक वस्तुओं को बनाने से बच सकते हैं । उदाहरण के लिए, स्थिर कारखाना विधि Boolean.valueOf(String)लगभग हमेशा निर्माणकर्ता के लिए बेहतर होती है Boolean(String)। कंस्ट्रक्टर हर बार जब भी बुलाया जाता है, तब एक नया ऑब्जेक्ट बनाता है, जबकि स्थिर फ़ैक्टरी विधि को ऐसा करने की आवश्यकता नहीं होती है और यह अभ्यास में नहीं होगा।


1
यह ध्यान देने योग्य है कि कंपाइलर द्वारा ऑटो-अनबॉक्सिंग को "डिगगर्ड" किया जाता है, लंबे -> लंबे, Long.valueOf (primitiveLong) के मामले में। तो Long number = Long.valueOf("123"), Long number = Long.parseLong("123")और Long number = Long.valueOf(Long.parseString("123")सभी बहुत ही एक ही काम कर रहे हैं। आप क्या करते हैं सावधान बारे में बॉक्सिंग आदिम वर्गों के कंस्ट्रक्टर्स बुला नहीं है होना चाहता हूँ - कि बेकार हो सकता है। इसलिए नहीं लिखेंLong number = new Long(parseLong("123"))
इयान रॉबर्टसन

4

स्ट्रिंग को पूर्णांक में बदलने के कुछ तरीके हैं :

1)

long l = Long.parseLong("200"); 

2)

String numberAsString = "1234";
long number = Long.valueOf(numberAsString).longValue();

3)

 String numberAsString = "1234";
  Long longObject = new Long(numberAsString);
  long number = longObject.longValue();

हम इसे छोटा कर सकते हैं:

String numberAsString = "1234";
long number = new Long(numberAsString).longValue();

या केवल

long number = new Long("1234").longValue();

4) Decemal प्रारूप का उपयोग करना:

    String numberAsString = "1234";
      DecimalFormat decimalFormat = new DecimalFormat("#");
     try {
        long number = decimalFormat.parse(numberAsString).longValue();
        System.out.println("The number is: " + number);
    } catch (ParseException e) {
     System.out.println(numberAsString + " is not a valid number.");
   }

1

यह काफी सरल है, उपयोग करें Long.valueOf(String s);

उदाहरण के लिए:

String s;
long l;

Scanner sc=new Scanner(System.in);
s=sc.next();
l=Long.valueOf(s);
System.out.print(l);

हो गया!!!


0

कोटलिन के लिए स्विच करने वालों के लिए बस का उपयोग
string.toLong()
करें Long.parseLong(string)जो हुड के नीचे कॉल करेगा


-1

यदि आप सामान्य के साथ मैप का उपयोग कर रहे हैं, तो आपको मूल्य को स्ट्रिंग में बदलने की आवश्यकता है और फिर लॉन्ग में बदलने की कोशिश करें। नीचे नमूना कोड है

    Map map = new HashMap();

    map.put("name", "John");
    map.put("time", "9648512236521");
    map.put("age", "25");

    long time = Long.valueOf((String)map.get("time")).longValue() ;
    int age = Integer.valueOf((String)  map.get("aget")).intValue();
    System.out.println(time);
    System.out.println(age);
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.