[課題8]文字列解答

今回の課題を真面目に対応された方、誠にありがとうございます。そして、お疲れ様でした。
1つ1つ丁寧に確認した場合、System.out.println( 値 );に直接ハードコーディングして、
public static final void main( String[] args){ }内に直接記述しても、
最低50行前後程度のサンプルが記述できたと思います。

本課題の解答のポイントは、String及びプリミティブ型の1つ1つのメソッドを確かめて構文とその動作を貴方が丁寧に確認することです。

Javaソースファイル

2017年2月時点の私の解答例を以下に示します。

StringSamples.java
/**
 * Copyright 2017 yourcompany.
 * 本ソースファイルの著作権は株式会社yourcompanyに所属します。
 * 株式会社yourcompanyの許可なくして、本ソースファイルの
 * 配布、改修、コピー、利用を禁止します。
 * 会社名               :株式会社yourcomapny
 * 組織名               :システム開発部
 * プロジェクトコード   :education
 * バージョン           :1.0
 * 最終更新日時         :2017/02/10 17:21
 */
package jp.co.yourcompany.education.samples;

/**
 * Stringクラス及び8つのラッパークラスの
 * 操作を学習するためのクラス
 * @author raita.kuwabara
 *
 */
public class StringSamples {

    //---------------------------------------- サンプル実行出力開始・終了用

    /**
     * メソッド共通の開始文の定型出力
     * @param methodName 出力するメソッド名
     */
    private void outputStartMethod( String methodName ) {
        System.out.println("----- " + methodName + " START -----");
    }

    /**
     * メソッド共通の開始文の定型出力
     * @param methodName 出力するメソッド名
     */
    private void outputEndMethod( String methodName ) {
        System.out.println("----- " + methodName + " END -----");
    }

    /**
     * 全てのサンプルを実行する
     */
    public void execAllSamples(){

        outputCharacterSample();

        outputCharacterComparisonSample();

        outputStringSample();

        outputStringFormatSample();

        outputStringProcessingSample();

        outputStringSearchSample();

        outputStringToNumberSample();

        outputAutoBoxingSample();

    }

    /**
     * Characterクラスのサンプル
     */
    public void outputCharacterSample(){
        outputStartMethod( "outputCharacterSample" );

        Character comma = new Character(',');
        Character period = new Character('.');
        Character token = new Character(',');
        Character token2 = comma;

        char commaChar = comma.charValue();
        System.out.println( "Character comma =" + comma );
        System.out.println( "comma.toString() =" + comma.toString() );
        System.out.println( "char commaChar  =" + commaChar );

        if( comma.equals( period ) ){
            System.out.println( " comma is equal to period." );
        } else {
            System.out.println( "comma is not equal to period." );
        }

        //equalsによる比較
        System.out.println( "token.equals(comma) :" + token.equals( comma ) );
        //インスタンスの一致可否
        System.out.println( "token == comma :" + ( token == comma ) );
        //インスタンスの一致可否
        System.out.println( "token2 == comma :" + ( token2 == comma ) );

        //compareToによる比較(不一致のケース)
        System.out.println( "comma.compareTo( period ) :" + comma.compareTo( period ) );
        //compareToによる比較(一致のケース)
        System.out.println( "comma.compareTo( token ) :" + comma.compareTo( token ) );

        outputEndMethod( "outputCharacterSample" );
    }

    /**
     * Characterクラスのサンプル
     * @see java.lang.Character
     */
    public void outputCharacterComparisonSample(){
        outputStartMethod( "outputCharacterSample" );

        Character charValLower = new Character('a');
        Character charValUpper = new Character('A');

        //半角スペース
        Character whiteSpace = new Character( ' ' );
        //全角スペース
        Character whiteSpace_ja = new Character( ' ' );
        System.out.println(" charValLower[" + charValLower + "]");
        System.out.println(" charValUpper[" + charValUpper + "]");
        System.out.println(" whiteSpace[" + whiteSpace + "]");
        System.out.println(" whiteSpace[" + whiteSpace_ja + "]");

        System.out.println(" Character.isDigit( charValLower ) :" + Character.isDigit( charValLower ) );
        System.out.println(" Character.isLetter( charValLower ) :" + Character.isLetter( charValLower ) );
        System.out.println(" Character.isLetterOrDigit( charValLower ) :" + Character.isLetterOrDigit( charValLower ) );
        System.out.println(" Character.toLowerCase( charValUpper ) :" + Character.toLowerCase( charValUpper ) );
        System.out.println(" Character.toUpperCase( charValLower ) :" + Character.toUpperCase( charValLower ) );
        System.out.println(" Character.isWhiteSpace( whiteSpace ) :" + Character.isWhitespace( whiteSpace ) );
        System.out.println(" Character.isWhiteSpace( whiteSpace_ja ) :" + Character.isWhitespace( whiteSpace_ja ) );

        outputEndMethod( "outputCharacterSample" );
    }

