Java

Java 설정 및 기초(Print, Scanner, If) - AWS 풀스택 과정 1일차

awspspgh 2024. 7. 16. 01:00

오늘은 Java 설정에 대해서 주로 다뤄보고 기초에 대해서 배워보도록 하겠습니다.

목차
1. 설정
2. print 
3. 변수 선언
4. 연산자
5. 자료형 변환
6. Scanner
7. if문
8. 예제 문제
9. 느낀점

1. 설정

그러면 자바를 인터넷에서 먼저 설치를 해야합니다. 인터넷에서 jdk를 검색한 후 jdk-11를 다운로드 해줍니다.

Python에서 한 것처럼 환경 변수에 JAVA_HOME을 새로 만들고 변수 값에 jdk-11 파일의 bin 파일의 경로를 넣으면 됩니다. Path도 똑같이 해줍니다.

 

그 다음에는 Tool인 Eclipse를 다운로드 해야합니다. Eclipse를 검색한 후 Eclipse packages에서 오른쪽에 있는 More downloads의 Older Versions를 들어가줍니다. 2021 - 09에 들어가 Java and Web을 다운로드 해주시면 됩니다.

다운로드 하시면 압축을 풀어주시면 됩니다. 다만 알집말고 반디집으로 압축 풀어주시는 것을 추천드립니다. 다 다운로드 하시면 드라이브에 _java_workspace 파일을 새로 만들어줍니다.

 

이제 Eclipse를 압축을 풀어주시고 _java_workspace 파일에서 이클립스를 실행해줍니다. 그러면 파이썬처럼 실행 화면이 뜨게됩니다. 

 

일단 나머지 창들을 다 지워줍니다. 그 다음부터는 전부 차례대로 해주시면 설정이 끝납니다.

 

Window -> Show View -> Other -> Package Explorer 

 

File -> New -> Other -> Java_project (이름만 지어주고 나머지 동의 창은 거절해도 됨)

 

Window -> Prererences -> encoding 검색 (한글 깨짐 방지용) -> Workspace -> 하단의 Default를 Other : UTF - 8로 변경

 

Window -> Prererences ->  complier 검색 -> level을 11로 변경

 

Window -> Prererences -> Installed JREs 검색 -> Add -> Standard VM -> JRE home에 jdk -11 파일 경로 삽입

 

java_project 파일 클릭 -> Properties -> Java Build Path -> Libraries -> Edit  -> Workspace default JRE

 

파일 생성과 클래스 생성 방법은 다음과 같습니다.

 파일 생성 : src파일 -> New -> Other -> Package

 클래스 생성 : src파일 -> New -> Other -> Class (Public 박스는 항상 체크하기)

 

2. print

package day01;

public class HelloWorld {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//주석 : 프로그램이 인식하지 않는 라인 ctrl + /
		//주석 : 한줄주석 
		/* 여러줄 주석
		 * java 반드시 ; 마무리
		 * println() : 줄바꿈이 있는 출력
		 * print() : 줄바꿈이 없는 출력
		 * printf() : 형식을 가지는 출력 (c언어 주로 사용)
		 * "문자열"  '한글자만 가능'  'a' '가' "hello"
		 * */
		System.out.println("Hello World~!!");
		//선언 + 초기값
		int num = 100;
		//선언만 
		int num1;
		//기본 자료형(8개) 자료형은 선언만하면 기본값 X 기본값을 자동으로 주지 않음.
		 num1 = 200;
		System.out.println(num);
		System.out.println(num1);
		// 같은 자료형을 가지는 변수는 한번에 선언 가능.
		int num2=1, num3=2, num4=3;
		
	}
	
}

Python과는 다르게 Java에서는 print를 System.out.을 앞에 붙여야 합니다. 앞에 붙은 문자가 길기에 'syso' + ctrl + spacebar를 하면 System.out.을 바로 만들어줍니다. 단축키라고 생각하시면 됩니다.

 

