노력과 삽질 퇴적물

JAVA: 자바 기초 (1) 본문

프로그래밍note/언어. JAVA & JDK 계열

JAVA: 자바 기초 (1)

MTG 2012. 6. 7. 22:05

JAVA: 자바 기초 (1)

JAVA: 자바 기초 (2)

JAVA: 자바 기초 (3)

JAVA: 자바 기초 (4)






00장. 개발환경

컴파일러: 이클립스 유노, Eclipse Juno R Packages

자바환경: jdk1.7.0_04 & jre7 [J2SE]


JAVA: 이클립스 설치






01장. 기본구조

 1. 기본구조-Hello_World


// package : 클래스 묶음

//package chapter01;


// import : C/C++의 #include와 같은 쓰임새

import java.io.IOException;


public class Java_Novice // public class 클래스_이름 == 클래스_이름.java

     // [public class 1개 / 파일 1개]만 가능.

{

public static void main (String[] message) //main함수. 항상 이 형태!

{

//static. 선언된 파일내에서만 참조가능.

String tweet = "Hello_World";

int       n_i = 1234;

double n_d = 3.14; //성능상 double보다 float권장.

//1. 기본출력법

System.out.println("println() : " + tweet);    // JAVA식 기본 출력1.

System.out.print("print() : " + tweet + "\n");// JAVA식 기본 출력2.

System.out.printf("printf() : " + tweet + "\n");    // C언어식 출력문. printf()

System.out.println("\n");

System.out.println("println(), int : " + n_i);

System.out.printf ("printf(), double : %f", n_d);    // int처럼 출력하려면 %.0f로 지정.

} //public static void main (String args[])

}// public class Java_Novice




 2. 기본구조-자료형 기본출력법

//package chapter01;

public class Exam01 //!!!주의 - java파일명과 같아야 함.!!!

//!!!주의 - 클래스명은 대문자로 시작.!!!

{

public static void main( String[] message )

{

System.out.print("연습용\n");

System.out.println("자바코드");

System.out.println("1. 정수형 자료");

byte a = 10; //1byte. -128 ~ 127

short b = 128; //2byte. -32758 ~ 327676

int c = 1000; //4byte. -2147483640 ~ 2147483647

long d = 6580L; //8byte. -2^61 ~ 2^(2^61-1).

//식별성을 위해 대문자L을 권장.

System.out.println(a);

System.out.println(b);

System.out.println(c);

System.out.println(d);

System.out.print("\n");

System.out.println("2. 실수형 자료형");

float   e = 24.5f; //4byte. 1.4E-45 ~ 3.40282E38

double f = 120.40; //8byte. 4.92E-324 ~ 1.8E308

System.out.println("e : " + e + "\n"

  + "f : " + f

 );

System.out.println("3. 문자 변수");

char x = 'A'; //자바만 char이 2byte

char y = '헐';

char z = '%';

System.out.println("x : " + x + "\n"

  + "y : " + y + "\n"

  + "z : " + z

);

System.out.println("4. 문자열 자료형");

String str1 = "Hello Java";

String str2 = "Hello World";

String str3 = "2012-07-09";

System.out.println("str1 : " + str1 + "\n"

  + "str2 : " + str2 + "\n"

  + "str3 : " + str3

 );

System.out.println("5. 논리형 자료형");

boolean b1 = true; //1 1byte

boolean b2 = false; //0

System.out.println("b1 : " + b1 + "\n"

  + "b2 : " + b2

 );

}

}




* 교재등에 다루어지는 자바 API는 일부분이라고 한다. 공식 API웹문서[SE7]등을 이용해서 원하는 클래스를 찾는 습관을 들이는게 좋을것 같다.




 3. 연산자