    /**
     * Stringクラスのサンプル
     * コンストラクタ、文字列連結、長さ
     */
    public void outputStringSample(){
        outputStartMethod( "outputStringConstructSample" );

        String str = new String("日本");
        String str2 = "日本";
        char[] charArrays = {'日' , '本'};
        String str3 = new String( charArrays );
        String str4  = "のおもてなし";

        System.out.println(" new String(¥"日本¥");" + str );
        System.out.println(""日本";" + str2 );
        System.out.println(" new String( {'日','本'} );" + str3 );

        System.out.println("str.legnth:" + str.length() );
        System.out.println("str.getBytes().legnth:" + str.getBytes().length  );

        System.out.println("str + str4:" + str + str4 );
        System.out.println("str.concat( str4: )" + str + str4 );

        outputEndMethod( "outputStringSample" );
    }

    /**
     * Stringクラスのサンプル
     * コンストラクタ、文字列連結、長さ
     */
    public void outputStringFormatSample(){
        outputStartMethod( "outputStringFormatSample" );

        Integer a = new Integer(100);
        Float b = 3.1415f;
        String c = "百十ー";
        java.util.Date now = new java.util.Date();
        String strFormat ="%d is a Integer value.\n %.2f is Float value.\n %s is a String Value.\n Now is %tY年 %tm月 %td日";

        String result = String.format( strFormat , a , b, c  , now , now , now);
        System.out.println( "a=" + a );
        System.out.println( "b=" + b );
        System.out.println( "c=" + c );
        System.out.println( "now=" + now );
        System.out.println( "strFormat=" + strFormat);
        System.out.println( "result=" + result);

        outputEndMethod( "outputStringFormatSample" );
    }

    /**
     * Stringクラスのサンプル
     * コンストラクタ、文字列連結、長さ
     */
    public void outputStringToNumberSample(){
        outputStartMethod( "outputStringToNumberSample" );

        Byte byteObj = new Byte( "10" );
        Short shortObj = new Short( "10" );
        Integer integerObj = new Integer( "10" );
        Long longObj = new Long( "10" );
        Float floatObj = new Float( "10.001" );
        Double doubleObj = new Double( "10.00001" );

        System.out.println( "Byte:" + byteObj );
        System.out.println( "Short:" + shortObj );
        System.out.println( "Integer:" + integerObj );
        System.out.println( "Long:" + longObj );
        System.out.println( "Float:" + floatObj );
        System.out.println( "Double:" + doubleObj );


        Byte byteObj2 = Byte.valueOf( "10" );
        Short shortObj2 = Short.valueOf( "10" );
        Integer integerObj2 = Integer.valueOf( "10" );
        Long longObj2 = Long.valueOf( "10" );
        Float floatObj2 = Float.valueOf( "10.001" );
        Double doubleObj2 = Double.valueOf( "10.00001" );

        System.out.println("Byte.valueOf( ¥"10¥" )=" + byteObj2 );
        System.out.println("Short.valueOf( ¥"10¥" )=" + shortObj2 );
        System.out.println("Integer.valueOf(¥"10¥" )=" + integerObj2 );
        System.out.println("Long.valueOf( ¥"10¥" )=" + longObj2 );
        System.out.println("Float.valueOf( ¥"10.001¥" )=" + floatObj2);
        System.out.println("Double.valueOf( ¥"10.00001¥" )=" + doubleObj2);

        byte byteNumber = byteObj.byteValue();
        short shortNumber= shortObj.shortValue();
        int intNumber =  integerObj.intValue();
        long longNumber = longObj.longValue();
        float floatNumber = floatObj.floatValue();
        double dobuleObj = doubleObj.doubleValue();

        System.out.println("byteObj.byteValue()=" + byteNumber );
        System.out.println("shortObj.shortValue()=" + shortNumber );
        System.out.println("integerObj.intValue()=" + intNumber );
        System.out.println("longObj.longValue()=" + longNumber );
        System.out.println("floatNumber=" + floatNumber );
        System.out.println("doubleObj.doubleValue()=" + dobuleObj);

        outputEndMethod( "outputStringToNumberSample" );
    }