3. 변수 선언

변수

 

/* 변수선언
		 * 자료형(타입) 변수명;
		 * 
		 * 변수선언 + 초기화
		 * 자료형(타입) 변수명 = 초기값;
		 * 기본 자료형은 초기값을 주지 않음. 반드시 초기값을 지정.
		 * 변수 = 지역변수 { 사용가능한 범위 }
		 * 메서드 { }
		 * 명령어 { }
		 * */
		int num = 100;
		System.out.println(num);
		
//		int num = 200; // 변수는 중복선언 안됨. 
		int num1 = 1, num2 = 2, num3 = 3; // 같은 자료형 한줄 선언 가능.
		System.out.println(num1);
		//syso ctrl + space Bar
		System.out.println();
		num1 = 200;  // = 대입연산자  오른쪽의 값을 왼쪽 변수에 덮어쓰기
		System.out.println(num1);
		
		// 기본자료형은 지역변수 범위(scope) { }
		{
			int num4 = 1000;
			System.out.println(num4);
			System.out.println(num1);
		}
//		System.out.println(num4); // 사용 가능 범위를 벗어남. error
		
        /* 한글자만 저장 가능한 char
		 * "문자열"  '한글자'
		 * String   char
		 * */
		char ch = 'a';
		System.out.println(ch);
		
		double dou = 3.1;
		System.out.println(dou);
		
		byte b = 2;
		System.out.println(b);
		
		//float / long 자료형은 접미사를 붙여야 사용가능.
		float f = 1.2f;
		System.out.println(f);
		long l = 11L;
		System.out.println(l);
		
		boolean boo = true;  //true / false만 가능.
		System.out.println(boo);
		
		// 0으로 시작하는 정수값 = 8진수로 인식  0~7 8 => 10
		// 2진수(01), 8진수(0~7), 10진수(0~9), 16진수(0~15 0~9ABCDEF)
		int a = 010;  
		System.out.println(a);
		int a1 = 0x0B;
		System.out.println(a1);

변수는 중복선언이 되지 않고 char이 어떤 역할을 하는지 float와 long을 사용할 때 f와 L을 같이 붙여준다는 점을 신경써주면 됩니다.

 

기본 데이터 타입

 

변수 작성 규칙

 

4. 연산자

연산자

 

// + - * / %(나머지)
		// + 문자열 => 연결연산자
		num1 = 100;
		num2 = 200;
		int sum = num1 + num2;
		System.out.println(num1 + num2);
		System.out.println("두 수의 합 : " + sum);
		System.out.println("두 수의 합 : " + (num1 + num2));

		// 정수 / 정수 = 정수
		// 실수 / 정수 = 실수    정수 / 실수 = 실수    실수 / 실수 = 실수

// 대입 연산자  : +=  -= 
		// 변수 = 변수 + 변수2  => 변수 += 변수2    누적 합계
		
		a = 1;
		a += 5;    // a = a + 5
		System.out.println(a);
		
		// 증감 연산자 : ++  --
		// 변수 = 변수 + 1     변수 = 변수 - 1
		a++;  // 현재 a 값에 1증가
		++a;  // 
		System.out.println(a);
		System.out.println("-----------");
		System.out.println(a++);
		System.out.println(++a);

소수점을 표현하기 싶다면 double를 주로 이용해주고 (정수 나누기 정수), (실수 나누기 정수), (정수 나누기 실수), (실수 나누기 실수)들의 차이점을 잘 알고 계셔야합니다.

 

