トリッキーコードネット トップへ戻る   C/C++, Java, Perl, PHP, JavaScript, アルゴリズム, ショートコーディング, IOCCCコードの解説, 等々

サイト情報

トリッキーなコード

7行プログラミング

物凄いコード集

アルゴリズム

データ構造

C/C++な話題

コードサンプル

ツール/環境構築

開発ノウハウ 等

ネタ/ジョーク集

おススメ書籍/サイト

サイトTOP >> コードサンプル >> 基礎知識・データ型 等 ※管理人のメモ用ページです。

Javaの基礎知識・データ型 等

Javaは"Write Once, Run Anywhere"を目標に開発された。

Javaの実行

javac Test.java ⇒ ソースコードからByte-Code(Test.class)作成 (文字コード指定例: javac -encoding UTF-8 Test.java) java Test ⇒ JVMでTest.class実行 Windows-Shift-JIS, Unix-EUC-JPが標準文字エンコーディングだが、 javacはコンパイル実行前に、表示文字エンコーディングからUnicodeに自動変換を行う。 標準と異なる文字エンコーディングの場合、javacに -encodingで文字エンコーディングの指定を行う。
Byte-Code
JavaAPI
JVM (JavaVirtualMachine:Byte-CodeをCPU依存のObject-Codeに変換して実行する)
OS

命名の慣例

クラスPascal形式 (先頭が大文字 : ex PascalCasing)
メソッドCamel形式 (先頭が小文字 : ex camelCasing)
変数
配列型名[] 変数名; ex) int[][] data;
JavaBeansクラス名の末尾がBean
また、Javaの変数には、0~9 _ $ 一部のUnicode文字 を使用できる。 大文字小文字は区別する。

主なパッケージ

java.appletアプレット関連
java.awtAbstractWindowToolkit(GUI関連)
java.awt.eventAWTコンポーネントのイベント処理
java.awt.image画像処理
java.beansJavaBeans機能
java.ioファイル/ネットワークのI/O
java.langJava言語本体(自動import)
java.netネットワーク関連
java.utilユーティリティ

データ型

char16bit Unicode文字
booleantrue / false
byte8bit符号付整数 (-128 ~ 127) ⇒ -2^(n-1) ~ 2^(n-1)-1
short16bit 〃
int32bit 〃
long64bit 〃
float32bit符号付浮動小数点
double64bit 〃
string文字列
整数リテラルはintとみなされる。 (long型 ⇒ サフィックス(接尾辞)「L」or「l」をつける) 0 : 8進数 0X : 16進数 0x : 16進数 (float,doubleリテラルは10進表記のみ) 小数点または指数を含んだ数値リテラルは、double型とみなされる。 ex) 0.1 .3 4e-2 -3.1e-4 (float型 ⇒ サフィックス(接尾辞)「F」or「f」をつける) Javaの文字列はNULL終端ではない。 キャラクタリテラル(単一文字)は、単一引用符(')で囲む。 文字列は複数行にわたって記述できるが、文字列を囲む二重引用符は同じ行にないとコンパイルエラー。 ex) System.out.println("ABC" + "DEF" + "GHI");

デフォルト値

static変数、もしくはローカルでnewで割り当てられた変数は、 boolean ⇒ false プリミティブ型 ⇒ 0 参照型(配列,文字列,クラスのインスタンス) ⇒ null で初期化される。 ※初期化されていない変数を使うと、コンパイルエラー
import java.util.Arrays;

public class Test {

    static boolean bl;
    static char  c;
    static byte  b;
    static short s;
    static int   i;
    static long  l;
    static float f;
    static double d;
    static int[] ia;
    static String str;
    static String[] stra;
    static String[][] stra2;    

    public static void main(String args[])
    {
        boolean bl2 = false;
        char  c2    = 'c';
        byte  b2    = 1;
        short s2    = 1;
        int   i2    = 1;
        long  l2    = 1;
        float f2    = 1;
        double d2   = 1;
        int[] ia2   = null;
        int[] ia3   = new int[3];
        String str2 = null;
        String[] stra_2 = null;
        String[] stra_3 = new String[3];
        String[][] stra2_2 = null;

        byte cnt = 0;

        System.out.println(++cnt + ":" + bl);
        System.out.println(++cnt + ":" + c);
        System.out.println(++cnt + ":" + b);
        System.out.println(++cnt + ":" + s);
        System.out.println(++cnt + ":" + i);
        System.out.println(++cnt + ":" + l);
        System.out.println(++cnt + ":" + f);
        System.out.println(++cnt + ":" + d);
        System.out.println(++cnt + ":" + ia);
        System.out.println(++cnt + ":" + str);
        System.out.println(++cnt + ":" + stra);
        System.out.println(++cnt + ":" + stra2);

        System.out.println(++cnt + ":" + bl2); // cnt == 23
        System.out.println(++cnt + ":" + c2);
        System.out.println(++cnt + ":" + b2);
        System.out.println(++cnt + ":" + s2);
        System.out.println(++cnt + ":" + i2);
        System.out.println(++cnt + ":" + l2);
        System.out.println(++cnt + ":" + f2);
        System.out.println(++cnt + ":" + d2);
        System.out.println(++cnt + ":" + ia2);
        System.out.println(++cnt + ":" + Arrays.toString(ia3));
        System.out.println(++cnt + ":" + str2);
        System.out.println(++cnt + ":" + Arrays.toString(stra_2));
        System.out.println(++cnt + ":" + Arrays.toString(stra_3));
        System.out.println(++cnt + ":" + Arrays.toString(stra2_2));
        System.out.println(++cnt + ":" + Arrays.deepToString(stra2_2)); // cnt == 27
    }
}

--------------

1:false
2:
3:0
4:0
5:0
6:0
7:0.0
8:0.0
9:null
10:null
11:null
12:null
13:false
14:c
15:1
16:1
17:1
18:1
19:1.0
20:1.0
21:null
22:[0, 0, 0]
23:null
24:null
25:[null, null, null]
26:null
27:null

算術演算について

※C++と違い、演算結果でtrue/false判定ができない。
ex)
public class Test{
    public static void main(String args[]){
        if(1+1) {                         // ←if(true)ならOK
            System.out.println("aaaa");
        }
    }
}

