JAVA-13

35894 ワード

JAVA-13


API(Application Programming Interface)

  • アプリケーションプログラミングインターフェース
  • これは、
  • Javaシステムを制御するためにJavaが提供するコマンドを意味する.
  • 先達開発者がJavaを容易に符号化するために予め構築した
  • APIは種類が多く、全部暗記することは絶対に不可能です.
    したがって,初めて見たAPIであっても,説明を正しく読み,それを正しい目的に用いる方法を理解する必要がある.
  • CoolsMSの概要

  • の使用方法
    登録会員>API
    開発開始>API KEY管理>API Secret(サブパスワード設定)
    カスタマーサポート>開発センター>SDK>JAVA
    JAVA SDK2.2 > Start here
    githubでjavasdK-2.2.jarファイルのダウンロード
    再びホームページからJsonSimpleLibraryをダウンロード
    このクリップを返し、ダウンロードしたjarファイルをインポートします.

    作成するアイテムを右クリック>
    [パスを生成]>[パスを生成する構成]をクリックします.

    Library>Add External JARSをクリックし、保存したファイルをインポート
    再びホームページで、SDK>JAVA>JAVASDK 2.2>例
    必要なコードを選択
    ショートメッセージを送信
    関連コードはウェブサイトにコピーされます.
  • package sms;
    
    import java.util.HashMap;
    import org.json.simple.JSONObject;
    import net.nurigo.java_sdk.api.Message;
    import net.nurigo.java_sdk.exceptions.CoolsmsException;
    
    public class CoolSMSTest {
    	public static void main(String[] args) {
    		String api_key = "API 키";
    	    String api_secret = "API SECRET 키";
    	    Message coolsms = new Message(api_key, api_secret);
    
    	    // 4 params(to, from, type, text) are mandatory. must be filled
    	    HashMap<String, String> params = new HashMap<String, String>();
    	    params.put("to", "받는사람 번호");
    	    params.put("from", "보내는사람 번호");
    	    params.put("type", "SMS");
    	    params.put("text", "보낼 메세지");
    	    params.put("app_version", "test app 1.2"); // application name and version
    
    	    try {
    			//메세지 전송
    			JSONObject obj = (JSONObject) coolsms.send(params);
    			//보내진 이후에 해야할 행위들 작성
    			System.out.println(obj.toString());
    	    } catch (CoolsmsException e) {
    			System.out.println(e.getMessage());
    			System.out.println(e.getCode());
    	    }
    	}
    }

    Objectクラス


    は、すべてのクラスの最上位レベルです.
  • toString()
    オブジェクトを出力するときに表示される文字列定義/オブジェクトに含まれる情報を記述する文字列
  • .
    public String toString() {
          return getClass().getName() + "@" + Integer.toHexString(hashCode());
      }
    StringタイプのtoStringメソッドには、オブジェクトクラスメソッドがあります.
    簡単に言えば、toStringを使うのはクラスです.クラス名@クラス名に関連する整数を返します.
    TOString出力
  • を試します
    package object;
    public class ObjectTest {
    	public static void main(String[] args) {
    //		Car타입의 클래스를 만들고 mycar로 객체화 시켰다.
    		Car mycar = new Car("Ferrari");
    //		객체화 시켜서 객체의 이름을 출력했다.
    		System.out.println(mycar);
    //		String타입으로 mycar를 toString함수를 사용하였다.
    		String str = mycar.toString();
    //		String메소드를 사용한 mycar를 str에 담고 출력했다.
    		System.out.println(str);
    	}
    }
    class Car{
    	String brand;
    
    	public Car(String brand) {
    		super();
    		this.brand = brand;
    	}
    結果は以下の通りです.
    object.Car@15db9742
    object.Car@15db9742
    我々が見たObjectクラスのメソッドtoStringのように,戻り値はフォーマットに合致する.
    しかし、上の結果値は読めますか?
    もちろん,ObjectクラスのCarタイプクラスであることが分かるとしても,我々が望む値ではない.目的の値を明示的に返しましょう
    前述したように、toStringは共通の方法である.つまり、継承されたクラスで使用を再定義できます.それでは、私たちが望む価格で返品できます.
    また,クラス名のみを出力すればtoStringの役割を実行できるので,これほど便利なものはない.
    package object;
    
    public class ObjectTest {
    	public static void main(String[] args) {
    //		Car타입의 클래스를 만들고 mycar로 객체화 시켰다.
    		Car mycar = new Car("Ferrari");
    //		객체화 시켜서 객체의 이름을 출력했다.
    		System.out.println(mycar);
    	}
    }
    class Car{
    	String brand;
    
    	public Car(String brand) {
    		super();
    		this.brand = brand;
    	}
        // 아래와 같이 toString을 재정의하여 우리가 원하는 값을 반환하도록 하였다.
    	@Override
    	public String toString() {
    		return "브랜드 : "+brand;
    	}
    	
    }
    結果は以下の通りです.
    브랜드 : Ferrari
    私たちは欲しい等級値を得た.
    比較してみる
    object.Car@15db9742
    どちらが見やすいですか??
    再定義がもっと見えにくいといえば、再定義の目的を達成していないことです.
    現在、Carクラスを使用すると、クラス名のみが出力される場合に上記の結果値が得られます.
    上記の概念と同様にequals()とhasCode()の方法を見てみましょう.
    次のequalsメソッドの前の==は何ですか?
  • ==
    2つの彫刻値が等しいかどうかを確認する演算子

  • まず次のコードを見てください.
    String msg1 = "RedVelvet";
    String msg2 = "RedVelvet";
    System.out.println(msg1 == msg2);
    		
    String msg3 = new String("RedVelvet");
    String msg4 = new String("RedVelvet");
    System.out.println(msg3 == msg4);
    各演算子はどの値を返しますか?
    まずStringはtrueを返し、次の2つのオブジェクトはfalseを返します.
    どうしてこんなことが起こったの?二つは同じ値段じゃないですか???
    Stringを使用して変数を作成すると、その変数に最初にアドレス値が割り当てられます.
    この変数のアドレス値は、RedVelvetというmsg 1変数を有する.
    次にStringタイプの変数を作成し、アドレスの再割り当てではなく値を割り当てます.同じ値があるかどうかを確認している場合は、同じアドレスが割り当てられ、別の側面のアドレスが割り当てられます.
    (意味がわからなければ検索ㄱ、私が勉強のために書いたとしても、読んでも意味が分からないよ)
    では、Stringをnewキーワードとしてオブジェクトを作成するとどうなるのでしょうか.
    動作はニンジン類のオブジェクト化のように「異なるアドレス値」を割り当てる.
    オブジェクトを作成するたびに異なるアドレス値が割り当てられるようにします.
    もう一度最初に戻ります.==は、この2つのアドレス値が同じ演算子であることを示します.
    次のコードはtrue/falseです
    String msg1 = "RedVelvet";
    String msg2 = "RedVelvet";
    System.out.println(msg1 == msg2);
    //같은 주소값을 비교하는 거임 그래서 true
    
    		
    String msg3 = new String("RedVelvet");
    String msg4 = new String("RedVelvet");
    System.out.println(msg3 == msg4);
    //다른 주소를 비교하는 거임 그래서 false
    equalsメソッドを見てみましょう.equalsメソッドは異なる値を返します.クラスオブジェクト比較とStringタイプのクラス比較です.
  • equals()
  • メソッドは、2つのアドレス値が同じかどうかをチェックする
  • .
    次のコードの最初の結果はtrueを返し、2番目はfasleを返します.
    いったいどういうことですか.
    実際にequalsはアドレス値を返します.
    		String msg3 = new String("RedVelvet");
    		String msg4 = new String("RedVelvet");
    		System.out.println(msg3.equals(msg4));
    		
    		//동위객체
    		User user1 = new User(1, 1234);
    		User user2 = new User(1, 1234);
    		System.out.println(user1.equals(user2));
    1番目と2番目のequalsは異なる方法を参照します.
    Stringのequalsの比較
    public boolean equals(Object anObject) {
            if (this == anObject) {
                return true;
            }
            if (anObject instanceof String) {
                String anotherString = (String)anObject;
                int n = value.length;
                if (n == anotherString.value.length) {
                    char v1[] = value;
                    char v2[] = anotherString.value;
                    int i = 0;
                    while (n-- != 0) {
                        if (v1[i] != v2[i])
                            return false;
                        i++;
                    }
                    return true;
                }
            }
            return false;
        }
    上記のコードを完全に理解するのは難しいが,アドレス値が同じであればtrueを返す.しかし、作成したStringには異なるアドレス値があります.
    だから第1条件文を通じて、第2条件文に着きます.instanceofで比較すると、本物の場合、その値は条件文を通ります.Stringを条件文に比較して実行します.Stringタイプを使用して降格し、nという変数を使用して値を比較し、値が異なる場合はfalse、同じ場合はtrueを返します.
    2番目の条件文も偽物である場合、falseが返されます.私たちが比較した文字列をnで比較すると、trueが真で返されます.
    比較オブジェクトのequalsは単純なアドレス値のみを比較します.
    public boolean equals(Object obj) {
            return (this == obj);
        }
    さあ、Stringクラスがequalsメソッドを再定義したことを知っている以上、自分の好みに合わせて再定義しましょう.
    オブジェクトを再定義し、値が同じ場合はStringではなくtrueを返します.
    @Override
    	public boolean equals(Object obj) {
    //		최초 객체가 들어오면서 우리의 객체는 Object 상위 클래스에 담기기 때문에 업캐스팅이 이루어 진다.
    		//1. 타입비교(해당하는 클래스 타입의 객체가 매개변수로 넘어왔는지)
    //		업캐스팅 되었는지 확인하고 맞으면 다운 캐스팅
    		if(obj instanceof User) {
    			//2. 다운캐스팅
    			User target = (User)obj;
    			
    			//3. 조건 판별
    			//if(this.userid.equals(target.userid))
    			if(this.userid == target.userid) {
    				if(this.userpw == target.userpw) {
    					return true;
    				}
    			}
    		}
    		return false;
    	}
    前述したように、次のコードもtrueを返します.
    //동위객체
    		User user1 = new User(1, 1234);
    		User user2 = new User(1, 1234);
    		System.out.println(user1.equals(user2));
  • hasCode()
  • ハッシュ値(アドレス値に関連するint値を返す)
  • ハッシュコードは、アドレス値も整数を返すので、異なるオブジェクトは異なる値を返します.
    System.out.println(user1.hashCode()); //366712642
    System.out.println(user2.hashCode()); //1829164700
    値が同じオブジェクトであれば、値を同じにするオーバーライドプロセスを行います.
    したがって、hashCodeもカバーすることができる.
    @Override
    public int hashCode(){
    	return userid;
    }
    上記のコードでは、同じオブジェクトが持つ同じ値を簡単に返します.
    したがって、2つのオブジェクトが同じアドレス値を持つようになりました.
    System.out.println(user1.hashCode()); //1
    System.out.println(user2.hashCode()); //1
    これらのオブジェクトクラスのメソッドを再定義し、必要な値、戻り値を加工してニーズを満たす必要があります.