// 연산자 정리
		/* 대입연산자 : =  +=  -=  ...
		 * = 을 기준으로 오른쪽의 값을 왼쪽의 변수에 저장
		 * 왼쪽의 값은 반드시 변수여야 함.
		 * a = b;  (O)
		 * 1 = a;  (X)
		 * a+=1;  a = a + 1;    a++;
		 * */
		int a = 10;
		int b = 5; 
		a = b;
		System.out.println(a);
		a+=10;
		System.out.println(a);
		
		a++;
		System.out.println(a);
		a--;
		System.out.println(a);
		
		/* 산술연산자 : + - * / %(나머지)
		 * 나누기(/)
		 * 정수 / 정수 = 정수   (10/3 = 3.0) 소수점을 버림
		 * 정수 / 실수 = 실수
		 * 실수 / 정수 = 실수
		 * 실수 / 실수 = 실수
		 * 값 / 0 => 예외 발생(Exception)
		 * 자료형이 double / 0 => infinity 발생
		 * */
		// System.out.println(a/0);
		double c = 3.0;
		System.out.println(c/0);
		
		/* 비교 연산자 : 비교 연산자의 결과는 반드시 true / false
		 * >=(이상), <=(이하), >(초과), <(미만), ==(같다), !=(같지않다)
		 * 3 > 5 => false
		 * 논리연산자 : && || !
		 * a==0 && b==0   (and) 두 조건 모두 true일 경우 true 리턴
		 * a==0 || b==0   (or) 두 조건 중 하나만 true여도 true 리턴
		 * !(a==0)        (not)  a상태 반대
		 * */
		System.out.println(3 < 5);
		System.out.println(3<5 && 5> 9);
		System.out.println(!(3 < 5));
		
		/* 조건선택연산자 : 3항연산자
		 * (조건식) ? true : false;
		 * */
		System.out.println((3<5) ? "참입니다." : "거짓입니다.");
		
		/* 국어, 영어, 수학 세 점수의 합계와 평균을 출력
		 * 조건 선택 연산자를 이용하여 평균이 70점 이상이면 합격, 아니면 불합격
		 * */
		int kor = 78;
		int math = 89;
		int eng = 78;
		int sum = kor + math + eng;
		double avg = (double)sum / 3;
		System.out.println("합계:"+sum);
		System.out.println("평균:"+avg);
		System.out.println(avg >= 70 ? "합격" :"불합격");
		
		int num1 = 26;
		/* num1이 짝수인지 홀수인지 출력 (조건선택연산자 활용)
		 * % 
		 * String 클래스를 활용하여 문자를 출력
		 * */
		String str = num1 % 2 == 0 ? "짝수" : "홀수";
		System.out.println(str);

Python과 다르게 조건 선택 연산자(3항 연산자)를 이용할 수 있다는 점을 기억해두면 나중에 함축해서 표현하실 수 있습니다.

 

5. 자료형 변환

// 자료형 변환 : casting
		/* 자료형 (변수의 타입)
		 * a = b : a의 자료형과 b의 자료형이 맞지 않다면 오류
		 * 자료형변환 양쪽의 자료형을 맞춰주는 역할
		 * 
		 * 자동 자료형 변환 : 생략해도 문제가 되지 않는 상황
		 * int a = byte 자료형의 값
		 * 명시적 자료형 변환
		 * */
		byte a = 10;
		int num = a;  //자동 자료형 변환 케이스
		
		double num1 = 10.1;
		num = (int) num1;  // 소수점은 날아감  명시적 자료형 변환
		
		System.out.println(num);
		
		double d = 1 / (double)2;
		System.out.println(d);

대표적으로 활용할 수 있는 케이스는 '정수 / (double)정수 = 실수'입니다.

 

6. Scanner