--------------

Test.java:3: 互換性のない型
検出値  : int
期待値  : boolean
           if(1+1) {
               ^
整数拡張 char, byte, short型は、式の評価中にint型に拡張されて計算される。 (変数が物理的に大きくなるわけでなく、コンパイラは変数の値の一時コピーを使う) double > float > long > int の順に、 最も大きなオペランドの型に合わせ「型拡張」が行われる(1演算毎)。 ex) 100.0f / (10/3) ⇒ 100.0f / 3 ⇒100.0f / 3.0f ※int型の除算は、小数点以下は切り捨て 代入における型変換 代入時に、左辺の型が右辺の型より小さい場合、コンパイルエラー。
ex1)
public class Test{
  public static void main(String args[]){
    int i = 127;
    byte b = i;
    System.out.println(b);
  }
}

ex2)
byte b1 = 1;
byte b2 = 2;
byte b3 = b1 * b2; // ←整数拡張が行われている為、エラー

--------------

Test.java:4: 精度が落ちている可能性
検出値  : int
期待値  : byte
                byte b = i;
                         ^
byte b = (byte)i; // 型変換を使用。iの下位8bitだけコピーされる(縮小変換:narrowing conversion)
byte b = (byte)258;
    int i  = (int)12.345;
    System.out.println(b + "," + i); // 2,12が表示

コメント

// 単一行コメント /* 複数行コメント */ /** ドキュメンテーションコメント */ javadoc -private -d doc Test3.java Javadocで生成されたドキュメント ex)javadoc用コメント
/**
 * <pre>
 * <span style="font-weight:bold;">Javadoc</span>テストクラス。
 * .または。で終わるところまでが、クラスの概要。
 * それ以降はクラスの説明に含まれる。
 * @author good-tool.net管理人
 * @author Mr.test
 * @version 1.0
 * @since 0.5
 */
public class Test3{

    /**
     * 文字列
    */
    private static String str = "hogehoge";

    /**
     * @serial 文字
    */
    private char c = 'A';

    public static void main(String[] args){
        System.out.println(_add(1,2));
        System.out.println(_add(str,"fugafuga"));

    }

    /**
     * @deprecated 廃止されたメソッド
     * @param x Xです
     * @param y Yです。
     * @return int XとYを足して返します。
    */
    private static int _add(int x, int y){
        return x + y;
    }

    /**
     * テスト用の<b>メソッド</b>です。
     * @author Mr.test
     * @param s1 S1です
     * @param s2 S2です。
     * @return String
    */
    private static String _add(String s1, String s2){
        return s1 + s2;
    }
}
         このエントリーをはてなブックマークに追加   


作業効率化・ライフハックのオススメ記事




コンピュータ・テクノロジーのオススメ記事





恋愛・人間関係のオススメ記事




※ 当サイトは、トップページからリンクで辿る事の出来るページに限り、リンクフリーです。
※ 当サイトの閲覧/利用によって生じた如何なる損害も、当サイト管理人は責任を負いません。
※ 当サイトの内容を転載される場合は、当サイトへのリンクをお願い致します。