Java에서 String을 long으로 변환하는 방법은 무엇입니까?


400

나는 자바에 간단한 질문이 있어요 : 어떻게 변환 할 수 있습니다 String얻었다 그 Long.toString()에게 long?


1
Java에서 문자열을 long으로 변환하는 방법에 대한 예제가있는 5 가지 방법
Somnath Muluk

1
내부적으로 모든 버전은 Long.parseLong (String) 메소드를 호출 합니다. 직접 사용하십시오. 적은 CPU주기를 절약하십시오.
lokesh

답변:


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
"런치 / 디너"는 어떻습니까?
Narendra Sorathiya

좋은 코드. 작품
sirmagid

140

문자열Long (객체)으로 변환하려면Long.valueOf(String s).longValue();

링크 참조


1
그것은 OP가 요구하는 것이 아닙니다.
Christian Mann

7
@ 벨기. 아니오, 그것은 반환합니다java.lang.Long
Alexander Pogrebnyak

@Belgi-Long.valueOf는 문자열이 아닌 Long을 반환합니다.
Don Roby

4
@MikeDaniels, 왜냐하면 이것은 매우 간접적 인 방법이기 때문입니다. docs.oracle.com/javase/7/docs/api/java/lang/…을 참조하십시오 . 기본 long이 아닌 Long 오브젝트를 리턴합니다 .
Pacerier

Long.valueOf (String s)는 Long (객체)을 제공하고 Long.valueOf (String s) .longValue ()는 long (기본)을 제공합니다.
챔프

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에서 진행 -128127포함되어 있습니다.

Long지정된 long 값을 나타내는 인스턴스를 반환 합니다. 새로운 Long 인스턴스가 필요하지 않은 경우,이 메소드는 일반적으로 생성자보다 우선적으로 사용되어야합니다.이 메소드는 Long(long)자주 요청되는 값을 캐싱하여 공간 및 시간 성능을 크게 향상시킬 수 있습니다. Integer 클래스의 해당 메소드와 달리이 메소드는 특정 범위 내의 값을 캐시하는 데 필요하지 않습니다.

랩퍼 클래스의 인스턴스를 해당 기본 유형으로 변환 할 수있는 자동 압축 해제 덕분에 코드는 다음과 같습니다.

long val = Long.valueOf(str);

NumberFormatException제공된 코드 String가 signed와 일치하지 않으면 이전 코드는 여전히을 던질 수 있습니다 long.

일반적으로, 그것은 좋은 연습이 사용하는 static팩토리 메소드 valueOf(str)와 같은 래퍼 클래스를 Integer, Boolean, Long그들 중 대부분은 인스턴스를 재사용하기 때문에 ... 그것은 해당 비해 메모리 풋 프린트의 기간에 가능하게 그들을 잠재적으로 더 효율적 때마다 parse메소드 나 생성자 .


Joshua Bloch가 작성한 Effective Java 에서 발췌 :Item 1

둘 다 제공하는 불변 클래스의 생성자보다 정적 팩토리 메소드 (항목 1)를 사용하여 불필요한 오브젝트 작성을 피할 수 있습니다 . 예를 들어, 정적 팩토리 메소드 Boolean.valueOf(String)는 생성자보다 거의 항상 선호됩니다 Boolean(String). 생성자는 호출 될 때마다 새로운 객체를 생성하지만 정적 팩토리 메소드는 그렇게 할 필요가 없으며 실제로는 그렇지 않습니다.


1
컴파일러의 long-> Long, 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

문자열을 Integer로 변환하는 방법이 있습니다 .

1)

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

2)

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

삼)

 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);

끝났습니다 !!!



-1

일반없이 맵을 사용하는 경우 값을 문자열로 변환 한 다음 Long으로 변환해야합니다. 아래는 샘플 코드입니다

    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);
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.