'programming'에 해당되는 글 12건

  1. 2005.09.21 [자바]문법에 빠져보아요~~
  2. 2005.09.20 [자바]허우적거리기..

- 자바는 3가지의 주석(comment)을 가진다.
1. // : 한줄주석(single line comment)
2. /* */ : 여러줄에 걸쳐서 주석을 줄때 유용(block comment)
3. /** */ : 자바에서만 지원하는 주석. JDK안의 javadoc이라는 유틸리티와 함께 사용되는데, 이 유틸리티는 우리가 만든 package, class등의 설명서(specification)를 만들때 사용한다.

- 자바에서 한 statement가 끝나면 반드시 끝에 세미콜론(;)을 붙여야 한다. block이라고 하는 것은 중괄호({ })로 묶여진 부분을 말하고, 공백(whitespace)이라고 하는 것은 space, tab, new line character를 총칭하는 말로 이 3개의 문자는 소스코드안에 얼마든지 포함되어도 문제없다.

- Identifiers : 이름을 의미한다고 생각해도 무방. class명, method명, 변수명등 이름을 필요로 하는 것들이 가지고 있는 이름을 통틀어서 지칭한다. 대소문자를 구분하고 길이의 제한은 없다(?). 문자나 underscore(_), dollar sign($)으로 시작할 수 있다.
3test, @hitest, this –> (X)
_system, test2test, This –>(O)

- Data Type
자바에서 제공하는 data type은 크게보면 2가지(Primitive type, Non-primitive type)이다.
1. Primitive Type
a. Logical : 참(true)과 거짓(false)값만을 가질수 있으면 C언어에는 없는 type이다.
ㄱ. boolean (예. boolean b=false) –> boolean변수에는 오로지 true, false중 하나만 대입할 수있다. java는 0은 false이고 0이 아니면 모드 true라는 semi-boolean안 개념을 지원하지 않는다.
b. Textual : 2바이트 크기. 한글처리가 가능하며 일반적인 문자를 담을 수 있다.
ㄱ. char –> primitive type으로는 문자열(string)을 표현할 수 없다. chat는 단지 한 문자를 표현하는데 사용할뿐이고 char array를 이용해서 문자열을 표현할 것이라고 생각해서도 안된다. 자바에서 문자열은 String이라는 class를 이용하여 표현한다.
String str = ” Hello World!!”
c. Integral : 정수를 표현하는데 사용
ㄱ. byte : 1byte(-2^7 ~ 2^7-1)
ㄴ. short : 2byte(-2^15 ~ 2^15-1)
ㄷ. int : 4byte(-2^31 ~ 2^31-1)
ㄹ. long : 8byte(-2^63 ~ 2^63-1)
d. Floating : 실수를 표현하는데 사용
ㄱ. float : 4byte
ㄴ. double : 8byte

- 자바 코딩시에 identifier에 대한 convention
1. class : 반드시 대문자로 시작.나머진 소문자. 다음단어는 첫자만 대문자.
class HanClass
2. Interface : Interface도 class의 일종이므로 동일.
interface TestUser
3. Method : 시작은 소문자. 다음단어는 첫자만 대문자.
printUser()
4. Variable : Method와 동일
myName
5. Constants(상수): 모두 대문자. 다음단어 사이에 underscore(_)
HEAD_COUNT

- 자바는 OOP(Object Oriented Programming)이다. object는 물건 혹은 물체이다. OOP는 바로 이와같은 object개념을 프로그램에 반영한 것으로 object는 눈에 보이는 것일 수도있고, 계좌(account), 회계(finance)와 같이 눈에 보이지 않는 것일 수 도 있다. 실제 object를 프로그램에 적용할 수 있는 형태로 변경하는 작업을 추상화(abstract)라고 한다.

‘계좌(account)’란 object를 추상화해보면…
object명 : 계좌(account)
명사 : 계좌번호, 비밀번호, 잔고, 이율, 이체한도 등등
동사 : 입금하다, 출금하다, (잔고를)조회하다 등등

public class Account {
private String accountNum = “422-01-09038″;
private String password = “123123″;
private long restMoney = 400000;
private float interest = 3.34F;
}

- Object만들기
위에서 만든 class를 이용하여 object를 만들려면 아래와 같다.
Account x;
x = new Account();

or.

Account x = new Account();

[primitive data type]
int a; —> 4byte의 메모리가 할당
a = 7; —> 7이 할당된 메모리에 저장됨.

[non-primitive data type]
Account x; —> Account object를 point할 수 있는 reference변수를 만듬.
x = new Account(); —> 실제로 account object를 만듬. 그 object의 주소값을 x에 할당.
primitive type의 변수인 경우, 변수를 선언하면 data영역이 자동으로 생성되지만 non-primitive type변수(즉, reference 변수)의 경우는 object를 저장하는 data영역이 자동으로 만들어 지지 않는다. 따라서 직접만들어 주어야 하는데 그때 사용되는 키워드가 new이다.

- dot notation: dot(.)를 이용하여 object의 member variable를 접근하는 표현방식.
class MyDate {
int year;
int month;
int day;
}

MyDate md = new MyDate();
md.year = 2000;
md.month = 3;
md.day = 2;

Posted by salgunamu
:

