딸기말차

[Java] 1. 변수, 배열, 조건 및 반복문 본문

Bootcamp/Java

[Java] 1. 변수, 배열, 조건 및 반복문

딸기말차 2023. 6. 22. 22:28

엔코아 플레이데이터(Encore Playdata) Backend 2기 백엔드 개발 부트캠프 (playdata.io)

 

백엔드 개발 부트캠프

백엔드 기초부터 배포까지! 매력있는 백엔드 개발자 포트폴리오를 완성하여 취업하세요.

playdata.io


1. Java 설치 및 확인

https://docs.oracle.com/en/java/javase/11/

기존의 Java 설치와 크게 다르지 않았다. 사용하는 IDE는 이클립스이고, 자바 버전은 JDK 11을 사용했다.

약간의 차이점이 있었다면, 일반적으로 자바를 설치 시에 사용자변수에 환경변수를 추가 후 시스템변수에서

끌어다 쓰는 방식이었다면, 이번 설치는 바로 시스템변수에 JDK를 추가해 사용하는 방식을 사용하였다.

 

위 사진은 일반적인 설치 방식이다. 강사님께서는 시스템변수에만 환경변수를 추가하는 방식으로 진행하셨다.

 

이 후 cmd를 통해 설치 된 Java를 확인하고, 간단한 리눅스 명령어를 통해 디렉토리에 대해 설명해 주셨다.

현재 디렉터리를 확인하는 dir 명령어
하위 디렉터리까지 확인하는 dir /s 명령어
dir /s 명령어를 페이지 단위로 끊어서 보여주는 dir /s /p 명령어


2. 변수

java 문법의 변수에 대한 설명 및 테스트이다. 

변수 뿐만아니라 기본적인 규칙에 대한 설명도 같이 해주셨는데, 이 덕분에 /* 주석과 /** 주석의 차이점을 알게되었다.

1) /* : 순수 주석으로, java 문서를 만들 때 포함되지않는다.

2) /** : java 문서를 만들 때 작성한 내용이 포함된다.

/**
 * @author LHS
 * Variable Test
 */
/*
 * public : 다른 class에 대한 접근 허가
 * class : class 선언을 위한 키워드
 * VarClass : 클래스명(첫 글자는 영문 대문자로 시작)
 * class 파일명 == class명 == 생성자명
 */
public class VarClass {

	/**
	 * @param args
	 */
	/*
	 * void : method 내 반환 값이 없는 경우
	 * main : 이름 변경 불가
	 * String[] : 전달되는 데이터 타입
	 * args : 파라미터명(매개변수명) -> 외부에서 보내는 값을 전달받아 저장하는 변수
	 */
	public static void main(String[] args) {
		// 변수 선언 : 데이터타입 변수명; / 데이터타입 변수명 = 초기값;
		// 정수(int)를 저장받는 변수 선언
		
		int a;
		int b = 10;
		
		// 변수 사용 : 선언된 변수를 활용(사용)
		a = 10;
		b = 100;
		// c = 300; c라는 변수 선언이 없기 때문에 오류
		int d = a + b;
		int f, g, h;
		f = 1000;
		
		// 숫자 관련 타입 : int(정수) / float(실수)
		// 논리 관련 타입 : boolean (true / false)
		// 단일 문자 : char (단일 문자는 ''로 감싸서 설정)
		// 단일 문자는 원래 유니코드값
		
		// 변수의 특징 : 한 번에 하나의 값만 저장 가능
		f = 1000;
		// g = 10, 20, 30;
		
		// 변수명 : 반드시 소문자로 시작
		// 예) 급여 : pay / 급여 평균 : payAvg
		
		// 한번에 여러 개의 값을 저장하는 변수 : 배열
		// 배열 선언 : 데이터타입[] 배열명 = new 데이터타입[저장 갯수] / 데이터타입 배열명[] = new 데이터타입[저장 갯수]
		// 저장 갯수는 선언 이후에 변경 불가
		int[] intArr = new int[5];
		int[] intArr2 = {10, 20, 30, 40, 50};
		intArr[0] = 100;
		intArr[1] = 200;
		intArr[2] = 300;
		intArr[3] = 400;
		intArr[4] = 500;
		
		intArr2[0] = 10000;
		
		int result = intArr[4] + intArr2[4];
		System.out.println(result);
		result = intArr[0] + intArr[1] + intArr[2] + intArr[3] + intArr[4];
		System.out.println(result);
		
		// intArr[5] = 22222;
	}
}

3. 배열