/*연산자 우선순위

   01. 최우선 연산자 : . []행렬 ()

   02. 단항연산자 :  ! 일반부정   ~ 이진부정(bit부정)

    +/- ++/--(전위 증감 연산자)

    casting_연산

   03. 산술 연산자 :  + - * / %

   04. 시프트 연산자 :   <<  >>   >>>

   05. 관계 연산자 :      <  >   <= >= =

   06. 비트 연산자 :      &    ^      |

   07. 논리 연산자 :      &&     ||

   08. 삼항 연산자 조건항

   09. 배정대입 연산자 : =     +=      -=   <<=

   10. 후위 증감연산자 :++/--후위 증감연산자

*/

//package chapter01;

public class Exam02

{

public static void main( String[] message )

{

boolean a = false; //0

boolean b = !a; // !a == 1

boolean b2 = !!a; //!!a == 1. 이렇게 쓰는 경우도 있음.

System.out.println("a : " + a + "\n"

  + "b : " + b + "\n"

  + "b2 : " + b2

  );

int c = ~10; //-11

// 0000 1010

// 1111 0101

int d = ~-15; //14

// 0000 1010

// 1111 0101

System.out.println("c : " + c + "\n"

  + "d : " + d

  );

/*비트 부정시, 양수k는 -(k + 1). 음수j는 -(j + 1)*/

int x = 10;

x++; // x == 11. 증가연산자-후위형

++x; // x == 12. 증가연산자-전위형

System.out.println("x : " + x);

x--; // x == 11. 감소연산자-후위형

--x; // x == 12. 감소연산자-전위형

System.out.println("x : " + x);

//!!!주의 - 증감연산자를 변수의 값으로 할당은 비권장 !!!

int y = 10;

int z = y++; //후위형 증감연산자는 '='로 변수값 할당후에 처리.

System.out.println("z : " + z + "\n"

  + "y : " + y

  );

}

}






 4. 캐스팅 연산-형변환

//package chapter01;

public class Exam04

{

public static void main( String[] message )

{

byte a = 10;

byte b = a; // b == a == 10

byte c = 10; //1byte

short e = c; //2byte

byte f = (byte)e;//byte로 캐스트 연산처리된 d

System.out.println("e : " + e + "\n"

  +"f : " + f);

int x = 100;

long y = x;

int z = (int)y;

System.out.println("z : " + z);

float i = 24.5f;

float j = i;

float k = (float)j;

System.out.println("k : " + k + "\n");

int java = 10;

float value = 24.5f;

float sum = java + value;

System.out.println("sum : " + sum);

int p1 = 10;

int p2 = 3;

float result1 = p1/p2;

float result2 = (float)p1/p2;

System.out.println("result1 : " + result1 + "\n"

  +"result2 : " + result2

 );

}

}







02장. 기본입력

 1. read()

//package chapter02;

import java.io.IOException;


public class Exam11

{

public static void main( String[] message ) throws IOException

{

//문자 1byte, 문자열 2byte

System.out.print("Press to any key and enter_key : ");

char x = (char)System.in.read();

System.out.println("x : " + x);

System.in.read(); // \r로 작용

System.in.read(); // \n로 작용

System.out.print("Press to any key and enter_key : ");

char y = (char)System.in.read();

System.out.println("y : " + y);

System.in.read(); // \r로 작용

//System.in.read(); // \n로 작용

System.out.print("Press to any key and enter_key : ");

char z = (char)System.in.read();

System.out.println("z : " + z);

System.in.read(); // \r로 작용

//System.in.read(); // \n로 작용

}

}





 2. readLine(), BufferedReader

//package chapter02;

import java.io.IOException;

import java.io.BufferedReader;

import java.io.InputStreamReader;


public class Exam12

