나는 자바에 간단한 질문이 있어요 : 어떻게 변환 할 수 있습니다 String
얻었다 그 Long.toString()
에게 long
?
나는 자바에 간단한 질문이 있어요 : 어떻게 변환 할 수 있습니다 String
얻었다 그 Long.toString()
에게 long
?
답변:
사용하다 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
문자열 을 Long (객체)으로 변환하려면Long.valueOf(String s).longValue();
링크 참조
java.lang.Long
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());
}
}
}
Long.valueOf (String s) -코드에서 가능하다면 숫자가 아닌 숫자로부터 보호하기 위해 적절한주의를 기울여야합니다.
가장 좋은 방법은 Long.valueOf(str)
그것에 의존로 Long.valueOf(long)
의 캐시 된 인스턴스가 필요한 경우는 다시 사용하기 때문에 더 효율적 내부 캐시를 사용하는 Long
에서 진행 -128
에 127
포함되어 있습니다.
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)
. 생성자는 호출 될 때마다 새로운 객체를 생성하지만 정적 팩토리 메소드는 그렇게 할 필요가 없으며 실제로는 그렇지 않습니다.
Long number = Long.valueOf("123")
, Long number = Long.parseLong("123")
그리고 Long number = Long.valueOf(Long.parseString("123")
모든 거의 같은 일을 끝낸다. 주의 해야 할 것은 박스형 기본 클래스의 생성자를 호출하지 않는 것입니다. 이는 낭비적일 수 있습니다. 그래서 쓰지 않는다Long number = new Long(parseLong("123"))
문자열을 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.");
}
아주 간단합니다.
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);
끝났습니다 !!!
Kotlin으로 전환 한 사람들은 바로 후드 아래에서
string.toLong()
호출 Long.parseLong(string)
합니다.
일반없이 맵을 사용하는 경우 값을 문자열로 변환 한 다음 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);