반응형

지난 시간에는 Hello, World를 타이핑 해보았다. 그렇다면 Hello, World에 대한 이야기를 해보도록 하자.

[Java]Hello World! 출력하기 

public class Main{

}

자바 프로그램에서의 기본 골자는 이러한 형태로 생겼다. 바로 

 

1. public class이다.


자바 프로그램 상에서 public class는 가장 기본이 되는 것 중 하나이다. 자바 프로그램은 기본적으로 하나 이상의 class로 구성되어 있으며, 이러한 class 들이 모여 다양한 일을 하는 프로그램이 되는 것이다. class의 이름은 Main말고도 다양하게 가질 수 있다. 원하는 이름은 모두 class의 이름이 될 수 있지만 숫자로 시작하는 것은 안된다. public은 접근 제어자로 접근을 제한하는 기능을 하는 문법이다. 이는 접근에 제한이 없는 것을 의미하며, 접근제어자로는 protected, default, private를 사용한다. 객체지향에서 이러한 접근 제한 아주 중요한 역할을 한다. (대표적으로 객체지향에서 캡슐화라는 단어가 나오는데, 캡슐화의 장점 중 하나는, 해열제로 예를 들자면, 실제 세상에서 약을 먹을 때, 그 속에 어떤 성분이 있는지 모르지만 약을 먹으면 열이 내리는 역할을 해준다. 우리는 약에 대한 성분을 아무것도 모르더라도 약효가 무엇인지만 알고도 사용할 수 있는 것이다. ) 물론 객체지향에 대해 더 자세히 이야기하면 끝도 없지만 대략적인 느낌은 그러하다.

 

앞서 보았던 웹 컴파일러에서도 Ideone으로 클래스 이름을 지정했다. 

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

그 다음으로 오는 내용은 main 메소드이다. main은 전체 프로그램 상에서 하나의 main을 갖는다. 실제로 프로그램이 구동되는 공간으로써, 프로그램이 시작되는 공간이라 생각하면 편하다. 앞서 본 public말고도 static이 존재하는데, 프로그램이 시작하는 시작 공간이다 보니, 처음부터 메모리 상에 존재하게끔 만들어주는 역할을 한다고만 알아두자. 나중에 다시 이야기하도록 하겠다.

 

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

마지막으로 Hello, World를 출력해주는 구문이다. 이는 자바 표준 입출력 클래스에 들어있는 함수이다. 세 부분으로 이루어져 있다. System + out + println으로 해석해도 좋다. 당연히 System은 시스템이라는 말에서 볼 수 있듯이 컴퓨터의 기본적인 일을 처리하는 공간이 될 것이며, out은 밖으로 나가는 출력 시스템, print + ln이므로 무엇인가가 프린트를 된다고 볼 수 있다. 마지막 ln은 새로운 라인을 넣어준다는 New Line과 같다. 

 

비슷한 메소드로써 System.out.print("Hello, World") 가 있다. 이 메소드는 데이터를 출력한 이후에 줄 바꿈을 하지 않는다. 

 

이렇듯 한 개의 간단한 프로그램을 보더라도 많은 키워드가 있음을 확인할 수 있다. 우리는 이러한 키워드를 모두 외울 필요는 없다. 다만 중간중간에 필요할 때마다 찾아봐야 한다. 이렇게 많은 키워드를 어떻게 외울 수 있겠는가? 물론 자주 쓰다보면 외울 수야 있다. 하지만 너무 많기 때문에 외우지 않고 레퍼런스를 찾아보면서 쓰는 것이다. 그러므로 레퍼런스를 자주자주 들여다 보는 습관을 갖는 것이 좋다. 

 

en.wikipedia.org/wiki/List_of_Java_keywords 

 

List of Java keywords

A snippet of Java code with keywords highlighted in blue and bold font In the Java programming language, a keyword is any one of 52 reserved words[1] that have a predefined meaning in the language; because of this, programmers cannot use keywords as names

en.wikipedia.org

위키피디아에는 많은 자바 키워드가 정리가 되어 있다. 구경하고 싶은 사람은 구경해도 좋다.

반응형
반응형

우리는 프로그래밍 언어를 배우게 되면 가장 먼저 출력해보는 단어들인 Hello, World를 출력해보도록 하자. 기본적인 출력을 해봄으로써 프로그래밍이 어떠한 과정으로 진행되는지 살펴보자라는 의미를 가지고 있다. 프로그래밍 세계로의 첫 걸음인 것이다. 중요하면서도 동시에 무섭기까지 하다.

 

우리는 Java IDE를 사용하도록 할 것이다. 다만, 유명한 이클립스를 사용하진 않을 것이다. 이유는 안 이뻐서다. (가장 중요한 이유다.) 그렇다면 무엇을 사용할 것인가? IntelliJ IDEA를 사용할 것이다.

 

이유는? 역시 이뻐서다. 그냥 필자의 마음에 들어서다. 처음에 뭐가 좋나 뭐가 좋나 고민할 필요가 없다. 이쁘고 무료로 지원되냐? 가 중요하다.

 

