Java基本知識ノート

6787 ワード

Stringについて
Stringオブジェクトは作成後は変更できません.可変ではありません.変更とは、メモリ領域が異なる新しいオブジェクトが作成されます.メモリに文字列が作成されると、この文字列は変更できません.変更可能な文字列が必要な場合は、StringBufferまたはStringBuilderを使用します.
毎回newの文字列は新しいオブジェクトを生成し、2つの文字列の内容が同じであっても==比較を使用する場合はfalseであり、内容が同じかどうかを比較するだけでequals()メソッドを使用します.
    

public class HelloWorld {
    public static void main(String[] args) {
        String s1 = "imooc";
        String s2 = "imooc";

        //     s3,  “I love” s1      
        String s3 = "I love" + s1;

        //      s1 s2
        // imooc      ,            ,       
        System.out.println("s1 s2       ?" + (s1 == s2));

        //     s1 s3
        System.out.println("s1 s3       ?" +    (s1 == s3)             );

        String s4 = "I love " + s1;
         //     s4 s3
        // s1   ,s4          ,  s3 s4      
        System.out.println("s3 s4       ?" + (s4 == s3));
    }
}

戻り結果はtrue、false、false
一重引用符は文字を表し、二重引用符は文字列を表す.
    

public class Solution {
    public static void main(String[] args) {

        String s = "aljlkdsflkjsadjfklhasdkjlflkajdflwoiudsafhaasdasd";

        //     
        int num = 0;

        //         ,        a ,   ,    
        for (int i = 0; i < s.length() - 1; i++) {
            //       ,       a
            if (s.charAt(i) == 'a') {
                //       
                num++;
            }
        }
        System.out.println("  a     :" + num);
    }
}

文字列を頻繁に操作すると、多くの一時変数が追加されます.StringBuilderまたはStringBufferを使用すると、この問題を回避できます.StringBuilderとStringBufferについては、基本的に似ていますが、異なる点では、StringBufferはスレッドが安全ですが、StringBuilderはスレッドセキュリティ機能を実現していないため、パフォーマンスがやや高いです.したがって、一般的には、コンテンツが可変な文字列オブジェクトを作成する必要がある場合は、StringBuilderクラスの使用を優先する必要があります.
クラスのカプセル化について
梱包:基本タイプを梱包クラスに変換し、オブジェクトの性質を持たせ、手動梱包と自動梱包に分けることができます.
分解箱:梱包とは逆に、梱包類オブジェクトを基本タイプの値に変換し、手動分解箱と自動分解箱に分けることができます.
コードの例
//            
//   double    
double a = 91.5;

//     
Double b = new Double(a);     

//     
Double c = a;

//     Double     ,  8
Double d = new Double(87.0);

//     
double e = d.doubleValue();

//     
double f = d;
//              

基本タイプを文字列に変換するには、次の3つの方法があります.
  • パッケージクラスを使用するtoString()メソッド
  • StringクラスのvalueOf()メソッド
  • を使用
  • は、1つの空の文字列に基本タイプを加える、基本タイプデータに対応する文字列
  • を得る.
    文字列を基本タイプに変換するには、次の2つの方法があります.
  • パッケージクラスのparseXxx静的メソッド
  • を呼び出す
  • パッケージクラスのvalueOf()メソッドを呼び出して基本タイプのパッケージクラスに変換すると、自動的にボックスが取り外されます
  • .
    日付と時刻
    Java.utilパッケージのDateクラスは推奨されません.Dateクラスのデフォルトのパラメトリック構造方法で作成されたオブジェクトは現在の時間を表しますが、あまり友好的ではありません(注:CSTはChina Standard Time(中国標準時間、つまり北京時間、東8区))java.textパッケージのSimpleDateFormatクラスは日付を指定したフォーマットのテキストに変換できます.テキストを日付に変換することもできます.
    コード領域
     //    format()               
    SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy MM dd  HH mm ss ");
    //   Date  ,      
     Date now = new Date();
     //   format()  ,            
    System.out.println(sdf1.format(now));
    //   parse()          
    String d = "2014-6-1 21:05:36";
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    //   parse()  ,         
    Date date = sdf.parse(d);

    Java.util.Calendarクラスは抽象クラスであり、getInstance()静的メソッドを呼び出してCalendarオブジェクトを取得することができます.このオブジェクトは現在の日付時間によって初期化されています.つまり、デフォルトはCalendar c=Calendar.getInstance()などの現在の時間を表します.
    Calendarクラスでは、Dateオブジェクトを取得し、CalendarとDateの変換を完了するgettimeInMillis()メソッドを使用して、ミリ秒単位でこのCalendarの時間値を取得するgetTime()メソッドが用意されています.
    コードの例
    //   Calendar  
    Calendar c = Calendar.getInstance();
    
    //  Calendar     Date  
    Date date = c.getTime();
    
    //   SimpleDateFormat  ,      
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    
    //               
    String now = sdf.format(date);

    mathクラス
    Mathクラスはjava.langパッケージにあり、基本数学演算を実行するためのメソッドが含まれている.Mathクラスのすべてのメソッドは静的メソッドであるため、このクラスのメソッドを使用する場合、直接クラス名を使用することができる.メソッド名、例えばMath.round()
    しゅうごう
    集合が配列と異なる点は,集合は動的に成長するが,配列長は固定されており,配列を拡張する必要がある場合は,新しい配列を作成して古い配列をコピーする必要がある.コレクションフレームの2つのルートインタフェース、CollectionとMap.Collectionのサブインタフェースには、ArrayList、LinkedList、HashSetのいくつかの共通実装クラスに対応するListシーケンス、Queue、Setがある.Mapの重要な実装クラスはHashMapである.