    /**
     * Stringクラスの加工・切り取りサンプル
     */
    public void outputStringProcessingSample(){
        outputStartMethod( "outputStringProcessingSample" );

        String str = "Javaプログラムは、オブジェクト指向言語であり、大変学習がしやすいです。 " +
                  "JAVAは、英語でジャワ産のコーヒーも意味します。JAvaのロゴが、コーヒーカップだったの理解できます。";

        String newStr  = str.replaceAll("プログラム" ," Program" ) ;
        String newStr2 = str.replaceAll("(?i)JAVA" ,"Java" ) ;
        System.out.println("str:" + str);
        System.out.println("newStr:" + newStr);
        System.out.println("newStr2:" + newStr2);

        String str2 = "Java1.4,JAVA5,JavaSE,JAva,JDK,Java";
        String[] strArrays = str2.split(",");
        String[] strArrays2 = str2.split("(?i)JAVA");

        for( int i = 0 ; i < strArrays.length ; i++ ){
            System.out.println("strArrays[" + i + "]=" + strArrays[i]);
        }

        for( int i = 0 ; i < strArrays2.length ; i++ ){
            System.out.println("strArrays2[" + i + "]=" + strArrays2[i]);
        }

        String userId = "201402054100005";
        UserIdCode userIdCode = new UserIdCode( userId );
        System.out.println( userIdCode.toString() );

        System.out.println( "Java".toUpperCase() );
        System.out.println( "Java".toLowerCase() );

        outputEndMethod( "outputStringProcessingSample" );
    }

    /**
     * Stringクラスの検索・比較サンプル
     */
    public void outputStringSearchSample(){
        outputStartMethod( "outputStringSearchSample" );

        System.out.println( "Java".equals( "Java" ) );
        System.out.println( "Java".equals( "JAVA" ) );

        String str = "Javaプログラムは、とても理解し易い言語です。";
        System.out.println( "firstIndex:" + str.indexOf("とても") );
        System.out.println( "firstIndex:" + str.indexOf("very") );

        String str2 = "Java1.4,Java5,JavaSE,JavaEE,Java8";
        System.out.println("lastIndex:" + str2.lastIndexOf("Java") );

        String str3 = "Java1.4,Java5,JavaSE,JavaEE,Java8";
        System.out.println( "str3:" + str3 );
        System.out.println( "str3.charAt( 4 ):" + str3.charAt( 4 ) );

        outputEndMethod( "outputStringSearchSample" );
    }

    /**
     * Stringクラスの検索・比較サンプル
     */
    public void outputAutoBoxingSample(){
        outputStartMethod( "outputAutoBoxingSample" );

        //プリミティブ型からラッパークラスの生成
        Integer i = new Integer(100);
        //ラッパークラスからintへの変換
        int i2 = i.intValue();

        //プリミティブ型からラッパークラスの生成
        long l = i2 * i;

        System.out.println( "Integer i :" + i );
        System.out.println( "int i2    :" + i2 );
        System.out.println( "i2 * i    :" + l );

        outputEndMethod( "outputAutoBoxingSample" );
    }


    /**
     * javaコマンドで実行するサンプル
     * @param args javaコマンドの引数[不要]
     */
    public static final void main( String[] args ){

        StringSamples stringSamples = new StringSamples();
        stringSamples.execAllSamples();

    }

}

						
UserIdCode.java
/**
 * Copyright 2017 yourcompany.
 * 本ソースファイルの著作権は株式会社yourcompanyに所属します。
 * 株式会社yourcompanyの許可なくして、本ソースファイルの
 * 配布、改修、コピー、利用を禁止します。
 * 会社名               :株式会社yourcompany
 * 組織名               :システム開発部
 * プロジェクトコード   :education
 * バージョン           :1.0
 * 最終更新日時         :2017/03/05 04:00
 */