두 가지 다운로드 옵션이 존재한다. 하나는 Ultimate, 하나는 Community이다. 커뮤니티는 무료 버전이다. 하지만! 만약 학생이라면 학교 이메일을 통해 인증하고, 1년 간 무료로 사용해보도록 하자. 정말 편하다. 물론 우리에게는 더욱 강력한 VSCode도 있긴 하지만, 처음부터 사용하기엔 부담스럽다. 그냥 알아서 해주는 IntelliJ를 사용하도록 하겠다.

 

www.jetbrains.com/ko-kr/idea/

 

IntelliJ IDEA: 우수성과 인체 공학이 담긴 JetBrains Java IDE

Enterprise Java, Scala, Kotlin 등을 지원하며 강력한 기능을 제공하고 인체 공학적으로 설계된 Java IDE

www.jetbrains.com

공식 홈페이지이다. 간단하게 뭐가 우수한지 말하자면, 쓰다보면 가끔 언어를 이해하고 내게 필요한 것을 추천해줄 때 편안함을 느낀다. 물론 더 다양한 이유가 많지만, 그런건 처음에는 보이지도 않는다. 누차 이야기하지만 편하고 이뻐서다!

[학생 인증이 되시면 반드시 Ultimate을 사용하도록 하세요.]

 

 

둘의 차이는 아직 우리가 못 느낀다.

 

그러나 프로그래밍을 하면 할 수록, 알아가면 알아갈수록 필요한 기능들이 보이기 시작할 것이다. 

물론 다른 IDE도 있다.

 

code.visualstudio.com/

 

Visual Studio Code - Code Editing. Redefined

Visual Studio Code is a code editor redefined and optimized for building and debugging modern web and cloud applications.  Visual Studio Code is free and available on your favorite platform - Linux, macOS, and Windows.

code.visualstudio.com

추천한다. 무료다! 강력하다! 이쁜걸로 쓰면 되지만 VSCode는 직접 하나하나 만들어가야 한다. (플러그인을 잘 설치해야 한다.) 좋고 나쁜건 없다. 그냥 아무거나 써도 된다. 사용자가 중요하다. 전동 드릴을 사야하는데 어떤 브랜드를 써야 하나요? 삼대장 같은게 있으니 그것 중에 아무거나 골라서 쓰면 된다.

노트북은? LG, 삼성, 애플과 비슷한 이미지다. 

 

인텔리제이 설치와 더불어 초기 설정에 알고 싶다면, goddaehee.tistory.com/195

여기에 추가로 플러그인 설치를 통해 한글화를 진행하면 된다. 

 


프로젝트까지 완료되면 우리는 Hello World를 볼 수 있다.

 

class Main {
    public static void main(String[] args){
        System.out.println("Hello, Name!");
    }
}

을 치고서 실행하면 된다. 

실행하면 

이런 느낌으로 나오는 것을 확인할 수 있다.

 

 


웹 컴파일러 사용하기


IDE는 편안함을 제공한다는 점에서 아주 좋다. 하지만 설치가 번거롭고 초기 셋팅을 하기까지 귀찮을 수 있다. 게다가 많은 기능이 필요없는 사람의 입장에서 설치는 정말 하기 싫은 작업 중 하나이다. 그러므로 설치하지 않고 인터넷 웹 페이지 상에서 사용할 수 있는 웹 컴파일러를 소개하고자 한다. 많이 사용되기도 하는 웹 컴파일러 중 하나는 이곳이다.

ideone.com/

 

Ideone.com

Ideone is something more than a pastebin; it's an online compiler and debugging tool which allows to compile and run code online in more than 40 programming languages.

ideone.com

컴퓨터가 느리거나 설치가 싫은 사람은 웹 컴파일러를 꼭 써보기 바란다. 추가로 위에 사이트가 접속이 안 될 경우에는 웹 컴파일러라고 구글에 치면 많은 종류가 나오니 취사선택해서 사용해보는 것도 좋다.

 

이런 느낌으로 나온다.

반응형
반응형

1. 리터럴 (Literals)


우리의 일상생활을 둘러싼 모든 것은 어떠한 관점에서 보면 모두 정보라 볼 수 있다. 그러한 관점에서 우리는 변수와 상수를 나누어서 살펴볼 필요가 있다. 수학에서도 변수와 상수는 구분되어져 있다.

이 식은 우리가 중학교 때부터 봐온 이차식이다. 아주 간단한 식이다. 이 식에는 변수와 상수가 공존하고 있다. a, b, c는 상수이며, x는 변수이다. 너무 깊게 들어가지 말고 간단하게 짚고 넘어가도록 하자. 상수는 고정된 값이며, 변수는 변할 수 있는 수이다. 그래서 컴퓨터에서도 변수와 상수 두 개로 나누어져 있다. (원래 프로그래밍 자체가 학자를 위한 것이었으므로 그 기원을 생각하면 이렇게 설계된 것이 당연시 된다.) 

 