여러 데이터를 한번에 관리하기 위한 배열에 관한 설명 및 테스트이다.

종종 헷갈리는 문제이지만, 배열은 항상 index가 0부터 시작한다는 것을 잘 인지하고 있어야한다.

public class ArrayClass {

	public static void main(String[] args) {
		int[] intArr = {10, 20, 30, 40, 50};
		System.out.println("intArr의 데이터 갯수: " + intArr.length);
		
		/*
		 * intArr의 데이터들을 합하고 싶을 경우
		 * 1. 각 index를 이용하여 각각의 값을 꺼내어(추출하여) 합
		 * 2. 반복문 : for(반복문 내에서 사용할 변수 선언; 반복문을 멈추기 위한 조건 ; 증감) {조건이 참이었을 경우 해야할 일들}
		 */
		int sum1 = intArr[0] + intArr[1] + intArr[2] + intArr[3] + intArr[4];
		System.out.println(sum1);
		
		int sum2 = 0;
		for (int n = 0; n < intArr.length; n++) {
			System.out.println("n의 현재값 : " + n);
			sum2 += intArr[n];
		}
		System.out.println(sum2);
	}
}

4. 조건 및 반복문

개발 진행 시 전부라고 할 수 있는 조건과 반복문에 관한 설명 및 테스트이다.

원하는 데이터를 검색하거나, 추출하거나 등 다양하게 활용할 수 있는 조건문과 다양한 데이터를 다룰 때 필수라고 할 수 있는 반복문은 뗄래야 뗄 수 없다고 생각한다.

public class ForIfTestClass {

	public static void main(String[] args) {
		int[] age = {27, 34, 28, 26, 41, 28, 42, 29, 29, 32};
		
		// 1. 나이의 합(ageSum) 구하기
		int ageSum = 0;
		for (int i = 0; i < age.length; i++)
			ageSum += age[i];
		System.out.println("나이의 합: " + ageSum);
		
		// 2. 평균 나이(ageAvg) 구하기
		float ageAvg = (float)ageSum / age.length;
		System.out.println("평균 나이: " + ageAvg);
		
		// 3. 평균 나이보다 많은 인원 수(num) 구하기
		int num = 0;
		for (int i = 0; i < age.length; i++)
			if (age[i] > ageAvg)
				num++;
		System.out.println("평균 나이보다 많은 인원 수: " + num);
		
		// 문자열을 저장하고 싶을 경우 데이터 타입 : String
		// 문자열은 반드시 ""으로 감싸야 한다
		String t1 = "a";
		String t2 = "abc";
		String t3 = "ㄱ";
		String t4 = "가";
		String t5 = "값";
		// "영문, 특수기호, 숫자" => 한 글자당 1byte
		// "한글" => 2byte (참고: Oracle에선 3byte)
		
		String[] name = {"PJH","JDW","AJH","HST","HTW","LWS","LSD","YJH","JSW","LKO"};
		int[] pay = {460, 200, 250, 300, 300, 200, 350, 200, 400, 440};
		
		// 급여가 300인 사람의 이니셜을 출력하기
		for (int i = 0; i < name.length; i++)
			if (pay[i] == 300)
				System.out.println("급여가 300인 사람: " + name[i]);
	
		// 급여가 300인 사람의 이니셜 출력하기2
		// 문자열 연산(+), 문자열 + 숫자도 가능 -> 결과는 문자열
		String initial = "";
		for (int i = 0; i < name.length; i++)
			if (pay[i] == 300)
				initial += (name[i] + " ");
		System.out.println("급여가 300인 사람: " + initial);
	}
}

5. 1일차 후기

Java를 교육하는 기간이 약 8일로 진행되는데, 그게 과연 가능할까 싶었지만 1일차부터 진행하는 양을 보면 Java를 한바퀴 도는데는 지장이 없을 것 같았다.

비록 기존에 전공자였기 때문에 오늘 교육받은 내용은 알고 있었던 내용이지만, 항상 헷갈리는 클래스나 상속, 객체지향 설계, 멀티스레드 등을 며칠내로 다시 복습할 수 있다는 생각에 기대가 되기도 했다.

 

아쉬운 점은 이전에 Java 개발을 할 때 Intellij IDE만 사용하고 이클립스 IDE를 사용해 본적이 없어, 단축키나 인터페이스 등이 적응이 안되어 불편했던 점이다. 하지만 강사님께서 Intellij 나 다른 개발툴도 다 사용할 거라고 말씀하셨기 때문에

차차 적응해 나가며 해결할 수 있다고 생각했다.