JAVAを学ぶ(2)🧑🏻‍💻


1.Javaのデータ型


データ型(datatype)とは、Javaが処理できるデータ型のこと.Java言語では、次のように9種類のデータを処理できます.
  • 基本タイプ(Basic type):8個
    boolean, char, byte, short, int, long, float, double
  • 参照タイプ:1
    参照タイプは1つしかありませんが、3つの場合があります.
  • 参照とはC/C++におけるポインタに類似した概念である.しかし,C/C++のように実際のアドレス値を持つわけではない.クエリーは扱いにくい概念なので、「クエリー配列」は配列のアドレス値、「クラスのクエリー」はオブジェクトのアドレス値です.

    1.(1)Javaのデフォルトタイプ



    上図はJavaの基本タイプ、メモリ領域、データ値の範囲を示しています.整数を格納するタイプはbyte、short、int、longの4種類で、実数はfloatとdoubleの2種類を使用します.各タイプのサイズが異なるため、処理する値の範囲に応じて適切なタイプを選択する必要があります.
    文字は文字タイプで格納され、サイズは2バイトです.charが1バイトのC/C++とは異なり、Javaのcharが2バイトであるのは、Javaが文字を2バイトに標準化したUnicodeアーキテクチャを使用しているためである.Javaでは、ハングルと英語を区別せず、文字ごとに2バイトのコードを使用しているため、英語とハングルを混在させて使用すると、C/C++よりも文字処理が便利になります.
    유니코드란 무엇일까?
    
    유니코드(Unicode)는 전 서계의 모든 문자를 표현하기 위해 문장 2 바이트의 산업 표준 코드 
    체계로 유니코드 협회(Unicode Consortium)가 제정한다. 유니코드에는 ISO 10646 문자 
    집합, 문자 인코딩, 문자 정보 데이터베이스, 문자를 처리하기 위한 알고리즘 등이 포함되어 있다. 

    1.(2)文字列


    Javaでは、文字列はデフォルトのタイプではなく、JDKが提供するStringクラスを使用します.Stringクラスと文字列の詳細は6章で説明します.
    次にjavaは、文字列と基本タイプの+演算を使用して接続された新しい文字列を生成します.
    String toolName = "JDK";
    
    toolName + 1.8 //"JDK1.8"
    "(" + 3 + "," + 5 + ")" // "(3,5)"
    System.out.println(toolName + "이 출시됨"); //"JDK1.8이 출시됨"

    1.(3)変数と宣言


    変数はデータを格納する空間です.したがって、変数を宣言すると、変数にタイプサイズに一致するメモリ領域が割り当てられます.変数は次のように宣言されます.

    同じタイプの変数を複数宣言する場合は、カンマで区切ってリストし、宣言時に初期値を指定できます.
    int radius;
    double weight = 75.56  //weight 변수의 초깃값으로 75.56 지정
    char c1, c2, c3='a';   //3개의 변수를 한 번에 선언하고, c3를 'a'로 초기화 

    1.(4)文字


    テキストとは、プログラムに直接表現される値を指します.整数、実数、文字、論理、文字列のタイプには、次のような文字があります.
    34, 42.195, '%', true, "hello"

    1.(4)-(1)整数リットル


    整数整数には、次の表に示すように、変数とともに使用される4つのタイプがあります.
    int n = 15;      //십진수 15
    int m = 015;     //015는 펄잔수로서 십진수 13
    int k = 0x15;    //0x15는 16진수로서 십진수 21
    int b = 0b0101;  //0b0101은 2진수로서 십진수 5
    タイプ説明例10進数0で始まる数字15->10進数158->10進数0で始まる数字015->10進数13(1*8+5=13)16進数0で始まる数字0 x 15->10進数21(1*16+5=21)32進数0で始まる数字0 b 0101->10進数で始まると、5
    Javaでは、整数はintタイプでコンパイルされます.整数を長いタイプに指定する場合は、数値の後ろにLまたは1を付けることができます.たとえば、次のコードです.
    long a = 24L; //24L은 241과 동일

    1.(4)-(2)実数リットル


    実数実数は、実数を小数点形式または指数(指数)形式で表す値である.
    12. 12.0 .1234 0.1234 1234E-4
    実数文字は自動的に二種類に処理され、変数とともに以下のように使用されます.
    double d = 0.1234;
    double e = 1234E-4; //1234E-4 =  1234 * 10^-4이므로 위와 동일
    数値の後ろにfまたはFを付けるとfloatタイプに強制変換でき、dまたはDを付けるとdoubleタイプに強制変換できます.
    float f = 0.1234f; // 컴파일 오류. 0.1234는 본래 double 타입
    double w = .1234D; // .1234D와 .1234는 동일

    1.(4)-(3)文字のフルネーム


    文字文字は、1つの引用符(""")で文字を表すか、uの後に文字のUnicode値で表す.例:
    'a', 'W', '가', '*', '3', '글'
    文字文字の文字を変数とともに以下のように書きます.
    char a = 'W';
    char b = '글';
    char c = \uae00; //'글'의 유니코드 값(aa00) 사용
    特殊文字の読み物もあります.逆スラッシュ()の後に特殊な記号を付けて表し、エスケープシーケンス(escape sequence)とも呼ばれます.下表のとおりです.
    特殊文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字

    1.(4)-(4)論理タイプ文字とブールタイプ


    論理タイプ論理はtrue、falseの2つしかなく、ブールタイプの変数または条件文を直接置換するために使用されます.trueとfalseの使用例は次のとおりです.
    boolean a = true;
    boolean b = 10 > 0;    //10>0이 참이므로 b 값은 true
    boolean c = 1;         //타입 불일치 오류 자바에서 1, 0을 참 거짓으로 사용 불가
    while(true) {          // 무한 루프
    	...
    }

    1.(5)varキーワードを使用してタイプを省略し、変数を宣言する


    次に、これまで変数を宣言するためにタイプを指定した典型的な例を示します.
    int price = 200;
    String name = "kitae";
    Java 10から、varキーワードを使用して変数タイプを省略し、変数を簡単に宣言できます.コンパイラはvarキーワードとして宣言された文を導くことで、変数のタイプを自動的に決定します.次にvarを使用する例を示します.
    var price = 200;                 //price는 int 타입으로 결정
    var name  = "kitae";             //name은 String 타입으로 결정
    var pi = 3.14;                   //pi는 double 타입으로 결정
    var point = new Point();         //point 는 Point 타입으로 결정
    var v = new Vector<Integer>();   //v는 Vector<integer> 타입으로 결정
    変数宣言に初期値が指定されていない場合、エラーが発生しますが、varキーワードは領域変数に限定されます.
    var name; //컴파일 오류

    1.(5)-(1)例

    //var 키워드를 사용하여 변수 선언 예제
    public class Var {
        public static void main(String[] args){
            var price = 200       //price는 int 타입으로 결정
            var name  = "kitae";  //namedms String 타입으로 결정
            var pi = 3.14;        //pi는 double 타입으로 결정
    
            System.out.println("price = " + (price+1000));
            System.out.println("name = " + name);
            System.out.println("pi = " + pi*10);
        }
    }

    1.定数


    文字を定数として宣言すれば、変数のように表現できます.定数はfinalキーワード宣言を使用し、図は円周率3.141592が定数PIに上昇した例である.

    プログラムでPIを使うのは3.141592を使うよりずっと便利です.宣言時に値を初期化すると、定数は変更できません.上首は5章に学習する静的キーワードを付けて宣言した方がよい.
    static final doduble PI  = 3.141592; //static 키워드를 붙이는 것이 바람직

    1.(6)-(1)例

    //원의 면적을 계산하여 출력하는 프로그램
    public class CircleArea {
        public static void main(String[] args){
            final double PI = 3.14;
            double radius = 10.2;
            double circleArea = radius*radius*PI;
    
            System.out.println("반지름: " + radius + ", ");
            System.out.println("원의 면적 = " +circleArea);
        }
    }

    1.(7)タイプ変換


    タイプ変換とは、変数、定数、または文字を別のタイプに変換することです.
  • 自動タイプ変換
    タイプが置換文(=)または数式内で一致しない場合、コンパイラは自動的に小さいタイプを大きいタイプに変換します.
  • long m = 25; //리터럴 25는 int 타입으로서 long 타입으로 자동 변환
    double d = 3.14 * 10; //실수 연산을 하기 위해 10이 10.0으로 자동 변환
  • 強制タイプ変換
  • int n = 300;
    byte b = n; //컴파일 오류. int 타입은 byte 타입으로 자동 변환 안 됨
    n(300)が自動的にバイトタイプ(0から255の範囲)に変換されると、変数bは300を格納せず、44(300%256=44)を格納し、損失をもたらす.したがって、コンパイラは、自動変換ではなく、大きなタイプを小さなタイプに変換する必要がある場合にコンパイルエラーを発生します.
    開発者が変換を知っている場合は、次のように()にタイプを強制的に指定する必要があります.
    byte b = (byte)n; //n을 byte 타입으로 강제 변환. b = 44
    強制変換の結果、300から256の間、すなわち300%256=44が変数bに格納され、データが失われる.
    同様に、次のコードもエラーによって整数に強制変換され、小数点以下の損失をもたらします.
    double d = 1.9;
    int n = (int)d; //강제 타입 변환으로 n은 1이 됨
    強制タイプ変換は鋳造とも呼ばれます.

    1.(7)-(1)例

    //자동 타입 변환과 강제 타입 변환이 들어 있는 코드이다.
    public class TypeConversion {
        public static void main(String[] args){
            byte b = 127;
            int i = 100;
            System.out.println(b+1);
            System.out.println(10/4);
            System.out.println(10.0/4);
            System.out.println((char)0x12340041);
            System.out.println((byte)(b+i));
            System.out.println((int)2.9+1.8);
            System.out.println((int)(2.9+1.8));
            System.out.println((int)2.9 + (int)1.8);
        }
    }
    //실행결과
    128
    2
    2.5
    A
    -29
    3.8
    4
    3