하지만 컴퓨터에서는 하나의 개념이 더 추가된다. 바로 리터럴이다. 리터럴이란 데이터 자체의 값을 리터럴이라고 한다. 예를 들어 10이란 수가 있으면, 10 자체의 데이터를 의미하는 그 자체의 값을 리터럴이라 부른다. 예를 들어 보자.

final int a = 10 

final을 붙이면 변수를 변경할 수 없게 된다. 그래서 우리가 이야기하는 상수가 된다. 변할 수 없는 값이므로 상수의 정의에 들어맞는다. 이러한 값을 초기에 한번은 정의를 해줘야 하는데, 그 값 자체를 의미하는 10은 리터럴이 된다.

 

다시 한번 정리하자면 10이란 숫자 자체는 리터럴이며, 10을 넣어서 값을 변하지 못하게 하는 한 값은 상수가 되는 것이다. 

 

프로그래밍에서는

  • 상수는 특정 공간에 넣은 변수인데, 변하지 않는 변수를 상수라 부를 것이며,
  • 리터럴은 데이터 자체로써의 변하지 않는 어떤 값을 의미한다.

Java에서 문자 리터럴와 문자열 리터럴은 차이점이 있다.

문자 리터럴은 'a', 'b' 이렇게 하나짜리 따움표를 쓴다는 점

문자열 리터럴은 "a", "abc", "Hello"의 형태를 가진다는 점이다. 문자를 하나 쓴다고 문자 리터럴이 되지 않는다. " " 의 형태는 문자열 리터럴을 가지게 된다. 다만, 컴파일러가 똑똑해짐에 따라 알아서 바꿔주지만 그래도 조심해서 사용하도록 해야 한다.

 

마찬가지로 숫자 리터럴에서도 1_000_000 이러한 값은 숫자 리터럴이다. 문자가 아니다. 이렇게 사용하는 이유는 단위를 읽기 쉽게 만들어주기 위해서이다. (가독성) 저 숫자랑 같은 수는 1000000이다. 

 

리터럴의 종류에는 다양한 종류가 있다. 우리가 생각하는 모든 변수는 모두 리터럴이 존재한다. 정수 리터럴, 문자 리터럴, 문자열 리터럴, 실수 리터럴, 논리 리터럴 등 다양한 종류가 존재한다. 이러한 리터럴의 차이점을 아는 것은 우리가 자바를 프로그래밍할 때, 나중에 객체지향프로그래밍을 할 때 중요한 초석이 된다. 리터럴로 생성된 객체의 주소값과 특정 메서드를 활용해서 비교하는 경우에가 다를 수 있다는 점을 이해할 수 있는 길이 되는 것이다. 이러한 점은 나중에 차분히 설명하도록 하자.

 

2. 변수


변수 - 메모리 상에 자리를 지정해주고 그 자리를 사용자가 사용할 수 있도록 알려주는 것이다. 

예를 들어, 서울시 성북구 117번길 1에 사는 사람의 주소를 able이라 하면 다음부터 able이라 부르면 우리는 자연스럽게 서울시 성북구 117번길 1로 찾아가게 되는 것이다. 

 

int able;

이렇게 지정해주면 int라는 자리만큼의 메모리를 배정하주고, 특정 주소지에 대한 이름을 able이라 하자 라고 선언하는 것이 변수이다. 이제 이 공간은 사용자가 사용할 수 있다. 

able = 1;

사용할 수 있는 주소와 장소가 생겼으므로 여기에 1을 넣도록 할 것이다. 여기서 1은 리터럴로 생성이 된다. 메모리 어딘가에 생성된 상태가 되는 것이다. [차후에 이야기하겠지만, 리터럴이 생성되는 공간과 변수가 생성되는 공간은 다른 메모리 상에서 생성된다. ]

 

우리는 이러한 1을 able의 공간에 넣어주는 행위를 초기화한다고 한다. 그리고 이러한 초기화 과정은 여러번 일어날 수 있다.

 

able = 1;
able = 2;
able = 3;

이러한 코드가 온다면 초기화가 3번 일어난 것이다. 

( * 그러면 왜 값을 대입하는 것을 할당이라 안 하고 '초기화'라 하는 것인가? => 이 부분에 대한 답은 메모리를 이루고 있는 하드웨어적 요소를 생각하면 초기화란 단어가 자연스럽게 와닿게 된다. RAM은 기본적으로 휘발성 메모리로 전기가 계속 인가되어 있는 동안에는 기존에 가지고 있던 정보가 유지된다. 하지만 전기가 끊기면 날라간다. 우리는 이러한 여러 특성을 활용해서 메모리를 지웠다 썼다 를 할 수 있는 것이다. 그러면 새로운 데이터가 와서 새롭게 저장하려면 리셋을 한 뒤에 다시 데이터를 써야 하지 않겠는가? 그러한 이유에서 메모리가 초기화된다고 이야기할 수 있다. ) - 이는 이해를 위해 생략된 부분이 많으므로 반드시 공부가 깊어짐에 따라 한번 다시 생각해보길 바란다.

 


 

반응형

+ Recent posts