package jp.co.yourcompany.education.samples;

/**
 * splitのサンプル
 * @author raita.kuwabara
 */
public class UserIdCode {

    /**
     * ユーザIDのビジネスロジックは「先頭8桁が入会日(西暦8桁)」
     */
    public static final int USER_ID_JOIN_DATE_LENGTH = 8;
    /**
     * ユーザIDの9から10桁が都道府県コード
     */
    public static final int USER_ID_PREFECTURES_CD_LENGTH = 2;
    /**
     * ユーザIDの連番部分は5桁
     */
    public static final int USER_ID_SEQUENCE_LENGTH = 5;

    /**
     * 入会日西暦8桁
     */
    private String joinDateCd = null;
    /**
     * 都道府県CD2桁
     */
    private String prefecturesCd = null;
    /**
     * 連番コード
     */
    private String sequenceCd = null;

    /**
     * デフォルトコンストラクタ
     * @param userId 利用者ID
     * @return 分割した利用者IDのDTO
     */
    public UserIdCode( String userId ){
        setJoinDateCd( userId.substring( 0 , UserIdCode.USER_ID_JOIN_DATE_LENGTH  ) );
        setPrefecturesCd( userId.substring( UserIdCode.USER_ID_JOIN_DATE_LENGTH ,
                UserIdCode.USER_ID_JOIN_DATE_LENGTH  + USER_ID_PREFECTURES_CD_LENGTH  ) );
        setSequenceCd( userId.substring( userId.length() -  USER_ID_SEQUENCE_LENGTH ,
                userId.length()  ) );
    }

    /**
     * ユーザIDを構成する入会日8桁を取得する。
     * @return joinDateCd 入会日8桁
     */
    public String getJoinDateCd() {
        return joinDateCd;
    }

    /**
     * ユーザIDを構成する入会日8桁を設定する。
     * @return joinDateCd 入会日8桁
     */
    public void setJoinDateCd(String joinDateCd) {
        this.joinDateCd = joinDateCd;
    }

    /**
     * ユーザIDを構成する都道府県コード2桁を取得する。
     * @return prefecturesCd 都道府県コード2桁
     */
    public String getPrefecturesCd() {
        return prefecturesCd;
    }

    /**
     * ユーザIDを構成する都道府県コード2桁を設定する。
     * @param prefecturesCd 都道府県コード2桁
     */
    public void setPrefecturesCd(String prefecturesCd) {
        this.prefecturesCd = prefecturesCd;
    }

    /**
     * ユーザIDを構成する連番5桁を取得する。
     * @return 連番5桁
     */
    public String getSequenceCd() {
        return sequenceCd;
    }

    /**
     * ユーザIDを構成する連番5桁を設定する。
     * @param 連番5桁
     */
    public void setSequenceCd(String sequenceCd) {
        this.sequenceCd = sequenceCd;
    }

    /**
     * UserIdCodeのプロパティを全て文字列に変換する。
     * @return UserIdCodeプロパティの出力
     */
    public String toString(){
        return "[JoinDateCd]" + getJoinDateCd() +
                "[perfecutresCd]" + getPrefecturesCd() +
                "[sequenceCd]" + getSequenceCd();
    }
}
						
実行コマンドの手順
c:¥projects¥education>javac -d deploy¥classes -s src¥main¥java -encoding UTF8
 src¥main¥java¥jp¥co¥yourcompany¥education¥samples¥*.java
c:¥projects¥education>jar -cvf deploy¥education-main.jar -C deploy¥classes .
c:¥projects¥education>java -cp deploy¥education-main.jar jp.co.yourcompany.education.samples.StringSamples
						
