[JAVA]자바 시작하기

신동혁·2022년 8월 12일
0

JAVA

목록 보기
1/16

1. 자바

1.1 자바 개발환경 구축하기

프로그래밍 언어 자바를 배우기 앞서 자바 개발환경을 구축해줘야 한다.

  • jdk( javaSE )란?
    자바는 우선 컴파일 언어이자 인터프리터 언어이다.

    • 컴파일 언어 : 전체코드를 한번에 번역.
      ex)자바 컴파일러가 코드를 자바 가상 머신(JVM)이 실행할 수 있는 자바 바이트 코드로 번역. abcd.java --(명령어 : javac abcd.java)--> abcd.class

    • 인터프리터 언어 : 한 줄 단위로 번역.
      ex)자바 인터프리터가 컴파일된 자바 바이트 코드를 한 줄 단위로 2진 코드로 번역해 실행한다. abcd.class --(명령어 : java abcd)--> abcd

      jdk는 위 기능을 할 수 있는 컴파일러와 인터프리터를 가지고 있어 자바 언어로 작성된 코드를 실행 가능케 해준다.

      이후 모든 디렉토리에 있는 자바 소스코드에 이런 컴파일러와 인터프리터가 동작할 수 있도록 path를 등록해주면 효율적인 코드 작성이 가능해진다.

1.2 eclipse

  • eclipse란?
    통합 개발 환경(IDE)로 자바로 소스코드 작성을 하기 위해 다운로드했다.
    소스코드를 저장하면 자동으로 컴파일된다.

1.3 소스코드 작성

나는 파이썬을 통해 프로그래밍에 입문해서 파이썬의 작성 방식에 익숙해있다. 그래서 조금 어색했던 부분들을 적어본다.

  • 줄이 끝날 때마다 ' ; '(세미콜론) 찍기
  • 파이썬은 함수를 클래스 안에 작성하면 메소드라고 부르고 클래스 밖에 작성하면 함수라고 하지만, 자바는 함수를 무조건 클래스 안에 작성할 수 밖에 없어 메소드라고만 부른다.
  • 변수 선언
    파이썬은 아무렇게나 이름만 짓고 변수값을 초기화시켜주었는데,
    자바는 변수를 선언하기 전에 데이터타입을 명시해 선언한다.
    ex)파이썬 : name="신동혁"
        자바 : String name="신동혁"

1.4 변수

  1. 타입에 따라 2가지로 분류된다.
  • 기본타입(내장타입) : 정수/실수/논리/문자
    ex) (소문자로 씌여있다) int, float, char 등등
  • 참조타입(class타입, 객체타입) : 제공받은 class기반 혹은 사용자 정의 타입
    ex) String 등등
  1. 선언 / 초기화
    선언 : 변수 만들기만
    초기화 : 변수에 선언과 값 부여까지

  2. 선언 위치에 따라 2가지로 분류된다.

  • 멤버 변수 : 클래스 안, 메소드 밖 변수
    객체 생성 시 객체별로 생성됨
  • 로컬 변수 : 메소드 내부 변수
    객체 생성과 무관. 메소드 호출 시 생성 및 메소드 종료 시 소멸됨

1.5 객체 지향

사용자가 많은 대규모 프로그램을 위한 방법이라고 생각하면된다.
1. class라는 개념을 만들고 마치 도장 찍듯이 class로 객체를 찍어낸다.
2. class에 있는 메서드를 이용해 각 개체를 따로 관리해준다.

객체 생성 문법

  • new 생성자( )
  • 객체를 관리하는 참조변수 필수 --> 타입 참조변수 = new 생성자( )

1.6 궁금했던점

컴파일러를 통해 저장을 하면 코드가 자동 컴파일 된다고 하였는데, 파일 확장자명은 java그대로이고 class로 바뀌지 않았다. 왜 그런가?

알아낸답 :
확장자가 java인 파일이 확장자가 class인 파일로 바뀌는 것이 아니라 확장자가 class인 파일이 추가되는 형식이었음. 이 class확장자 파일은 workspace로 지정해둔 폴더에 src가 아닌 bin폴더에 생성된다.