{

public static void main( String[] message ) throws IOException

{

BufferedReader in_key = new BufferedReader (new InputStreamReader(System.in));

//문자열 입력

System.out.print("문자열 입력 : ");

String str1 = in_key.readLine(); //버퍼&스트림을 통해 키보드입력을 불러온다.

System.out.println("출력 : " + str1);



//정수형 입력

System.out.print("정수형1, byte[08bit] : ");

byte str2 = Byte.parseByte( in_key.readLine() );

System.out.println("출력 : " + str2);

System.out.print("정수형2, short[16bit] : ");

short str3 = Short.parseShort( in_key.readLine() );

System.out.println("출력 : " + str3);

System.out.print("정수형3, int[32bit] : ");

int str4 = Integer.parseInt( in_key.readLine() );

System.out.println("출력 : " + str4);

System.out.print("정수형4, long[64bit] : ");

long str5 = Long.parseLong( in_key.readLine() );

System.out.println("출력 : " + str5);

//실수형 입력

System.out.print("실수형1, float[32bit] : ");

float x = Float.parseFloat( in_key.readLine() );

System.out.println("출력 : " + x);

System.out.print("실수형2, double[64bit] : ");

double y = Double.parseDouble( in_key.readLine() );

System.out.println("출력 : " + y);

//문자 입력

System.out.print("문자 입력 : ");

char key = (char)System.in.read();

System.in.read();

System.in.read();

System.out.println("문자출력 : " + key);

}

}




 3. Scanner

import java.util.Scanner;

import java.io.IOException;


public class Exam109

{

public static void main(String[] message) throws IOException // IO예외처리는 JAVA: 자바 기초 (3)에서

{

Scanner key = new Scanner( System.in );

System.out.print("정수 입력 : ");

int x = key.nextInt();

System.out.print("실수 입력 : ");

float y = key.nextFloat();

System.out.print("문자열 입력 : ");

String str =  key .next();

System.out.print("문자 : ");

char ch = (char)System.in.read();

System.in.read();

System.in.read();

System.out.print("java.util.Scanner\n");

System.out.print("정수      : " + x + "\n"

+ "실수    : " + y + "\n"

+ "문자열 : " + x + "\n"

+ "문자    : " + x + "\n");

}

}







03장. 제어문

 1. if-else 

//package chapter03;

import java.io.IOException;

import java.io.BufferedReader;

import java.io.InputStreamReader;


public class Exam13

{

public static void main( String[] message ) throws IOException

{

BufferedReader in = new BufferedReader (new InputStreamReader(System.in));

System.out.print("입력1, if-else문 : ");

int y = Integer.parseInt(in.readLine());

if( y > 100)

{

System.out.println("100보다 크다");

}

else if( y < 0)

{

System.out.println("0보다 크다");

}

else

{

System.out.println("10보다 작다");

}



System.out.print("2012-07\n\n");

}

}








 2. switch

-> 라벨(Label)과 break연동은 자바에만 가능?

//package chapter03;

import java.io.IOException;


public class Exam17

{

public static void main( String[] message ) throws IOException

{

System.out.print("문자 입력 : [1, W, B] ");

char key = (char)System.in.read();

System.in.read();

System.in.read();

myLabel:

switch(key) //조건식[key]에는 byte&short&char&int만 허용

{

case '1':

System.out.print("숫자1\n"); // 구현문1

break; // 자신의 직속블록 바로 위의 블록을 종료.


/* break부재시 다음번 case로 자동실행되는 성질을 이용가능.

 * '이음동의'(?)처럼 대소문자 구분없이도 입력처리도 가능.

 */

case 'w':

case 'W':

System.out.print("백\n"); // 구현문2

break myLabel; // 지정된 라벨의 블록을 종료.

case 'b':

case 'B':

System.out.print("청\n"); // 구현문3

 break myLabel;  // 지정된 라벨의 블록을 .


default :

// 지정입력외인 '예외처리'

System.out.print("지정되지 않은 입력\n");

//break;

}//switch()

}

}










 3. for


//package chapter03;

import java.io.IOException;

import java.io.BufferedReader;

import java.io.InputStreamReader;


public class Exam13

{

public static void main( String[] message ) throws IOException

{

BufferedReader in = new BufferedReader (new InputStreamReader(System.in));


System.out.print("입력3, for문 : ");

int x = Integer.parseInt(in.readLine());

int cnt;

for( cnt = 0; cnt<x; cnt++ )

{

System.out.print(cnt + "\t");

}

}

}




 4. while


//package chapter03;

import java.io.IOException;

import java.io.BufferedReader;

import java.io.InputStreamReader;


public class Exam13

{

public static void main( String[] message ) throws IOException

{

BufferedReader in = new BufferedReader (new InputStreamReader(System.in));


System.out.print("입력4, while문 : ");

int z1 = Integer.parseInt(in.readLine());

while( z1 <= 15 ) //while()의 조건식 ≒ 순환문 루프조건

{

z1++;

System.out.print(z1 + "\t");

}

System.out.print("\n\n");

}

}




 5. do-while

//package chapter03;

import java.io.IOException;

import java.io.BufferedReader;

import java.io.InputStreamReader;


public class Exam13

{

public static void main( String[] message ) throws IOException

{

BufferedReader in = new BufferedReader (new InputStreamReader(System.in));


System.out.print("입력5, do-while문 : ");

int z2 = Integer.parseInt(in.readLine());

do

{

z2++;

System.out.print(z2 + "\t");

}while( z2 <= 15 );

System.out.print("\n\n");

}

}






04장. 배열

* 동일한 자료형들을 인덱스화하여 정리한것.(첨자값을 가진다.)


 1. 1차원 배열


//package chapter04;

import java.io.IOException;

import java.io.BufferedReader;

import java.io.InputStreamReader;


public class Exam32

{

public static void main( String[] message ) throws IOException

{

BufferedReader key = new BufferedReader ( new InputStreamReader(System.in) );

System.out.print("배열수를 입력하세요 : ");

int cnt = Integer.parseInt(key.readLine());

int[] arr = new int[cnt]; // JAVA에선

    // '자료형[] 변수명 = new 자료형[] {...};'이거나

    // '자료형[] 변수명 = new 자료형[10];' 처럼 자료형 뒤에 배열기호

System.out.print("배열길이 : " + arr.length + "\n\n");

for( cnt = 0; cnt < arr.length; cnt++ ) // length, 배열의 길이를 자동으로 받는게 가능.

{

System.out.print("배열원소입력 : ");

arr[cnt] = Integer.parseInt(key.readLine());

}

System.out.print("입력완료\n\n");


System.out.print("1차원 배열\n");

for( cnt = 0; cnt < arr.length; cnt++ )

{

System.out.print(arr[cnt] + "\t");

}

}

}




 2. 2차원 배열


//package chapter04;

import java.io.IOException;

import java.io.BufferedReader;

import java.io.InputStreamReader;


public class Exam35

{

public static void main( String[] message ) throws IOException

{

BufferedReader key = new BufferedReader ( new InputStreamReader(System.in) );

int[][] arr = new int[][]{{10, 20, 30},

       {40, 50, 60},

       {70, 80, 90},

       {1,  2,  3}

     };

System.out.print("행렬 " + arr.length + "행 * " + arr[0].length + "열\n");

for( int col = 0; col < arr.length; col++)

{

for( int row = 0; row < 3; row++ )

{

System.out.print(arr[col][row] + "\t");

}

}

System.out.print("2차행렬 행길이, arr.length : " + arr.length + "\n");

System.out.print("2차행렬 열길이, arr[0].length : " + arr[0].length);

}

}

'프로그래밍note > 언어. JAVA & JDK 계열' 카테고리의 다른 글

JAVA: 자바 기초 (3)  (0) 2012.07.17
JAVA: 자바 기초 (2)  (0) 2012.07.11
안드로이드: 개발환경 구축  (0) 2011.11.23
JAVA: 간단한 RMI 테스트  (0) 2011.11.14
이클립스: JAVA개발용 설치  (0) 2011.11.14