자바 프로그램을 개발할 때는 인텔리제이(Intellij) 또는 이클립스(Eclipse)라는 툴을 많이 사용한다. 과거에는 이클립스를 많이 사용했지만 최근에는 빠른 속도와 사용의 편의성 때문에 인텔리제이를 주로 사용한다.자바로 개발하는 대부분의 메이저 회사들도 최근에는
주의!자바 언어는 대소문자를 구분한다. 대소문자가 다르면 오류가 발생할 수 있다.public class HelloJavaHelloJava를 클래스라 한다.파일명과 클래스 이름이 같아야 한다.{} 블록을 사용해서 클래스의 시작과 끝을 나타낸다.public static v
소스 코드가 복잡하다면 소스 코드에 대한 이해를 돕기 위해 설명을 적어두고 싶을 수 있다. 또는 특정 코드를 지우지 않고, 잠시 실행을 막아두고 싶을 때도 있다. 이럴 때 주석을 사용하면 된다. 자바는 주석이 있는 곳을 무시한다. ✏️ 주석의 종류 한 줄 주석
자바는 표준 스펙과 구현으로 나눌 수 있다.자바 표준 스펙자바는 이렇게 만들어야 한다는 설계도이며, 문서이다.이 표준 스펙을 기반으로 여러 회사에서 실제 작동하는 자바를 만든다.자바 표준 스펙은 자바 커뮤니티 프로세스(JCP)를 통해 관리된다.다양한 자바 구현여러 회사
패키지는 자바 파일을 구분하기 위한 폴더이다.variable이라는 패키지를 만들었다면, 해당 패키지에 들어가는 자바 파일 첫줄에 package variable;과 같이 소속된 패키지를 선언해주어야 한다.자바 파일이 위치하는 패키지와 package variable 선언
변수는 이름 그대로 변할 수 있는 수이다. 쉽게 이야기해서 변수 a에 저장된 값을 언제든지 바꿀 수 있다는 뜻이다.이번에는 중간에 변수의 값을 변경해보자.변수의 값이 변경된 이후에는 10 대신에 50이 출력된 것을 확인할 수 있다.프로그램은 한 줄씩 순서대로 실행된다.
변수를 선언하면 컴퓨터의 메모리 공간을 확보해서 그곳에 데이터를 저장할 수 있다. 그리고 변수의 이름을 통해서 해당 메모리 공간에 접근할 수 있다. 쉽게 이야기해서 데이터를 보관할 수 있는 공간을 만들고, 그곳에 이름을 부여한다.변수는 다음과 같이 하나씩 선언할 수도
변수는 데이터를 다루는 종류에 따라 다양한 형식 존재한다. 다음 코드를 실행해보자. ✅ Var7 ✏️ 실행 결과 변수는 데이터를 다루는 종류에 따라 다양한 형식이 존재한다. 이러한 형식을 영어로는 타입(type)이라 하고, 우리말로는 형식 또는 형이라 한다. 예를
✅ 숫자 타입 ✏️ Var8 메모리를 적게 사용하면 작은 숫자를 표현할 수 있고, 메모리를 많이 사용하면 큰 숫자를 표현할 수 있다. 변수를 선언하면 표현 범위에 따라 메모리 공간을 차지한다. 그래서 필요에 맞도록 다양한 타입을 제공한다. ✏️ 변수와 메모리 공간
자바에서 변수의 이름을 짓는데는 규칙과 관례가 있다.규칙은 필수이다. 규칙을 지키지 않으면 컴파일 오류가 발생한다.관례는 필수는 아니지만 전세계 개발자가 해당 관례를 따르기 때문에 사실상 규칙이라고 생각해도 된다.변수 이름은 숫자로 시작할 수 없다. (예 : 1num,
✅ 문제 1 다음 코드에서 반복해서 나오는 숫자 4, 3을 다른 숫자로 한번에 변경할 수 있도록 다음을 변수 num1, num2를 사용하도록 변경해보세요. ✏️ VarEx1 ✏️ 문제1 - 정답 ✓ VarEx1 ✓ 실행 결과 문제 2 다음과 같은 작업을 수행
\+, -, \*, /, %와 같이 계산을 수행하는 기호를 연산자라 한다. 자바에서는 다음과 같은 다양한 연산자가 있다. 참고로 더 많은 연산자가 있지만, 여기서는 실무에서 주로 다루는 연산자를 위주로 설명하겠다.산술 연산자 : +, -, \*, /, %(나머지 연산자
자바는 특별하게 문자열에도 +연산자를 사용할 수 있다. 문자열에 +연산자를 사용하면 두 문자를 연결할 수 있다.String result1 = “hello ” + “world”“hello ” 문자열과 “world” 문자열을 더해서 “hello world” 문자열을 만든다
수학에서 1 + 2 \* 3의 연산 결과는 무엇일까? 덧셈보다 곱셈이 우선순위가 더 높다. 따라서 다음과 같이 계산한다.출력 결과를 보면 sum1 = 7이 나왔다. 연산자 우선순위에 의해 곱셈이 먼저 계산된 것이다.연산자 우선순위를 변경하려면 수학과 마찬가지로 괄호()
증가 및 감소 연산자를 줄여서 증감 연산자라 한다.증감 연산자는 ++와 --로 표현되며, 이들은 변수의 값을 1만큼 증가 시키거나 감소시킨다.프로그래밍에서는 값을 1씩 증가하거나 1씩 감소할 때가 아주 많기 때문에 이런 편의 기능을 제공한다. 변수 a의 값을 하나 증가
비교 연산자는 두 값을 비교하는 데 사용한다. 비교 연산자는 주로 조건문과 함께 사용한다.== : 동등성 (equal to)!= : 불일치 (not equal to)\> : 크다 (greater than)< : 작다 (less than)\>= : 크거나 같다 (g
논리 연산자는 boolean형인 true, false를 비교하는데 사용한다.&& (그리고) : 두 피연산자가 모두 참이면 참을 반환, 둘중 하나라도 거짓이면 거짓을 반환|| (또는) : 두 피연산자 중 하나라도 참이면 참을 반환, 둘다 거짓이면 거짓을 반환! (부정)
대입 연산자(=)는 값을 변수에 할당하는 연산자다. 이 연산자를 사용하면 변수에 값을 할당할 수 있다.예를 들어, int a = 1는 a라는 변수에 1이라는 값을 할당한다.산술 연산자와 대입 연산자를 한번에 축약해서 사용할 수 있는데, 이것을 축약(복합) 대입 연산자라
num1, num2, num3라는 이름의 세 개의 int 변수를 선언하고, 각각 10, 20, 30으로 초기화하세요.세 변수의 합을 계산하고, 그 결과를 sum이라는 이름의 int 변수에 저장하세요.세 변수의 평균을 계산하고, 그 결과를 average라는 이름의 int
지금까지 살펴본 프로그램은 단순히 위에서 아래로 순서대로 한 줄씩 실행되었다.특정 조건에 따라서 다른 코드를 실행하려면 어떻게 해야할까? 예를 들어서 만약 18살 이상이면 “성인입니다”를 출력하고, 만약 18살 미만이라면 “미성년자입니다”를 출력해야 한다.아마도 다음과
7세 이하일 경우 : “미취학”8세 이상 13세 이하일 경우 : “초등학생”14세 이상 16세 이하일 경우 : “중학생”17세 이상 19세 이하일 경우 : “고등학생”20세 이상일 경우 : “성인”이 코드는 다음과 같은 단점이 있다.불필요한 조건 검사 : 이미 조건을
if문에 else if를 함께 사용하는 것은 서로 연관된 조건일 때 사용한다. 그런데 서로 관련이 없는 독립 조건이면 else if를 사용하지 않고 if문을 각각 따로 사용해야 한다.예시 1은 작업1, 작업2 둘 중 하나만 수행된다. 그런데 예시2는 조건만 맞다면 둘
당신은 회원 등급에 따라 다른 쿠폰을 발급하는 프로그램을 작성해야 한다.이 프로그램은 int grade라는 변수를 사용하며, 회원 등급(grade)에 따라 다음의 쿠폰을 발급해야 한다.1등급 : 쿠폰 10002등급 : 쿠폰 20003등급 : 쿠폰 3000위의 등급이 아
if문을 사용할 때 다음과 같이 단순히 참과 거짓에 따라 특정 값을 구하는 경우가 있다.이 예제는 참과 거짓에 따라 status 변수의 값이 달라진다.이렇게 단순히 참과 거짓에 따라서 특정 값을 구하는 경우 삼항 연산자 또는 조건 연산자라고 불리는 ? : 연산자를 사용
학생의 점수를 기반으로 학점을 출력하는 자바 프로그램을 작성하자. 다음과 같은 기준을 따른다.90점 이상 : “A”80점 이상 90점 미만 : “B”70점 이상 80점 미만 : “C”60점 이상 70점 미만 : “D”60점 미만 : “F”점수는 변수(int score)
요청한 평점 이상의 영화를 찾아서 추천하는 프로그램을 작성하자.어바웃 타임 - 평점9토이 스토리 - 평점8고질라 - 평점7평점 변수는 double rating을 사용하세요. if문을 활용해서 문제를 푸세요.String grade라는 문자열을 만들고, 학점에 따라 성취도
반복문은 이름 그대로 특정 코드를 반복해서 실행할 때 사용한다.자바는 다음 3가지 종류의 반복문을 제공한다.while, do-while, for먼저 간단한 예제를 통해 반복문이 왜 필요한지 이유를 알아보자.1을 한 번씩 더해서 총 3번 더하는 간단한 코드를 만들어보자.
while문은 조건에 따라 코드를 반복해서 실행할 때 사용한다.조건식을 확인한다. 참이면 코드 블럭을 실행하고, 거짓이면 while문을 벗어난다.조건식이 참이면 코드 블럭을 실행한다. 이후에 코드 블럭이 끝나면 다시 조건식 검사로 돌아가서 조건식을 검사한다. (무한 반
이 문제는 1부터 하나씩 증가하는 수이기 때문에 1 + 2 + 3을 더해야 한다.우선 while문을 사용하지 않고 단순하게 풀어보자.이 코드의 정답은 맞다. 하지만 개선할 점이 많이 있는데, 무엇보다 변경에 유연하지 않다.다음과 같이 요구사항이 변경되었다.문제 : 10
do-while문은 while문과 비슷하지만, 조건에 상관없이 무조건 한 번은 코드를 실행한다.예를 들어서 조건에 만족하지 않아도 한 번은 현재 값을 출력하고 싶다고 하자.먼저 while문을 사용한 예제를 보자.i=10이기 때문에 while (i < 3) 조건식은
break와 continue는 반복문에서 사용할 수 있는 키워드다.break는 반복문을 즉시 종료하고 나간다. continue는 반복문의 나머지 부분을 건너뛰고 다음 반복으로 진행하는데 사용된다.참고로 while, do-while, for와 같은 모든 반복문에서 사용할
for문도 while문과 같은 반복문이고, 코드를 반복 실행하는 역할을 한다. for문은 주로 반복 횟수가 정해져 있을 때 사용한다.for문은 다음 순서대로 실행된다.초기식이 실행된다. 주로 반복 횟수와 관련된 변수를 선언하고 초기화 할 때 사용한다. 초기식은 딱 1번
for문에서 초기식, 조건식, 증감식은 선택이다. 다음과 같이 모두 생략해도 된다. 단 생략해도 각 영역을 구분하는 세미콜론(;)은 유지해야 한다.이렇게 하면 조건이 없기 때문에 무한 반복하는 코드가 된다. 따라서 다음과 같은 코드가 된다.1부터 시작하여 숫자를 계속
반복문은 내부에 또 반복문을 만들 수 있다. for, while 모두 가능하다.외부 for문은 2번, 내부 for문은 3번 실행된다. 그런데 외부 for문 1번 당 내부 for문이 3번 실행되기 때문에 외부(2) \* 내부(3) 해서 총 6번의 내부 for문 코드가 수
처음 10개의 자연수를 출력하는 프로그램을 작성해 보세요. 이때, count라는 변수를 사용해야 합니다.while문, for문 2가지 버전의 정답을 만들어야 합니다.반복문을 사용하여 처음 10개의 짝수를 출력하는 프로그램을 작성해 보세요. 이때 num이라는 변수를 사용
중첩 for문을 사용해서 구구단을 완성해라.int rows를 선언해라.이 수만큼 다음과 같은 피라미드를 출력하면 된다.참고println()은 출력 후 다음 라인으로 넘어건다. 라인을 넘기지 않고 출력하려면 print()를 사용하면 된다.예) System.out.prin
장점 :초기화, 조건 체크, 반복 후의 작업을 한 줄에서 처리할 수 있어 편리하다.정해진 횟수만큼의 반복을 수행하는 경우에 사용하기 적합하다.루프 변수의 범위가 for 루프 블록에 제한 되므로, 다른 곳에서 이 변수를 실수로 변경할 가능성이 적다.단점 :루프의 조건이
변수는 선언한 위치에 따라 지역 변수, 멤버 변수(클래스 변수, 인스턴스 변수)와 같이 분류된다.지금까지 학습한 변수들은 모두 영어로 로컬 변수(Local Variable), 한글로 지역 변수라 한다.지역 변수는 이름 그대로 특정 지역에서만 사용할 수있는 변수라는 뜻이
변수를 선언한 시점부터 변수를 계속 사용할 수 있게 해도 되지 않을까? 왜 복잡하게 접근 범위(스코프)라는 개념을 만들었을까?조건이 맞으면 변수 m의 값을 2배 증가해서 출력하는 코드이다. 여기서 2배 증가한 값을 저장해두기 위해 임시 변수 temp를 사용했다. 그런데
작은 범위에서 큰 범위로는 당연히 값을 넣을 수 있다.예) int → long → double큰 범위에서 작은 범위는 다음과 같은 문제가 발생할 수 있다.소수점 버림오버플로우작은 범위에서 큰 범위로 대입은 허용한다.int <long < doubleint보다는
큰 범위에서 작은 범위 대입은 명시적 형변환이 필요하다.double은 실수를 표현할 수 있다. 따라서 1.5가 가능하다. 그런데 int는 실수를 표현할 수 없다. 이 경우 double → int로 대입하면 어떻게 될까?다음 코드의 앞부분에 있는 주석을 풀면(제거하면)
자바에서 계산은 다음 2가지를 기억하자.같은 타입끼리의 계산은 같은 타입의 결과를 낸다.int + int는 int를, double + double은 double의 결과가 나온다.서로 다른 타입의 계산은 큰 범위로 자동 형변환이 일어난다.int + long은 long +
int → long → double작은 범위에서 큰 범위로는 대입할 수 있다.이것을 묵시적 형변환 또는 자동 형변환이라 한다.큰 범위에서 작은 범위의 대입은 다음과 같은 문제가 발생할 수 있다. 이때는 명시적 형변환을 사용해야 한다.소수점 버림오버플로우연산과 형변환같은
System.out을 통해서 출력을 했듯이, System.in을 통해서 사용자의 입력을 받을 수 있다. 그런데 자바가 제공하는 System.in을 통해서 사용자 입력을 받으려면 여러 과정을 거쳐야해서 복잡하고 여렵다.자바는 이런 문제를 해결하기 위해 Scanner라는
🔔 두 수를 입력받고 그 합을 출력하라.🔔 사용자로부터 두 개의 정수를 입력 받고, 더 큰 수를 출력하는 프로그램을 작성해보자. 두 숫자가 같은 경우 두 숫자는 같다고 출력하면 된다.💡 단축키Code Completion → ^ + space
우리가 지금까지 개발한 프로그램들은 단 한 번의 결과 출력 후 종료되는 일회성 프로그램이었다.실제 프로그램들은 이렇게 한 번의 결과만 출력하고 종료되지 않는다. 한 번 실행하면 사용자가 프로그램을 종료할 때 까지 반복해서 실행된다. 이제부터는 사용자의 입력을 지속해서
🔔 사용자로부터 입력받은 이름과 니이를 출력하세요.출력 형태 : “당신의 이름은 이름이고, 나이는 나이살입니다.”🔔 사용자로부터 하나의 정수를 입력받고, 이 정수가 홀수인지 짝수인지 판별하는 프로그램을 작성하세요.🔔 사용자로부터 음식의 이름(foodName), 가
🔔 변수 a의 값과 변수 b의 값을 서로 바꾸어라.변수 a=10이 들어있고, b=20이 들어있다.다음 코드에서 시작과 종료 부분 사이에 변수의 값을 교환하는 코드를 작성하면 된다.💡 힌트 : temp 변수를 활용해야 한다.a와 b를 한번에 서로 교환할 수는 없다.a
🔔 사용자로부터 이름과 나이를 반복해서 입력받고, 입력받은 이름과 나이를 출력하는 프로그램을 작성하세요.사용자가 “종료”를 입력하면 프로그램이 종료되어야 합니다.nextInt() : 이 메서드는 숫자만 가져간다. 근데 이 코드에서 사용자가 나이를 입력하면 30 + \
🔔 사용자로부터 여러 개의 숫자를 입력 받고, 그 숫자들의 합계와 평균을 계산하는 프로그램을 작성하세요.사용자는 숫자를 입력하고, 마지막에는 -1을 입력하여 숫자 입력을 종료한다고 가정합니다.모든 숫자 입력이 끝난 후에는, 숫자들의 합계(sum)와 평균(average
학생의 점수를 출력하는 간단한 프로그램을 작성해보자.학생을 몇 명 더 추가해야 한다면 변수를 선언하는 부분과 점수를 출력하는 부분의 코드도 추가해야한다. 학생을 몇 명 더 추가하는 것은 개발자가 코딩으로 해결할 수 있겠지만, 학생을 수백 명 이상 추가해야 한다면 코드가
배열은 같은 타입의 변수를 사용하기 편하게 하나로 묶어둔 것이다. 이전 예제를 배열을 사용하도록 변경해보자. 참고로 단계적으로 구조를 변경해 나갈 것이다.지금부터 아주 간단해보이는 다음 두 줄을 아주 자세히 설명하겠다.배열 변수 선언배열을 사용하려면 int\[] stu
배열은 변수와 사용법이 비슷한데, 차이점이 있다면 다음과 같이 \[]사이에 숫자 번호를 넣어주면 된다. 배열의 위치를 나타내는 숫자를 인덱스(index)라 한다.new int\[5]와 같이 5개의 요소를 가지는 int형 배열을 만들었다면 인덱스는 0, 1, 2, 3,
이제 배열을 사용해서 코드를 단계별로 리팩토링 해보자.먼저 변수 값을 사용한 부분을 변경해보자.변수명이 students로 같기 때문에 숫자가 반복되는 부분만 해결하면 반복문을 도입할 수 있을 것 같다. for문을 사용해서 문제를 해결해보자.참고 : 리팩토링리팩토링(Re
지금까지 학습한 배열은 단순히 순서대로 나열되어 있었다. 이것을 1차원 배열이라 한다.이번에 학습할 2차원 배열은 이름 그대로 하나의 차원이 추가된다. 2차원 배열은 행과 열로 구성된다.2차원 배열은 int\[]\[] arr = new int\[2]\[3]와 같이 선언
코드 구조를 보면 비슷한 부분이 출력된다.코드를 보면 행을 출력하는 부분이 거의 같다. 차이가 있는 부분은 행에서 arr\[0]으로 시작할 지, arr\[1]로 시작할 지의 차이다.다음과 같이 행(row)에 들어가는 숫자만 하나씩 증가하면서 반복하면 될 것 같다.for
이 코드를 보니 2가지 개선할 부분이 있다.초기화 : 기존 배열처럼 2차원 배열도 편리하게 초기화 할 수 있다.for문에서 배열의 길이 활용 : 배열의 길이가 달라지면 for문에서 row < 2, column < 3 같은 부분을 같이 변경해야 한다. 이 부분
다음 문제를 배열을 사용해서 개선하자.🔔 사용자에게 5개의 정수를 입력받아서 배열에 저장하고, 입력 순서대로 출력하자.출력 시 출력 포멧은 1, 2, 3, 4, 5와 같이 ,(쉼표)를 사용해서 구분마지막에는 쉼표를 넣지 않아야 한다.🔔 사용자에게 5개의 정수를 입력
🔔 사용자로부터 n개의 정수를 입력받아 배열에 저장한 후, 배열 내에서 가장 작은 수와 가장 큰 수를 출력하는 프로그램을 작성하자.🔔 사용자로부터 학생 4명의 국어, 수학, 영어 점수를 입력받아 각 학생의 총점을 계산하는 프로그램을 작성하자.2차원 배열 사용🔔 이
🔔 자바를 이용하여 상품 관리 프로그램을 만들어 보자.기능상품 등록 : 상품 이름과 가격을 입력받아 저장한다.상품 목록 : 지금까지 등록한 상품의 목록을 출력한다.동작첫 화면에서 사용자에게 세 가지 선택을 제시한다 : “1. 상품 등록”, “2. 상품 목록”, “3.
두 숫자를 입력 받아서 더하고 출력하는 단순한 기능을 개발해보자.먼저 1 + 2를 수행하고, 그 다음으로 10 + 20을 수행할 것이다.같은 연산을 두 번 수행한다.코드를 잘 보면 계산 1 부분과 계산 2 부분이 거의 같다.계산 1, 계산 2 둘 다 변수를 두 개 선언
자바에서는 함수를 메서드(Method)라 한다.메서드를 사용하면 앞서 고민한 문제를 한번에 해결할 수 있다.우선 메서드를 사용해서 코드를 작성해보자.중복이 제거되고, 코드가 상당히 깔끔해진 것을 느낄 수 있다.이 부분이 바로 메서드이다. 이것을 함수를 정의하는 것과 같
메서드는 다음과 같이 정의한다.제어자(Modifier) : public, static과 같은 부분이다.반환 타입(Return Type) : 메서드가 실행 된 후 반환하는 데이터의 타입을 지정한다. 메서드가 값을 반환하지 않는 경우, 없다는 뜻의 void를 사용해야 한다
반환 타입이 있는 메서드는 반드시 return을 사용해서 값을 반환해야 한다.이 부분은 특히 조건문과 함께 사용할 때 주의해야 한다.이 코드에서 if 조건이 만족할 때는 true가 반환되지만, 조건을 만족하지 않으면 어떻게 될까?조건을 만족하지 않은 경우에는 retur
지금부터 자바에서 아주 중요한 대원칙 하나를 이야기하겠다.📌 자바는 항상 변수의 값을 복사해서 대입한다.여기서 값을 복사해서 대입한다는 부분이 바로 이 부분이다.이 부분을 생각해보면 num1에 있는 값 5를 복사해서 num2에 넣는 것이다.복사한다고 표현한 이유는 n
같은 문제를 호출자의 변수 이름과 매개변수의 이름을 같게 해서 한번 더 풀어보자.이번에는 main()에 정의한 변수와 메서드의 매개변수(파라미터)의 이름이 둘 다 number로 같다.main()도 사실은 메서드이다. 각각의 메서드 안에서 사용하는 변수는 서로 완전히 분
메서드를 호출하는데 인자와 매개변수의 타입이 맞지 않다면 어떻게 해야할까?먼저 주석으로 처리해 둔 부분의 주석을 풀고 실행해보자.다음과 같은 이유로 컴파일 오류가 발생한다.이 경우 메서드 호출이 꼭 필요하다면 다음과 같이 명시적 형변환을 사용해야 한다.int <
다음과 같은 메서드를 만드려고 한다.두 수를 더하는 메서드세 수를 더하는 메서드이 경우 둘 다 더하는 메서드이기 때문에 가급적 같은 이름인 add를 사용하고 싶다.자바는 메서드의 이름 뿐만 아니라 매개변수 정보를 함께 사용해서 메서드를 구분한다.따라서 다음과 같이 이름
🔔 메서드를 잘 이해하고 있는지 확인하기 위해 다음 코드를 메서드를 사용하도록 리팩토링해보자.🔔 다음은 특정 숫자만큼 같은 메시지를 반복 출력하는 기능이다. 메서드를 사용해서 리팩토링해보자.🔔 다음은 입금, 출금을 나타내는 코드이다. 입금(deposit)과, 출금
🔔 다음 실행 예시를 참고해서, 사용자로부터 계속 입력을 받아 입금과 출금을 반복 수행하는 프로그램을 작성하자.간단한 메뉴를 표시하여 어떤 동작을 수행해야 할지 선택할 수 있게 한다.출금 시 잔액이 부족하다면 “x원을 출금하려 했으나 잔액이 부족합니다.”라고 출력해야
변수 이름은 일반적으로 명사를 사용한다. 한편 메서드가 무언가 동작하는데 사용하기 때문에 일반적으로 동사로 시작한다.이런 차이점 외에는 변수 이름과 메서드 이름에 대한 규칙은 둘 다 같다.변수명 예) : customerName, totalSum, employeeCoun