2. Maven (메이븐)

이클립스에는 메이븐이 이미 설치되어 있다. 메이븐은 자파용 프로젝트 관리 도구다. 'pom.xml'이라는 파일을 만들고 여기에 사용할 라이브러리들을 depency로 추가하면 해당 프로젝트에 사용이 가능하고, 메이븐을 통해 외부 라이브러리들을 설정만으로 내 로컬 시스템에 자동 다운로드 시킬 수 있다.
ex) 롬복을 메이븐을 통해 추가한 상황

//pom.xml 파일...
  <dependencies>

  	<dependency>
		<groupId>org.projectlombok</groupId>
		<artifactId>lombok</artifactId>
		<version>1.18.24</version>
		<scope>provided</scope>
	</dependency>

  </dependencies>

2.1 이클립스 메이븐 적용하기

이클립스 기준
1. File -> Configure -> Convert to maven
2. 그럼 프로젝트 안에 'pom.xml'이라는 파일이 생긴다.
3. 'pom.xml'에서 depencies태그 안에 원하는 내용을 추가한다.

3. Lombok (롬복)

코드 다이어트 라이브러리(API)로, getter/setter/toString 같은 매서드의 생성을 쉽게 할 수 있게 해준다. 이때 어노테이션(파이썬에서는 데코레이션이나 장식자라고도 부름)이라고 불리는 엣 '@'을 이용한다. 만약 '@Data' 다음과 같이 입력하면 자동으로 'import lombok:Data;'라는 코드가 작성되고 인스턴스변수에 관한 get/set함수가 생김을 outline탭을 통해 확인할 수 있다.

좋은 점으로는 변수를 생성하거나 제거할 때마다 자동으로 get/set함수 등도 생성/제거 된다.

3.1 Getter/Setter의 필요성

수업을 진행하는 도중 왜 굳이 getter와 setter메서드를 통해 클래스의 변수값을 받거나 설정해주는지 궁금했다. 단순히 dot을 이용해 진행하면 되지 않는가라는 궁금증이었다.

이에 대해 강사님은 getter나 setter같은 메서드를 만들고 이 곳에서 세부조건이나 제약을 걸어서 입력값의 범위설정같은 기능을 추가하기 용이하기 때문이라고 설명해주셨다.

ex) 여성용 쇼핑몰 회원가입

public class Customer {
	private String id;
	private int pw;
	private char gender; //성별은 무조건 'F' 가 들어와야 할 때
	
	public Customer(String id, int pw, char gender){
		this.id=id;
		this.pw=pw;
		setGender(gender); ///!!!!!여기가 중요한 부분
	}

	public void setGender(char gender) {
		if(gender == 'F') {
			this.gender=gender;
		}else {
			System.out.println("잘못된성별입니다");
		}
	}
}

위 코드는 private으로 변수들을 보호하는 기능 + customer객체를 선언할 때 제대로 된 성별이 들어와야만 객체가 생성되게 하는 기능이 추가된 것이다.

4. JUnit (단위테스트)

소스코드를 작성하다보면 부분만 테스트해보고 싶을 때가 있다. 지금은 이클립스를 이용해 자바소스코드를 작성 중이어서 main메서드가 있는 부분을 통해 소스코드를 실행하므로 main메서드 안에 있는 모든 코드가 실행이 된다. 하지만 코드가 길어질 경우 나중에 작성한 코드만을 확인해야 할 경우가 생기므로 이럴 때 이용하는 것이 JUnit 프레임워크다.( 파이썬은 XUnit )

롬복과 비슷하게 어노테이션을 사용한다. 단위테스트가 필요한 부분 위에 '@Test'다음 코드를 작성하면 자동으로 JUnit라이브러리가 import되고 소스코드 상에서 마우스 우클릭을 하여 'Run as - JUnit Test'을 클릭해주면 JUnit에 대한 탭이 열리며 단위 테스트 결과가 출력된다.

profile
개발취준생

0개의 댓글