実行結果
----- outputCharacterSample START -----
Character comma =,
comma.toString() =,
char commaChar  =,
comma is not equal to period.
token.equals(comma) :true
token == comma :false
token2 == comma :true
comma.compareTo( period ) :-2
comma.compareTo( token ) :0
----- outputCharacterSample END -----
----- outputCharacterSample START -----
 charValLower[a]
 charValUpper[A]
 whiteSpace[ ]
 whiteSpace[ ]
 Character.isDigit( charValLower ) :false
 Character.isLetter( charValLower ) :true
 Character.isLetterOrDigit( charValLower ) :true
 Character.toLowerCase( charValUpper ) :a
 Character.toUpperCase( charValLower ) :A
 Character.isWhiteSpace( whiteSpace ) :true
 Character.isWhiteSpace( whiteSpace_ja ) :true
----- outputCharacterSample END -----
----- outputStringConstructSample START -----
 new String("日本");日本
"日本";日本
 new String( {'日','本'} );日本
str.legnth:2
str.getBytes().legnth:6
str + str4:日本のおもてなし
str.concat( str4: )日本のおもてなし
----- outputStringSample END -----
----- outputStringFormatSample START -----
a=100
b=3.1415
c=百十ー
now=Sun Mar 05 03:38:17 JST 2017
strFormat=%d is a Integer value.
 %.2f is Float value.
 %s is a String Value.
 Now is %tY年 %tm月 %td日
result=100 is a Integer value.
 3.14 is Float value.
 百十ー is a String Value.
 Now is 2017年 03月 05日
----- outputStringFormatSample END -----
----- outputStringProcessingSample START -----
str:Javaプログラムは、オブジェクト指向言語であり、大変学習がしやすいです。 JAVAは、英語でジャワ産のコーヒーも意味します。JAvaのロゴが、コーヒーカップだったの理解できます。
newStr:Java Programは、オブジェクト指向言語であり、大変学習がしやすいです。 JAVAは、英語でジャワ産のコーヒーも意味します。JAvaのロゴが、コーヒーカップだったの理解できます。
newStr2:Javaプログラムは、オブジェクト指向言語であり、大変学習がしやすいです。 Javaは、英語でジャワ産のコーヒーも意味します。Javaのロゴが、コーヒーカップだったの理解できます。
strArrays[0]=Java1.4
strArrays[1]=JAVA5
strArrays[2]=JavaSE
strArrays[3]=JAva
strArrays[4]=JDK
strArrays[5]=Java
strArrays2[0]=
strArrays2[1]=1.4,
strArrays2[2]=5,
strArrays2[3]=SE,
strArrays2[4]=,JDK,
[JoinDateCd]20140205[perfecutresCd]41[sequenceCd]00005
JAVA
java
----- outputStringProcessingSample END -----
----- outputStringSearchSample START -----
true
false
firstIndex:11
firstIndex:-1
lastIndex:28
str3:Java1.4,Java5,JavaSE,JavaEE,Java8
str3.charAt( 4 ):1
----- outputStringSearchSample END -----
----- outputStringToNumberSample START -----
Byte:10
Short:10
Integer:10
Long:10
Float:10.001
Double:10.00001
Byte.valueOf( "10" )=10
Short.valueOf( "10" )=10
Integer.valueOf( "10" )=10
Long.valueOf( "10" )=10
Float.valueOf( "10.001" )=10.001
Double.valueOf( "10.00001" )=10.00001
byteObj.byteValue()=10
shortObj.shortValue()=10
integerObj.intValue()=10
longObj.longValue()=10
floatNumber=10.001
doubleObj.doubleValue()=10.00001
----- outputStringToNumberSample END -----
----- outputAutoBoxingSample START -----
Integer i :100
int i2    :100
i2 * i    :10000
----- outputAutoBoxingSample END -----
						

StringSamples.javaのダウンロードと実行方法

java_sample8.zipファイルを「c:¥download¥java¥samples¥」に保存して下さい。

java_sample8.zipファイルを「c:¥projects」配下に展開して下さい。

コマンドプロンプトを起動して、「sample8.bat」を実行して下さい。

javac,jar,javaコマンドが随時実行されて、実行結果の内容が表示されます。

Linux,Unix,iOSの方はバッチファイルはお手数ですが作成して下さい。改行コードが「CRLF」の点ご留意ください。