얼마전에 인터넷을 통하여 Java Tutorial 3판을 구매했다. 앞으로 무엇을 해볼까? 하는 생각이 하루에 몇차례씩 머리속을 헤집어 놓을때마다 뭔가를 하기위해서 나에게 필요한 지식이 있어야 한다는 생각을 다시한번 상기하게 되었다.(반복되는 생각인듯..) 아무래도 무엇가를 하기위해서는 나에게 언어에 대한 지식이 필요하다는 생각을 하게 되었고…그리고 선택한 언어가 자바가 되어버렸다.. 구매한 책을 1장을 읽고나니 정리가 되지 않는듯하여 한동안 손을 놓고나니 다시 허탈해진다. 작심..이러한 말로 끝나지 않았으면 했는데…왠지 불안하게 만든다.. 다시한번 마음을 가다듬고 정리를 통해서 열심히 해야겠다..

Java란 Sun에서 만든 객체지향언어(Object oriented Language)로 구문이 기존의 대표적인 언어인 C,C++과 매우 유사한 형태를 취한다. Java로 개발할 수 있는 것들은 applet, application, servlet, JSP(Java Server Page)등이있다. 대부분의 사람들이 Java하면 applet을 생각하는 경우가 많은데 applet은 java로 개발할 수 있는 것들중의 일부이다. applet은 웹서버에 존재하고 있다가 브라우저를 통하여 다운로드되어서 사용자의 PC에서 수행되는 java프로그램이다.

java의 소스코드는 .java확장자로 저장되는 텍스트 파일로 컴파일을 통하여 수행가능한 bytecode라는 파일이 생성되고 이 파일의 확장자는 .class를 가진다. bytecode인 .class파일은 .exe파일처럼 실행가능한 파일은 아니고 class파일을 해독할수 있는 인터프리터가 있어야 한다. 이 인터프리터가 JVM(Java Virtual Machine)이다. 이 JVM에 의해서 java에 의하여 개발된 프로그램은 OS에 상관없이 사용가능하게 된다.

java는 thread를 쉽게 만들 수 있다는 장점이 있다. 여기서 process와 thread를 잠깐 비교를 해보면…기존의 언어는 process라는 것이 각각의 program에 할당되어 process자신의 code, data를 가지게 되므로 process가 하나씩 증가할때 마다 시스템에 부하가 늘어나게 된다. 또한, process간의 데이터 공유도 어려운 문제가 있다. process내에서 생성되는 thread들은 혼자서 자신의 고유한 작업을 할 수 있는 프로그램안의 프로그램이다. thread들이 생성될때는 process만큼 시스템에 부하를 주지않으며 code나 data공유가 쉽다.

프로그램을 개발하는 프로그램머는 자신이 사용한 메모리를 시스템에 반납해야하는 의무가 있는데 java는 thread로 구현된 garbage collection이 그 일을 자동으로 수행한다.

- java의 소스코드를 입력하기 위한 에디터는 덱스트에디터면 무엇이라도 좋다. 입력한 소스코드의 파일이름은 class의 이름과 똑같아야하고(대소문자까지) 확장자는 .java로 저장되어야 한다. 저장된 소스코드를 컴파일하기 위해서는 본인의 PC에 JDK(J2SE)가 설치되어 있어야 하고 아래와 같이 입력한다.
javac HelloWorldApp.java
위와같이 컴파일을 하면 HelloWorldApp.class라는 이름의 bytecode파일이 생성된다. 이 bytecode파일을 실행하기 위해서는 아래와 같이 입력한다.
java HelloWorldApp

- class는 사용자가 직접만들어 사용하는 것과 또 하나는 JDK(or J2SE)안에 포함되어 있거나, 혹은 기존에 누군가 만들어 놓은 class가 있다. 이런 class들이 워낙 많다보니 관련이 있는 것끼리 묶기 위하여 package라는 것이 등장하게 되었다. package(java.lang, java.io)는 class들의 묶음이라고 보면된다.
java.lang package에는 수많은 class들이 들어가 있는데 이것들은 java가 수행되는 아주 기본적인 class들이다. 따라서, 모든 java source에 이 package가 아래와 같이 import명령으로 포함되어야 하는데 이 문이 생략되어도 자동으로 포함된다.
import java.lang.*;
import문은 C언어의 include문과 유사하지만 include문처럼 copy를 해오는 것이 아니고 단지 class의 위치만 알려주는 것이다.
아래는 java source code의 일반적인 layout이다.
package xxx;
import xxx.xxx.*;
class선언부분

package구문이 생략된 경우에는 생성된 class를 package로 묶지 않겠다는 의미로 현재 폴더에 class파일만 생성된다. 만약에 아래와 같이 package구문이 포함되었다면..
package test; //compile명령: javac -d . HelloWorldApp.java
현재 폴더에 자동으로 test라는 폴더가 생성되고 그 밑에 class파일이 생성된다.

import구문에 사용되는 dot(.)의 의미는 폴더 구분자이다. 만약에 x.y라는 package를 만들었다면 실제적으로 현재폴더에 x라는 폴더가 생성되고 그 밑에 y라는 폴더가 셍성되고 그 밑에 class파일이 위치하게 된다.

Posted by salgunamu
: