본문 바로가기

공부합시다

자바입문 제1강

다음의 강의는 제가 학원 교육을 받으면서 정리해둔 것과 참고 서적의 내용을 일부 발췌하여 옮겨적었을 뿐 입니다.

포스팅을 하는 1차적인 이유는 저의 학습에 도움이 되었으면해서이고 부차적으로는 처음 프로그램밍 언어를 배우고자 하시는 분들께 조금이나마 도움이 되고하는 것이니 참고 바랍니다 ^^

 

JDK는  "Java Development Kit"

 

EE(Enterprise Edition) > SE(Standard Ed.)> ME(Micro Ed.=Mobile)

 

JRE는 "Java Runtime environment"의 약자

 

자바에디터로 가장 많이 사용되는 것이 이클립스로 학원에서는 에디트플러스(editplus)를 먼저 사용하였음

이클립스에 대한 것은 시간이 된다면 따로 포스팅 하는 걸로..^^

 

java.exe: 자바프로그램 실행
javac.exe: 자바컴파일실행

 

Editplus : 문자 중 검은색, ""안에 있는 것 제외하고느 예약어...(일반적으로)

자바의 실행 : 자바컴파일 -> 자바실행

 

언어의 종류별 장단점
1. 인터프리터언어((ex.VB(비주얼베이직),PHP. ASP)는 개발속도가 빠르고 컴파일 과정이 필요없음, 실행속도가 느림
2. 컴파일언어(JAVA C++ C#)는  실행속도가 빠르지만, 컴파일 과정이 필요하여 개발속도가 느림.
// 참고적으로 프로그래밍 언어의 진화(?)는 C->C++->JAVA->C# 순서로 이해하면 편함.


데이터베이스 (궁합이 서로 잘 맞는 것이지 꼭 이렇게 사용하는것이 아니다)
ASP & .NET : MS-SQL
PHP : MySql 무료
JSP : Oracle (비쌈)

 

JAVA의 방향
웹프로그램머 HTML C JavaScript(JQuery)
모바일 프로그램머 (ex. 모바일앱)
어플리케이셔 프로그램머 (stand alone ->office)
시스템 프로그램머 (기계동작 - 자바의 기원)

======

자바가 은행권에 많이 사용되는 이유? 보안에 유리, 이유는.. *.java ------(컴파일)--->*.class
컴파일이 되어 있기 때문에 실제 내용을 확이 할 수 없다

 

 

메소드: 어떤 값을 주고 결과를 넘겨주는 것

리턴타입: 값을 출력하는 형태

매개변수: 값

다음의 예로 살펴보면..

 

public boolean checkPassword(String password) { /*  중간내용 생략 */}

         리턴타입      메소드이름         매개변수

 

 

※ 리턴형태에 대한여 좀더 살펴보면..

boolean : 기본 자료형 이라는 것 중 하나.. 자세한 건 나중에..

void : 돌려 줄 값이 없음

사용의 예)

1. public boolean checkPassword(String password) { /* 중간생략 */ }

// 매개변수 입력 후 boolean형태로 결과를 출력함

 

2. public void setPassword(String password) { /* 중간생략 */ }

//매개변수 입력 후 별다른 출력값이 없음

 

3. public void resetPassword() { /* 중간생략 */ }

//입력도 없고 출력도 없음

 

자바의 가장 작은 단위.. 클래스

 

위의 예에서.. CheckPassword라는 메소드는 어딘가의 소속이 있어야 합니다. 자바에서 모든 메소드는 소속을 가지는데.. 그것이 바로 클래스 입니다. 한개의 클래스 안에는 한개 이상의 메소드가 존재 합니다.

 

public class DoorLockManager { /* 중간생략 */ }

 

여기에서 DoorLockManager는 클래스의 이름으로.. 이 클래스 안에 한 개 이상의 메소드가 존재하는 거예요 ^^

 

※ 클래스는 상태(state)와 행동(behavior)이 있어야만 한다.

 

상태는 클래스 안에, 메소드 밖에 정의 한다. 예를 들면..

public class DoorLockManager {

String currentPassword; // 클래스이 정의.. 클래스 안, 매소드의 밖

Public boolean checkPassword(String password) { /* 중간생략 */ }

다시 위의 DoorLockManager 클래스에서의 예를 가지고 예약어에 대하여 알고가자!

예약어는 말 그대로 '예약이 되어 있으니 다른 용도로 쓰지 못하는 단어'라고 보면 된다.

여기서는 public, class, String,blooean 정도가 되겠다. 모든 예약어를 열거 하지 않고 일단 예약어라는 것이 있고 이는 클래스나 메소드, 매개변수의 이름으로 사용하지 못함을 알아야 한다. 에디트플러스에서 파란색으로 표시된 것들이 거의 다 예약어라는...


 

 

int num1;
num1 = 10;  이거랑 int num1 =10; 같은 표현, 변수를 선언하고 바로 넣어줘도 됨


변수 선어할 때 예약어 (외워야함)

논리값

boolean : true & fals,  1bit

한글자

char (=character): 한글자, 2byte

 

정수
byte : 1byte (-128~127) 2^8
short : 2byte(-32768~32767) 2의16승(2^16)
int : 4byte (-2147483648~2147483647) 2^32 - 기본형 (지정하지 않을경우 int로..)
long : 8byte

 

실수
float : 4byte (±1.4*10^-45 ~3.4*10^38)
double :  8byte - 기본형 (지정하지 않을경우 double로..)

 

자바에서 실행하는 연산자 (우선순위 순으로..)
[],.
expr++, expr--
++expr, --expr, ~, !, (type) ex(int, float...)
*, /, % (나머지)
+, -
<<, >>, >>> (시프트 연산자.. 밀어내는 것)
<, >, <=, >=, instanceof (비교연산자->무조건 결과값은 논리값(true falth)
==(같다), !=(같지않다) (비교연산자)
&
^
|(백스페이스 옆 키보드)
&&
||
? expr : expr (유일하개 3개의 피연산자를 가진다, 피연산자는 2+3일때 2와3은 피연산자이다)
=, +=, -=, *=, /=, %, &=, ^=, |= (대입연산자 ex, A = B)
(연산자에서는 소괄호만 사용)

===============================
논리연산자 (결과값은 물론, 피연산자도 논리값이어야 한다)
&&(and연사자), ||(or연산자), !(not-부정연산자)
-----이항연산자---------       --단항연산자--

            and        or
-----------------------------
 F   F       F         F
 F   T       F         T
 T   F       F         T
 T   T       T         T

!T = F
!F = T

비트연산자 (0, 1)

&, |, ~(not), ^

 

연산자에 관하여는 아래의 예제를 푸는 과정에서 이해하길 바랍니다 ^^

 


 

 

일단 자라를 배우려면 자바를 컴퓨터에 설치 해야하는데.. 그 과정은 다음과 같다

 

오라클 홈페이지에 접소한다. http://www.oracle.com/technetwork/java/index.html

 

 

우측 상단에 "Top Download"를 클릭하고.. 

 

 

JDK Download 클릭!

 

 

 

Accept Licence Agreement에 체크한 다음.. 운영체제에 맞는 파일을 다운로드 하여 설치하면 된다 ^^

저는 학원 컴퓨터가 64비트였고, 집에 있는 컴은 32비트라서... 암튼.. 맞는 걸로..

 

설치가 끝나면 환경변수를 설정해주어야 하는데..

 

일단, 윈도우7을 기준으로 설명합니다. 그러나 그 상위 버젼의 윈도우가 거의 동일 합니다.

내컴퓨터 마우스 우측 "속성" → 고급시스템설정 (시스템속성) → 고급 탭 → 아래의 "환경변수" 클릭! 합니다.

 

 

 

사용자변수에서 "새로만들기(N)"를 클릭하면 변수 창이 하나 뜨는데.. 변수이름에는 "PATH"라고 입력하고 변수값에는 java.exe가 들어 있는 폴더의 경로를 입력한다. 이때, 경로는 java.exe파일이 있는 폴더에서 컴퓨터 위쪽 경로표시중에 마우스 커서를 가져가면 경로가 뜨는데 이걸 그대로 복사해서 붙여넣기 합니다

 

 

제대로 되었는지를 확인하기 위해, 윈도우 실행창에 "CMD"라고 입력해서 도스창을 열고..

java.exe 를 입력후 엔터(실행)하면 아래와 같은 화면이 표시 됩니다.

 

 

 

이제 이렇게 JDK 설치는 끝났고...

 

에디트플러스를 이용해서 이제 약간의 실습을 해봐야겠네요 ^^

 

먼저 에디트플러스를 실행하여 새문서(java)를 열어 봅니다.

먼저 글꼴을 설정하는데.. 숫자1, 소문자 l(엘), 대문자 I(아이)를 차례로 붙여서 적고 이 세개의 글자가 구분이 되는 글꼴을 찾아 설정 합니다.

 

 

그리고 기본 인코딩을 ANSI를 설정하세요, UTF-8로 설정을 하니, 주석을 달 경우 에러가 발생하더라구요.

그리고 저장시 백업파일 생성을 굳이 필요 없으므로 체크를 해제합니다.

 

 

자바는 앞에서 말씀드린 것처럼.. ***.java라는 파일이 있고 이것을 컴파일 하면.. ***.class 파일이 생성되는데.. 아래의 문장 맨 처음 Class 뒤에 나오는 알페벳의 단어가 클래스의 이름이고 이는 저장되는 파일의 이름과 동일해야 합니다.

그리고 자바는 기본적으로 대소문자를 구분하며.. 일반적으로 클래스의 이름은 첫자는 대문자로하고 연결되는 다른 단어가 있을 경우 그 첫자를 대문자로 하여 이름을 정하는 것이 관례입니다. 예를 들어 클래스의 이름이 happytogether라면.. 가능한다 "HappyTogether"라고 하는 것이 좋다는 말씀! ^^

 

꼭 그렇게 하지 않아도 실행하는데에는 지장이 없으나 규칙아닌 규칙이니 그렇게 하는 것이 좋다고 하구요, 참고로 필자 역시 여러 책을 읽으면서 느낀것이 암묵적 규칙을 어느정도 가용하더군요. 이유는 내가 프로그래밍하는 것도 중요하지만 프로그래밍 되어 있는 파일을 해석하는 것도 중요해서 일 것 입니다. ^^

 

 

위의 간단한 프로그래밍을 실행해보겠습니다.

파일이름은 "FirstJava" 입니다.

 

이 파일은 현재 D드라이브의 java라는 폴더에 있네요.

명령프로프트에서 d: (d드라이므로 이동합니다)

여기서 cd java 라고 하면 java라는 폴더로 들어가는 거겠지요?

자.. 이제 파일이 있는 폴더로 진입했으니 저장한 파일을 컴파일하여 실행하겠습니다.

 

1. 컴파일 할때는 javac 파일이름.java 라고 합니다.

2. 컴파일 한 후 별도의 에러메세지가 없으면... java 파일이름 라고 치고 실행(엔터) 합니다.

3. 자.. 실행되어 "Hello World!"라는 문장이 뜨네요.

 

위의 문장을 좀 자세히 살펴본다면..

Class FirstJava

{    

public static void main(String[] args)

{

System.out.println("Hello World!");

}

}

 

FirstJava는 클래스의 이름이죠? 당연히 이 이름이 파일의 이름이 되어야 합니다.

반드시 하나의 프로그램은 main(메소드)를 가집니다. 프로그램의 시작부죠~

그리고 'print'는 호출문인데..뒤에 'ln'을 쓰면 한줄 띄우게 됩니다. 당연히 없다면 한줄 띄우는 것 없겠죠? ^^

그리고 문장을 구분짓기 위해 마지막에는  ;(세미콜론-한줄을 의미)를 작성해야 합니다. 없다면 에러~~~

 

 

위의 이미지는 컴파일하여 실행한 화면 입니다.

 

새로운 파일을 하나 만들었습니다.

새로운게 하나 있네요. 바로 주석입니다.

 

주석은 '/*'로 시작해서 '*/'로 끝을 내면 여러 문장을 한꺼번에 주석으로 처리 할 수 있습니다.

그리고 문장의 끝에 '//'를 입력 한 후 주석을 작성하실 수도 있습니다.

 

 

" "안에 있는 글자는 모두 문자로 출력하고 그 문자에 뭔가를 덧붙이기 위해 '+'를 적고 다음의 글자를 입력하는 형태 입니다. 아래의 주석을 참고하면서 보시면 이해가 되실 듯~ ^^

 

 

 


다음의 예제를 보겠습니다. 변수를 활용하는 예제!

변수를 선언할 때는 "타입 변수명" 이라고 적는다. ex. int num1 //여기서 int는 정수형의 타입을 의미하고, num1는 변수명이 되는 것 입니다.

참고로 앞에서 나온 String은 단어나 문장을 저장해 놓을 수 있는 문자열을 의미한다.

 

int 는 앞에서 언급한 것 처럼 정수를 표현하는 변수 입니다.

분명히 잊어 버렸을 테니.. 다시 한번 적어 두겠습니다.

정수
byte : 1byte (-128~127) 2^8
short : 2byte(-32768~32767) 2의16승(2^16)
int : 4byte (-2147483648~2147483647) 2^32 - 기본형 (지정하지 않을경우 int로..)
long : 8byte

 

실제로 변수에 10이라는 숫자와  20이라는 숫자를 대입할 것이이 때문에 굳이 4byte int를 사용하지 않고 1byte짜리 byte 또는 short를 사용해도 괜찮겠죠~ 당연히 long을 사용해도 될테고.. 문제는 효율성이므로.. ^^

 


 

 

 다음의 또 다른 예제를 보겠습니다. 예제와 함께 주석을 보시면 이해 되실 듯...

16진수로 표현하기 위해 "0x"를 썼고, 8진수를 표현하기 위해 "0"을 썼네요

 

 


 

다음 예제

 

 

 

 


 

다음예제 입니다.

굳이 뭔가를 설명하지 않아도 충분히 이해 할 수 있도록 주석을 아주 자세히 달아 두었네요.. 제가..ㅋㅋ

 

 

 

 


 

다음예제

 

 


 

다음 예제

 

 

 

 


 

다음 예제

 

 

간단히 해설하자면.. result1은 num1이 10과 같고 num2 20과 같으면 true, 틀리면 false... 뭐 그런 의미죠?

 

 

 


 

다음예제 입니다. 여기서 참고할 사항 중에 하나는, '+=' 연산자 입니다. 요거는 A += 10 이라는 것은 A=A+10 입니다. 앞에서 잠깐 나왔죠? 주석으로 설명한 것이니 참고하세요 ^^

 

 

 

 


 

다음예제 입니다. 여기서도 새로운 연산자가 하나 있네요. 가령 B= A ++ 이라고 하면 A에다가 1만큼 증가해서 B값에 대입한다는 의미 입니다.

 

 

 


 

다음예제

 

 

 


 

다음예제

 

 

 


 

다음예제