1概要

この簡単な記事では、

String

オブジェクトをJavaでサポートされているさまざまなデータ型に簡単に変換する方法をいくつか紹介します。


2

String

から

int

または

Integer


への変換


String

をプリミティブ

int

または

Integer

ラッパー型に変換する必要がある場合は、

parseInt()

または

valueOf()

APIを使用して、対応する

int

または

Integer

戻り値を取得できます。

@Test
public void whenConvertedToInt__thenCorrect() {
    String beforeConvStr = "1";
    int afterConvInt = 1;

    assertEquals(Integer.parseInt(beforeConvStr), afterConvInt);
}

@Test
public void whenConvertedToInteger__thenCorrect() {
    String beforeConvStr = "12";
    Integer afterConvInteger = 12;

    assertEquals(Integer.valueOf(beforeConvStr).equals(afterConvInteger), true);
}


3

String

から

long

または

Long


への変換


String

をプリミティブ

long

または

Long

ラッパー型に変換する必要がある場合は、それぞれ

parseLong()

または

valueOf()

を使用できます。

@Test
public void whenConvertedTolong__thenCorrect() {
    String beforeConvStr = "12345";
    long afterConvLongPrimitive = 12345;

    assertEquals(Long.parseLong(beforeConvStr), afterConvLongPrimitive);
}

@Test
public void whenConvertedToLong__thenCorrect() {
    String beforeConvStr = "14567";
    Long afterConvLong = 14567l;

    assertEquals(Long.valueOf(beforeConvStr).equals(afterConvLong), true);
}


4

String

から

double

または

Double


への変換


String

をプリミティブ

double

または

Double

ラッパー型に変換する必要がある場合は、それぞれ

parseDouble()

または

valueOf()

を使用できます。

@Test
public void whenConvertedTodouble__thenCorrect() {
    String beforeConvStr = "1.4";
    double afterConvDoublePrimitive = 1.4;

    assertEquals(Double.parseDouble(beforeConvStr), afterConvDoublePrimitive, 0.0);
}

@Test
public void whenConvertedToDouble__thenCorrect() {
    String beforeConvStr = "145.67";
    double afterConvDouble = 145.67d;

    assertEquals(Double.valueOf(beforeConvStr).equals(afterConvDouble), true);
}


5

String

から

ByteArray


への変換


String

をバイト配列に変換するために、

getBytes()はプラットフォームのデフォルトの文字セットを使用して

String__を一連のバイトにエンコードし、結果を新しいバイト配列に格納します。

渡された

String

がデフォルトの文字セットを使用してエンコードできない場合、

getBytes()

の動作は不定です。 java

documentation

に従って、https://docs.oracle.com/javase/7/docs/エンコード処理をさらに制御する必要がある場合は、api/java/nio/charset/CharsetEncoder.html[]クラスを使用する必要があります。

@Test
public void whenConvertedToByteArr__thenCorrect() {
    String beforeConvStr = "abc";
    byte[]afterConvByteArr = new byte[]{ 'a', 'b', 'c' };

    assertEquals(Arrays.equals(beforeConvStr.getBytes(), afterConvByteArr), true);
}


6.

String

から

CharArray


への変換


String



CharArray

インスタンスに変換するには、単に

toCharArray()

を使用します。

@Test
public void whenConvertedToCharArr__thenCorrect() {
    String beforeConvStr = "hello";
    char[]afterConvCharArr = { 'h', 'e', 'l', 'l', 'o' };

    assertEquals(Arrays.equals(beforeConvStr.toCharArray(), afterConvCharArr), true);
}


7.

String

から

boolean

または

Boolean


への変換


String

インスタンスをプリミティブ

boolean

または

Boolean

ラッパー型に変換するには、それぞれ

parseBoolean()

または

valueOf()

APIを使用できます。

@Test
public void whenConvertedToboolean__thenCorrect() {
    String beforeConvStr = "true";
    boolean afterConvBooleanPrimitive = true;

    assertEquals(Boolean.parseBoolean(beforeConvStr), afterConvBooleanPrimitive);
}

@Test
public void whenConvertedToBoolean__thenCorrect() {
    String beforeConvStr = "true";
    Boolean afterConvBoolean = true;

    assertEquals(Boolean.valueOf(beforeConvStr), afterConvBoolean);
}


8

String

から

Date

または

LocalDateTime


への変換

Java 6には、日付を表すための

java.util.Date

データ型が用意されています。

Java 8では、古い

java.util.Date



java.util.Calendar

の欠点を解決するために、

Date



Time

の新しいAPIが導入されました。

詳しくは

this

の記事を読んでください。


8.1.

String

から

java.util.Date


への変換


String

オブジェクトを

Date

オブジェクトに変換するには、最初に日付と時刻の形式を記述するパターンを渡して

SimpleDateFormat

オブジェクトを作成する必要があります。

たとえば、patternに指定できる値は、「MM-dd-yyyy」または「yyyy-MM-dd」です。次に、

String

を渡して

parse

メソッドを呼び出す必要があります。

引数として渡される

String

は、パターンと同じ形式でなければなりません。そうでなければ、

ParseException

が実行時にスローされます。

@Test
public void whenConvertedToDate__thenCorrect() throws ParseException {
    String beforeConvStr = "15/10/2013";
    int afterConvCalendarDay = 15;
    int afterConvCalendarMonth = 9;
    int afterConvCalendarYear = 2013;
    SimpleDateFormat formatter = new SimpleDateFormat("dd/M/yyyy");
    Date afterConvDate = formatter.parse(beforeConvStr);
    Calendar calendar = new GregorianCalendar();
    calendar.setTime(afterConvDate);

    assertEquals(calendar.get(Calendar.DAY__OF__MONTH), afterConvCalendarDay);
    assertEquals(calendar.get(Calendar.MONTH), afterConvCalendarMonth);
    assertEquals(calendar.get(Calendar.YEAR), afterConvCalendarYear);
}


8.2.

String

から

java.time.LocalDateTime


への変換

____は時間を表す不変の日時オブジェクトで、年月日日時時分秒とよく見られます。

Stringオブジェクトを

LocalDateTime

オブジェクトに変換するには、単純に

parse

APIを使用します。

@Test
public void whenConvertedToLocalDateTime__thenCorrect() {
    String str = "2007-12-03T10:15:30";
    int afterConvCalendarDay = 03;
    Month afterConvCalendarMonth = Month.DECEMBER;
    int afterConvCalendarYear = 2007;
    LocalDateTime afterConvDate
      = new UseLocalDateTime().getLocalDateTimeUsingParseMethod(str);

    assertEquals(afterConvDate.getDayOfMonth(), afterConvCalendarDay);
    assertEquals(afterConvDate.getMonth(), afterConvCalendarMonth);
    assertEquals(afterConvDate.getYear(), afterConvCalendarYear);
}

それ以外の場合、

String

は有効な時間を表す必要があります。それ以外の場合、

ParseException

が実行時にスローされます。

.


9結論

このクイックチュートリアルでは、S

__tring

__オブジェクトをjavaでサポートされているさまざまなデータ型に変換するためのさまざまなユーティリティメソッドについて説明しました。

この記事の完全なソースコードとすべてのコードスニペットはhttps://github.com/eugenp/tutorials/tree/master/java-strings[GitHubで利用可能]です。