// 콘솔입력 : 콘솔에서 값을 입력받는 것을 의미
		// Scanner 클래스 : 콘솔에서 값을 입력받을 수 있게 도와주는 클래스
		
		Scanner scan = new Scanner(System.in);
		
		System.out.println("숫자를 입력해주세요 >> ");
		int num = scan.nextInt(); //숫자 입력
		System.out.println("내가 입력한 수 >> "+num);
		
		System.out.println("문자를 입력해주세요 >> ");
		String str = scan.next();  //한단어만 입력 (공백 허용안함.)
		System.out.println("내가 입력한 문자 >> "+str);
		
		scan.nextLine(); //위에서 입력한 enter 처리용
		
		System.out.println("여러단어를 입력해주세요 >> ");
		String str2 = scan.nextLine();  //공백 포함
		System.out.println("내가 입력한 문자 >> "+str2);
		
		System.out.println("소수점 포함 실수 입력 >> ");
		double num2 = scan.nextDouble();
		System.out.println("내가 입력한 수 >> "+num2);
		
		// String 문자는 한글자마다 index를 가지고 있음. (0부터 시작) 
		// next() : String return  
		// charAt(0) : 그 중 1글자만 추출
		System.out.println("한글자 입력 >> ");
		char c = scan.next().charAt(0);
		System.out.println("내가 입력한 글자 >> "+c);
		
		scan.close();

Scanner 변수 = new Scanner (System.in);를 활용하기 위해서는 Scanner 자체에는 오류가 생깁니다. 그렇기에 Scanner 부분에 마우스 가져가면 quick fixes 중에서 import 'Scanner'를 적용시키면 됩니다.

 

7. if문

		/* 조건문 : if , switch
		 * if(조건식){ 실행문; }
		 * 실행문이 한줄일 경우 { 생략가능 }
		 * 실행문이 2중이상으로 늘어날 경우 error (2줄이상일경우 {} 필수)
		 * 조건식은 반드시 true / false 형태로 나올수 있게 작성
		 * */
		
		int num = -5;
		
		if(num >=10) {
			System.out.println("num는 10보다 큽니다.");
		} else {
			System.out.println("num는 10보다 작습니다.");
		}
		
		// num 가 0보다 크면 "양수"  0이면 "0입니다." 0보다 작으면 "음수" 라고 출력
		
		if(num > 0) {
			System.out.println("양수");
		} else if(num == 0) {
			System.out.println("0입니다.");
		} else {
			System.out.println("음수");
		}
		
		// num 가 0보다 크면 "양수" 10보다 크면 "10보다큽니다."
		// 0이면 "0입니다." 0보다 작으면 "음수" 라고 출력
		num = -15;
		if(num > 0) {
			System.out.println("양수");
			if(num >10) {
				System.out.println("10 보다 큽니다.");
			}
		} else if(num == 0) {
			System.out.println("0입니다.");
		} else {
			System.out.println("음수");
		}
		
		// num가 짝수인지 홀수인지 if문으로 출력
		num = 4;
		if(num % 2 == 0) {
			System.out.println("짝수");
		} else {
			System.out.println("홀수");
		}

if문의 경우에는 Python과는 크게 다를 바가 없기에 Python에서 배우던 내용을 이용하시면 됩니다. 단지 { }를 if문 시작과 끝에 맺음을 잘 해주셔야합니다.

 

8. 예제 문제

◉ 문제 1번

/* 국어, 영어, 수학의 점수를 입력받아 합계, 평균, 결과를 출력
		 * 평균은 소수점 살려서 출력
		 * 결과는
		 * 평균이 90 이상이면 A
		 * 평균이 80 이상이면 B
		 * 평균이 70 이상이면 C
		 * 나머지는 D
		 * 
		 * 국어, 영어, 수학의 입력값이 0~100 사이의 값으로 입력
		 * 점수가 0~100값이 아니라면 잘못된 값
		 * */

 

정답:

◉ 문제 1번

 

9. 느낀점

Python보다 Java의 설정 준비 과정이 복잡해서 어지러웠다. Python의 기초를 공부했는데도 Java 설정 준비 과정이 헷갈리기도 했다. 설정 준비 과정을 집에서 연습을 해보면서 왜 이렇게 하는 이유에 대해서 이해를 하게 되었다. 다른 언어들의 설정 준비 과정은 어느 정도 복잡할지 궁금하기도 하였다.