본문 바로가기

컴퓨터 공부/'23 동계 모각소

동계 모각소 ; 1-1주차

참고 강의 : inflearn 김영한 자바 입문

참고 도서 : java의 정석

 

Java를 공부했다.

 

* 컴파일

 자바 프로그램은 컴파일과 실행단계를 거치는데, Hello.java 같은 형식의 자바 소스코드를 개발자가 작성하면 자바가 제공하는 javac라는 프로그램으로 소스코드를 컴파일하게 된다. 그러면.java형식에서 .class형식의 파일이 생성된다. 이렇게 생성된 Hello.class 파일을 java프로그램을 사용하여 자바 가상 머신(JVM)이 실행되며 프로그램이 작동하게 된다. 비교적 복잡해 보이지만, 인텔리제이를 사용하게 되면 위 두 과정을 모두 자동으로 편리하게 진행해준다. 

 

<변수>

 변수는 variable이라고 한다. 변수는 값을 보관하고 필요할 때 꺼내서 그 값을 읽을 수 있는 저장소에 해당한다. 수학에서도 변수라는 개념이 쓰이는데 자바에서도 변수라는 이름 그대로 내부의 값이 변할 수 있다. 

 

변수에는 다양한 형(type)이 존재한다. 정수를 다루는 int형, 실수를 다루는 double형, 문자를 다루는(오직 하나만 ex) '가') char형, 문자열을 다루는(ex) "가나다") String형 등이 있다. 

 

int a;   // 정수(integer)를 보관할 수 있는 a라는 변수가 생성된 것이다.

a = 1;  // a 변수안에 1이라는 정수 값이 저장된다. (변수 초기화)

System.out.println(a); // 변수 a에 저장되어 있는 값을 출력 한다.

 

수학에서 등호(=)는 양변의 값이 같다는 의미이지만, 자바에서 등호(=)는 오른쪽에 있는 값을 왼쪽에 저장한다는 뜻이다. 

즉, 위에서 a = 1 이라는 코드는 변수 a에 1이라는 정수를 저장한다는 뜻이 되는 것이다.

 

만약 아래와 같이 변수의 초기화를 하지 않으면,

 

다음과 같은 컴파일 에러가 발생한다.

 

 이런 에러가 발생하는 이유는 컴퓨터에서 메모리는 여러 시스템이 사용하는 공간이여서 그 공간이 기존에 어떤 값이 있었는지를 모르기 때문에 이상한 값이 출력될 수 있기 때문이다.  참고로 위에서 다룬 변수는 지역 변수로 직접 초기화를 해야하지만 추후에 배우게 될 클래스 변수와 인스턴스 변수는 자바가 자동으로 초기화를 진행하게 된다.

 

값이 변하는 변수와 다르게 값이 변하지 않는 것을 상수(constant)라고 이전에 배웠었는데 공부를 하다보니,

상수와 리터럴(literal)이라는 두 개념이 혼동되었다. 둘다 변하지 않는 값을 의미하지만 차이가 있다.

상수는 변하지 않는 변수를, 리터럴은 변수안에 저장되는 변하지 않는 데이터를 의미한다.

즉, final int a = 1; 이라는 코드에서 상수는 a, 리터럴은 1 이라고 할 수 있다.

참고로 로컬 변수에 final을 선언하면 한번 초기화된 변수는 상수값이 된다.

 

변수를 선언하게 되면 메모리 공간을 차지하게 되는데 변수의 형에 따라 차지하는 공간의 크기가 달라진다.

이것은 C에서 배웠던 것과 유사하다. 

ex) char형 = 2byte, boolean형 = 1byte(ture or false), int형 = 4byte, long형 = 8byte, double형 =8byte 등..

실제 코드 작성시에는 필요에 맞는 변수 형을 사용하면 된다.

 

<연산자>

연산자 부분은 내가 학습하며 헷갈렷던 것들 위주로 정리해봤다.

 

1. 연산자 우선순위

출처 한빛미디어

연산자는 위와 같이 우선순위가 있지만 헥갈리는 경우에는 괄호를 사용하면 쉽다.

 

2.  두 값을 비교하는데 비교 연산자를 사용하는데 양쪽이 일치하는 지를 비교하는 연산자는 ==이다.

그러나 양쪽의 문자열이 일치하는 지를 비교할때는 .equals() 메서드를 사용해야 한다. 이것은 ==연산자는 객체를 비교하고 .equals()메서드는 내용을 비교하기 때문이다. 

위의 코드로 그 사실을 확인할 수 있다.

 

느낀점 : 그동안 처음부터 끝까지 나열하는 방식으로 학습하는 습관이 있었는데 이번 모각소를 계기로 조금 더 효율적인 공부 습관을 들여야겠다고 생각했다. 내가 약하다고 생각되는 것에 더 시간을 투자하는 방향으로 나갈 것이다. 또한 앞으로 우리 팀이 진행하게 될 프로젝트에 필요한 부분을 더 집중적으로 공부해야겠다고 느꼈다.

'컴퓨터 공부 > '23 동계 모각소' 카테고리의 다른 글

동계 모각소 ; 3-2주차  (0) 2024.01.28
동계 모각소 ; 3-1주차  (0) 2024.01.27
동계 모각소 ; 2-2주차  (0) 2024.01.20
동계 모각소 ; 2-1주차  (0) 2024.01.16
동계 모각소 ; 1-2주차  (0) 2024.01.15

Total : Today : Yesterday :