출력메소드
System.out.print( )
( ) 안의 변수, 문자, 숫자, 논리 값을 모니터에 출력해주는 메소드
System.out.println()
print문과 동일하게 출력은 해주지만 출력 후 자동으로 출력창에 줄바꿈(개행)을 해주는 메소드
- 소괄호안에 입력한 변수,숫자,문자값을 창에 출력해준다.
- 두가지의 차이는 개행(줄바꿈)의 여부에 있다.
System.out.println(1.23);
리터럴이란? literal
프로그래밍 언어에서 미리 정의해놓은 값의 형태를 말한다.
- 리터럴의 종류에 따라 사용할 수 있는 연산자가 다르다.
리터럴의 종류
- 숫자 : 정수, 실수
- 문자 : 하나의 문자만 의미 ex: 'C' (작은따옴표)
- 문자열 : 두개이상 문자들의 연속을 의미 ex: "안녕하세요" (큰따옴표)
- 논리 : true or false를 의미
<여러 가지 값의 형태를 출력>
/* 1. 숫자 형태의 값 */
/* 1-1. 정수 형태의 값 출력 */
System.out.println(123);
/* 2-2. 실수 형태의 값 출력 */
System.out.println(1.23);
/* 2. 문자 형태의 값 출력 */
System.out.println('a');
//System.out.println('ab');
//System.out.println('');
System.out.println('1');
- 문자 형태의 값은 홑따옴표(single-quotation)으로 감싸주어야 한다.
- 두 개 이상은 문자로 취급하지 않기 때문에 에러가 발생한다.
- 아무 문자도 기록되지 않은 경우도 에러가 발생한다.
- 숫자 값 이지만 홑따옴표로 감싸져 있는 경우 문자 '1'이라고 판단한다.
- ( ) 괄호속에 그냥 숫자만 쓴다면, 수로 인식된다.
/* 3. 문자열 형태의 값 출력 */
System.out.println("안녕하세요");
System.out.println("123");
System.out.println(" ");
System.out.println("a");
- 문자열은 문자 여러 개가 나열된 형태를 말하며 쌍따옴표(double-quotation)으로 감싸주어야 한다.
- 쌍따옴표로 감싸져있는 정수는 문자열로 보아야 한다.
- 아무 값도 없는 빈칸을 감싼 쌍따옴표도 문자열로 취급한다.
- 한 개의 문자로 쌍따옴표로 감싸면 문자열이다. (문자 'a'와 문자열 "a"는 다르다)
/* 4. 논리 형태의 값 출력 */
System.out.println(true);
System.out.println(false);
- true 혹은 false 값을 논리형이라고 한다.
연산
리터럴 종류 별로 사용 불가능한 산술 연산이 존재하기 때문에 에러에 주의해야 한다.
연산자 종류와 사용의 예시)
+/- | / | * |
% | 123 / 10 | "helloworld" + 123 |
'a' + 'b‘ | true + "a“ | false / "a"(ERROR) |
- % 모듈러=모드 : 나눈후의 나머지
- / : 남은 값의 몫
* 1. 숫자와 숫자의 연산 */
/* 1-1. 정수와 정수의 연산 */
System.out.println(123 + 456);
System.out.println(123 - 23);
System.out.println(123 * 10);
System.out.println(123 / 10);
System.out.println(123 % 10);
/* 1-2. 실수와 실수의 연산 */
System.out.println(1.23 + 1.23);
System.out.println(1.23 - 0.23);
System.out.println(1.23 * 10.0);
System.out.println(1.23 / 10.0);
System.out.println(1.23 % 1.0);
//약간의 오차가 생긴다
/* 1-3. 정수와 실수의 연산 */
// 정수와 실수 연산의 결과는 항상 실수가 나온다.
System.out.println(123 + 0.5);
System.out.println(123 - 0.5);
System.out.println(123 * 0.5);
System.out.println(123 / 0.5);
System.out.println(123 % 0.5);
2. 문자의 연산
/* 2-1. 문자와 문자의 연산 */
System.out.println('a' + 'b');
System.out.println('a' - 'b');
System.out.println('a' * 'b');
System.out.println('a' / 'b');
System.out.println('a' % 'b');
/* 2-2. 문자와 정수의 연산 */
문자 'a'는 숫자 97과 같다는 것을 알 수 있다.
컴퓨터는 문자를 인식하지 못하고 숫자로만 인식할 수 있기 때문에,
모든 문자에 대응되는 숫자들이 매칭이 되어 있다. (아스키코드표 참조)
System.out.println('a' + 1);
System.out.println('a' - 1);
System.out.println('a' * 2);
System.out.println('a' / 2);
System.out.println('a' % 2);
/* 2-3. 문자와 실수의 연산 */
실수도 숫자이기 때문에 정수의 연산처럼 모든 연산이 가능하다.
단, 결과는 실수 형태로 나오게 된다.
System.out.println('a' + 1.0);
System.out.println('a' - 1.0);
System.out.println('a' * 2.0);
System.out.println('a' / 2.0);
System.out.println('a' % 2.0);
결론 : 문자는 내부적으로 숫자로 취급된다.
지금까지의 연산은 숫자끼리의 연산으로 숫자(정수 또는 실수)
형태의 값은 수학의 사칙연산과 mod 연산이 전부 가능하다.
- 문자와 실수의 연산의 결과는 '실수값'이 나온다.
- 문자는 내부적으로 특정한 정수값을 가진 숫자 취급을 받는다.
- 그러므로 문자와 수의 연산은 결과적으로 수의 연산이 된다.
- 실수와 실수의 모듈(%)은 결과값이 깔끔하게 정수로 떨어지지 않는다. 이는 컴퓨터가 실수를 나누는 방식을 다른 연산자와 다른 방식을 취하기 때문이다.
- 숫자 1과 문자'1'은 다르다. 이는 컴퓨터가 문자를 아는게 아니라 각각에 대응되는 특정값, 즉 아스키 코드 ASCII 가 적용되기 때문이다. 즉 문자를 특정 숫자 값으로 인식한다. 아스키 코드는 그 수가 한정적이며 국제적으로 약속된 표준 표기법은 유니코드를 통해 좀 더 많은 값으로의 확장이 가능하다.
문자열 연산
문자열 표현이란?
- 리터럴 값인 문자들의 나열이 문자열
- Java에서는 “”로 묶여 있는 값을 문자열로 인식
문자열을 포함한 연산
- “기차“
- “기차“ + "칙칙폭폭“
- “기차“ + 123 + 45 + "출발“ = 기차12345출발
- 123 + 45 + "기차" + “출발"= 168기차출발
- 연산의 순서는 왼쪽에서 오른쪽으로 이동한다.
- 문자에 홑따옴표(' ')가 없다면 컴파일 오류가 뜬다.
- 두개 이상의 문자에 홀따옴표를 두르면 컴파일 오류가 뜬다.
- 홑따옴표 내 아무것도 작성되지않는다면 컴파일 오류가 뜬다.
- '1'과 1은 다르게 생각되어야 한다. '1'은 문자 1이지만 1은 숫자 1이다.
- 문자열은 쌍따옴표(" ")로 감싸져야 한다.
- 숫자여도 쌍따옴표 내에 작성되면 문자열로 인식된다.
- 쌍따옴표 내에 아무것도 작성되지 않는다해도 문자열로 인식된다.
- 만일 System.error.println("a") 등으로 출력문을 잘못입력한다면 출력문에 빨간 글자가 뜬다.
- 문자 'a' 와 문자열 "a" 는 다르게 인식된다.
3. 문자열의 연산
/* 3-1. 문자열과 문자열의 연산 */
System.out.println("hello" + "world");
//System.out.println("hello" - "world");
//System.out.println("hello" * "world");
//System.out.println("hello" / "world");
//System.out.println("hello" % "world");
- - 문자열과 문자열의 '+' 연산 결과: 문자열 합치기(이어 붙이기)가 된다.
- - 문자열은 '+' 연산 외에 다른 연산을 사용할 수 없다.
- + 외의 다른 사칙 연산은 사용하지 못하며 적용할 경우 오류가 난다.
문자열과 다른 형태의 연산
- 문자열이 붙으면 결과적으로 모두 문자 취급이 되어 이어 붙여진 결과값이 나온다.
< 3-2.문자열과 다른 형태의 값 연산 >
/* 문자열과의 연산은 '+' 연산만 가능하다. */
/* 연산 결과는 다른 형태의 값들도 문자열로 취급하여
문자열 합치기(이어 붙이기) 결과가 나오게 된다. */
/* 3-2-1. 문자열과 정수의 연산 */
System.out.println("helloworld" + 123);
/* 3-2-2. 문자열과 실수의 연산 */
System.out.println("helloworld" + 123.456);
/* 3-2-3. 문자열과 문자의 연산 */
System.out.println("helloworld" + 'a');
/* 3-2-4. 문자열과 논리값의 연산 */
System.out.println("helloworld" + true);
/* 주의 : 숫자로 된 문자열 형태의 값은 '+' 연산의 결과가
문자열 합치기 결과가 되는 것에 주의하자. */
System.out.println("123" + "456");
/* 두개의 문자열 합치기 */
System.out.println(9 + 9); //18
System.out.println("9" + 9); //99
System.out.println(9 + "9"); //99
System.out.println("9" + "9"); //99
/* 세개의 문자열 합치기 */
System.out.println(9 + 9 + "9"); //189
// '+'의 연산 방향은 왼쪽에서 오른쪽이다 (숫자부터 합쳐짐)
System.out.println(9 + "9" + 9); //999
// 왼쪽의 연산부터 수행하고 수행 결과를 오른쪽과 연산함
System.out.println("9" + 9 + 9); //999
/* 바로 위에서 문자열 합치기 한 999 결과를 918로
변경(숫자 연산을 먼저 실행)하고 싶다면?? */
/* 괄호 기호를 이용해 숫자 연산을 묶어주게 되면
괄호 안에 있는 연산을 우선 수행한다. */
System.out.println("9" + (9 + 9)); //918
/* 문자열 합치기 응용 */
/* 10과 20의 사칙연산 결과를 출력하세요 */
System.out.println("========== 10과 20의 사칙연산 결과 ==========");
System.out.println(10 + 20);
System.out.println(10 - 20);
System.out.println(10 * 20);
System.out.println(10 / 20);
System.out.println(10 % 20);
/* 결과는 맞게 출력 되지만 무슨 결과인지 구분하기 어려우므로
문자열 합치기 기능을 이용하여 변경해보자 */
/* 10과 20의 사칙연산 결과 보기 좋게 출력 */
System.out.println("10과 20의 합 : " + (10 + 20));
// 주의 : 괄호를 묶지 않으면 문자열 합치기가 일어나 결과가 1020이 된다.
System.out.println("10과 20의 차 : " + (10 - 20));
// 문자열은 마이너스 연산이 불가능하기에 앞에서 생성 된
문자열과 마이너스 연산이 불가하다. (반드시 괄호 사용)
System.out.println("10과 20의 곱 : " + (10 * 20));
// *,/,%는 +,-보다 우선순위가 높음
System.out.println("10과 20을 나누기 한 몫 : " + (10 / 20));
System.out.println("10과 20을 나누기 한 나머지 : " + (10 % 20));
논리값 연산
- 논리형태 : 맞다 틀리다를 나타내는 부분
- 논리값은 사칙 연산이 불가능하며 연산시 컴파일 오류가 뜬다.
- 논리 + 문자 = 오류
- 연산 중 문자열을 만나면 모두 문자열 화되기 때문에 4-6의 논리와 문자열의 연산은 truea라는 값을 도출한다.
< 4. 논리값 연산 >
/* 4-1. 논리값과 논리값 연산 */
/* 논리값끼리의 연산은 모든 연산자 사용이 불가능하다. */
//System.out.println(true + false);
//System.out.println(true - false);
//System.out.println(true * false);
//System.out.println(true / false);
//System.out.println(true % false);
/* 4-2. 논리값과 정수의 연산 */
/* 논리값과 정수의 연산은 모든 연산자 사용이 불가능하다. */
//System.out.println(true + 1);
//System.out.println(true - 1);
//System.out.println(true * 1);
//System.out.println(true / 1);
//System.out.println(true % 1);
/* 4-3. 논리값과 실수의 연산 */
/* 논리값과 실수의 연산은 모든 연산자 사용이 불가능하다. */
/* 4-4. 논리값과 문자의 연산 */
/* 논리값과 문자의 연산은 모든 연산자 사용이 불가능하다. */
/* 이유는, 문자는 내부적으로 숫자 취급을 하기 때문에
결국 논리값과 숫자의 연산과 동일한 의미가 되기 때문이다. */
/* 4-5. 논리값과 문자열의 연산 */
/* 논리값과 문자열의 연산은 '+' 연산자만 사용 가능하다. */
/* 이유는, 위에서 테스트 해 본 문자열 합치기가 되는 원리와 동일하다. */
/* 4-6. 논리와 문자열의 연산 */
System.out.println(true + "a");
// truea
연산의 순서는 왼쪽에서 오른쪽으로 이루어진다.
이때 이러한 방향성보다 우선하고싶은 연산이 있다면 괄호처리 ( ) 해주면 된다.
또한 사칙연산에는 순서가 있다. 더하기 빼기보다 *, /, % 등이 우선한다.
변수
메모리(RAM)에 시간에 따라 변하는 값을 기록하기 위한 '공간'
- 변하는 값이라는 의미도 있지만 값을 저장하는 '공간'으로 볼 수도 있다.
- 연산하여 결과를 출력했으면 변수에 저장할 수 있다. 이 때 출력코드에 변수를 입력하면 저장한 값이 나온다.
- 길고 복잡한 수식을 가진 연산값이라면 변수에 대입해 코드를 단순화할 수 있다.
- 값에 의미를 부여하는 것의 이점: 코드 의미 파악 용이하고 재사용성 증가로 인한 유지보수성이 증가한다.
- 좋은 코드는 재사용성이 좋은 코드이다. 유지보수 범위의 파악이 가능해야 한다.
자료형(Type)
- 데이터의 크기와 형태에 맞게 여러가지 형태의 자료형이 존재 함
- 논리형 : boolean (1byte) - 1과 0 즉 true false 로 이루어져 있다.
- 문자형 : char (2byte) / String (참조형)
- 숫자 / 정수형 : byte (1byte) / short (2byte) / int (4byte) / long (8byte)
- 숫자 / 실수형 : float (4byte) / double (8byte)
구분 | 형태 | 표현식 | 크기 | |
자료형 | 논리 | boolean | 1byte | |
문자 | 문자 | char | 1byte | |
문자열 | String | 참조형 | ||
숫자 | 정수형 | byte | 1byte | |
short | 1byte | |||
int | 1byte | |||
long | 1byte | |||
실수형 | float | 1byte | ||
double | 1byte |
- 문자열은 기본자료형에 해당하지 않는다.
- 문자는 홑따옴표, 문자열은 쌍따옴표를 이용해서 표현을 한다.
- 기본자료형은 int 와 double이며 몇가지 표기에 유의해야 한다.
long자료형을 표현할 때는 L을 붙여 표현한다.
long lnum;
lnum = 8L;
float를 표현할때는 f를 붙여서 표현한다.
float fnum;
fnum = 4.0f;
- 소문자로 'l'을 써도 되지만 글꼴에 따라 숫자 1과 혼선이 빚어질 수 있어 대문자로 하는 것이 권장된다.
- 대문자 'F'도 가능하지만 소문자를 사용하는 것이 일반적이다.
데이터 저장 단위
저장 공간이 제한적이기 때문에 저장 크기에 대한 기준과 CPU가 데이터를 처리할 때 일정한 기준 필요하다.
- 비트(bit) : 컴퓨터가 나타내는 데이터의 저장 최소 단위로서 2진수 값 하나를 저장할 수 있는 메모리 공간을 의미
- 바이트(byte) : 데이터 처리 또는 문자의 최소 단위로서 8개의 비트가 모여 하나의 바이트가 구성 됨
- 8 비트 = 1바이트 / 16비트 = 2바이트
- 공간이 커질 수록 표현할 수 있는 값의 범위가 늘어난다는 의미이다.
- 컴퓨터는 2진수로 인지하기 때문에 2^n(n = 비트 크기)로 범위 할당한다.
- 실수형은 부동소수형방식을 쓰기때문에 정수의 저장방식과는 차이가 있다.
- double은 표현할 수 있는 유효자리 수가 float의 2배이다.
변수의 선언
변수를 선언한다는 것은 메모리 공간에 데이터를 저장할 수 있는 공간을 할당하는 것
- 선언 방법 : 자료형(변수타입) + 변수명;
- 선언 예시 : boolean isTrue; byte bnum; int inum; String str;
- 변수 저장소의 크기는 타입을 지정함으로서 결정할 수 있다.
- 문자열은 참조형으로서, 기본자료형에 해당하지 않는다.
- char은 ' ' 으로, String 에는 " " 으로 작성해야한다.
/* 변수를 사용하기 위한 방법
* 1. 변수를 준비한다.(선언)
* 2. 변수에 값을 대입한다.(값 대입 및 초기화)
* 3. 변수를 사용한다. */
/* 1. 변수를 준비한다.(선언) */
/* 1-1. 변수를 선언하는 방법 */
/* 자료형 변수명; */
/* 자료형이란? *
다양한 값의 형태별로 어느 정도 크기를 하나의 값으로
취급할 것인지 미리 Compiler와 약속한 키워드이다.
* 이러한 자료형은 기본자료형(Primary type)과
참조자료형(Reference type)으로 나누어진다.
* 그 중 기본자료형 8가지부터 살펴보기로 한다. */
/* 1-1-1. 숫자를 취급하는 자료형 */
/* 정수를 취급하는 자료형은 4가지가 있다. */
byte bnum; //1byte
short snum; //2byte
int inum; //4byte
long lnum; //8byte
/* 실수를 취급하는 자료형은 2가지가 있다. */
float fnum; //4byte
double dnum; //8byte
/* 1-1-2. 문자를 취급하는 자료형 */
/* 문자를 취급하는 자료형은 한 가지가 있다. */
char ch; //2byte
/* 1-1-3. 논리 값을 취급하는 자료형 */
boolean isTrue; //1byte
/* 이상 8가지를 기본자료형이라고 한다. */
/* 앞에서 다뤄본 형태 중 문자열이 빠져 있다.
문자열은 조금 다른 방식으로 취급하게 되는데
이 부분은 나중에 깊게 다룰 것이다. */
/* 1-1-4. 문자열을 취급하는 자료형 */
String str; //4byte
(엄밀히 이야기 하면 주소값은 4byte 정수형이다.)
/* 2. 변수에 값을 대입한다.(값 대입 및 초기화) */
/* 위에서 한 변수 선언은 메모리에 값을 저장하기 위해 공간만 생성해 둔 상태이다.
* 그 공간에 대입연산자를 이용하여 자료형에 저장하기로 한 형태의 값을 저장할 수 있다.
* 만약, 약속 내용과 다른 형태의 값을 대입하려고 하면 Compiler는 에러를 발생시킨다. *
* 대입 연산자의 실행 방향은 오른쪽에서 왼쪽이다.
* 즉, 오른쪽에 있는 값을 왼쪽의 공간에 대입한다는 의미이며,
왼쪽에는 항상 공간, 오른쪽에는 항상 값이 온다.
* 변수를 대입연산자 왼쪽에 사용하면 공간의 의미이고,
대입연산자 오른쪽에 사용하면 변수가 가진 값을 의미한다. */
/* 2-1. 정수를 취급하는 자료형에 값 대입 */
bnum = 1;
snum = 2;
inum = 4;
//lnum = 8;
//아무 문제 없는 것 같지만 사실 뒤에 대문자 L을 붙여야 한다.
그 이유는 뒤에 형변환에서 다루게 될 것이다.
lnum = 8L; //소문자로 'l'을 써도 되지만 글꼴에 따라
숫자 1과 혼선이 빚어질 수 있어 대문자로 하는 것이 권장이다.
/* 2-2. 실수를 취급하는 자료형에 값 대입 */
//fnum = 4.0; fnum = 4.0f;
//실수 뒤에 'f'를 붙여야 한다.
대문자 'F'도 가능하지만 소문자를 사용하는 것이 일반적이다.
dnum = 8.0;
/* 2-3. 문자를 취급하는 자료형에 값 대입 */
ch = 'a';
ch = 97;
//'a'는 97이라는 숫자 값을 가지므로 숫자로도 char에 저장 가능하다.
/* 2-4. 논리를 취급하는 자료형에 값 대입 */
isTrue = true;
isTrue = false;
// true 혹은 false 중 한 가지의 값만 사용 가능하다.
/* 2-5. 문자열을 취급하는 자료형에 값 대입 */
str = "a";
/* 일반적으로 사용하는 값을 독특한 형태가 아닌 일반적인
형태로 사용할 수 있는 자료형을 대표자료형이라고 하며
* 정수형은 int, 실수형은 double이 대표 자료형이다.
* 정수의 경우 일상 생활에서 많이 사용되는 숫자의 범위는
byte, short로는 표현이 불가능한 경우가 많아
* 특수한 경우가 아니면 byte와 short는 잘 사용하지 않는다.
* 실수의 경우 정확도를 기준으로 4byte 자료형보다
8byte 자료형이 더 정확한 실수를 표현할 수 있기 때문에
* double을 대표 자료형으로 사용하고 float는 특수한 목적이 있는
경우에만 사용하게 된다. * */
/* 위처럼 변수를 선언하고 난 뒤 최초로 값이 대입되는 것을 초기화라고 한다.
* 위에서는 변수 선언과 값 대입을 따로 했지만 동시에 수행할 수 도 있다.
* 이를 '선언과 동시에 초기화' 라고 한다. * */
int point = 100;
int bonus = 10;
/* 3. 변수를 사용한다. */
/* 3-1. 변수에 저장한 값 출력하기 */
System.out.println("============ 변수에 저장 된 값 출력 =============");
System.out.println("bnum의 값 : " + bnum);
System.out.println("snum의 값 : " + snum);
System.out.println("inum의 값 : " + inum);
System.out.println("lnum의 값 : " + lnum);
System.out.println("fnum의 값 : " + fnum);
System.out.println("dnum의 값 : " + dnum);
System.out.println("ch의 값 : " + ch);
System.out.println("isTrue의 값 : " + isTrue);
System.out.println("str의 값 : " + str);
/* 3-2. 변수를 이용해서 연산하기 */
/* 변수에 저장 된 값을 이용해서 연산을 할 수도 있다. */
System.out.println("포인트와 보너스의 합은 ? " + (point + bonus));
/* 3-3. 대입 연산자의 왼쪽과 오른쪽편에 사용하기 */
/* 대입연산자의 왼편에는 공간이라는 의미, 오른편에는 값이라는 의미가 있다.
* 따라서 point라는 공간에 point가 가지고 있는 값 + 100한 값을 대입하라는 의미이다.
*/ point = point + 100;
System.out.println("point = point + 100 ? " + point);
값 대입과 리터럴
- 변수에 값 대입 : 생성한 변수(저장 공간)에 값을 저장 하는 것
- 변수는 한 개의 데이터만 보관하며, 마지막에 대입한 값을 저장하고 있다.
/* 변수의 사용 목적 */
/* 1. 값에 의미를 부여하기 위한 목적
(의미 전달이 쉬워야 코드를 읽기 쉬워지고, 협업 및 유지보수에 유리하기 때문이다.)
* 2. 한 번 저장해둔 값을 재사용 하기 위한 목적
(변수를 이용하여 코드를 작성하면, 값을 변경할 때도 보다 간편하게 변경할 수 있다.)
* 3. 시간에 따라 변하는 값을 저장하고 사용할 수 있다.
(변하는 값을 저장하기 위한 공간이다) */
/* 1. 값에 의미를 부여하기 위한 목적 */
System.out.println("=========== 값에 의미 부여 테스트 ===============");
/* 아래처럼 작성하면 어느 값이 급여인지 어느 값이 보너스 금액인지 알수 없다. */
System.out.println("보너스를 포함한 급여 : " + (1000000 + 200000) + "원");
/* 아래처럼 의미를 부여하게 되면 어느 값이 급여인지,
보너스 금액인지 명확하게 알 수 있게 한다. */
int salary = 1000000;
int bonus = 200000;
System.out.println("보너스를 포함한 급여 : " + (salary + bonus) + "원");
/* 2. 한 번 저장해둔 값을 재사용하기 위한 목적 */
System.out.println("=========== 변수에 저장한 값 재사용 테스트 =============");
/* 10명의 고객에게 100 포인트를 지급해주는 내용을 출력하도록 작성해보자 */
System.out.println("1번 고객에게 포인트를 100포인트 지급하였습니다.");
System.out.println("2번 고객에게 포인트를 100포인트 지급하였습니다.");
System.out.println("3번 고객에게 포인트를 100포인트 지급하였습니다.");
System.out.println("4번 고객에게 포인트를 100포인트 지급하였습니다.");
System.out.println("5번 고객에게 포인트를 100포인트 지급하였습니다.");
System.out.println("6번 고객에게 포인트를 100포인트 지급하였습니다.");
System.out.println("7번 고객에게 포인트를 100포인트 지급하였습니다.");
System.out.println("8번 고객에게 포인트를 100포인트 지급하였습니다.");
System.out.println("9번 고객에게 포인트를 100포인트 지급하였습니다.");
System.out.println("10번 고객에게 포인트를 100포인트 지급하였습니다.");
/* 위 코드에서 공통적으로 사용된 100이라고 하는 값을 변수에 넣고 변수를 호출하여
코드를 개선해보자 */
int point = 200;
System.out.println("1번 고객에게 포인트를 " + point + "포인트 지급하였습니다.");
System.out.println("2번 고객에게 포인트를 " + point + "포인트 지급하였습니다.");
System.out.println("3번 고객에게 포인트를 " + point + "포인트 지급하였습니다.");
System.out.println("4번 고객에게 포인트를 " + point + "포인트 지급하였습니다.");
System.out.println("5번 고객에게 포인트를 " + point + "포인트 지급하였습니다.");
System.out.println("6번 고객에게 포인트를 " + point + "포인트 지급하였습니다.");
System.out.println("7번 고객에게 포인트를 " + point + "포인트 지급하였습니다.");
System.out.println("8번 고객에게 포인트를 " + point + "포인트 지급하였습니다.");
System.out.println("9번 고객에게 포인트를 " + point + "포인트 지급하였습니다.");
System.out.println("10번 고객에게 포인트를 " + point + "포인트 지급하였습니다.");
/* 지급해야 하는 포인트가 변경 된다면 위의 코드는 10줄을 변경해야 하지만 아래
코드는 변수에 대입한 값만 변경하면 적용이 된다. */
/* 3. 시간에 따라서 변경되는 값을 저장하고 사용할 수 있다. */
System.out.println("============ 변수에 저장 된 값 변경 테스트 ================");
/* 변수는 하나의 값을 저장하고 사용하기 위한 공간이기 보다,
변하는 값을 저장하기 위한 공간이다. */
int sum = 0;
sum = sum + 10;
System.out.println("sum에 10을 더하면 현재 sum의 값은? " + sum);
sum = sum + 10;
System.out.println("sum에 10이 있었는데 10을 추가로 더하면? " + sum);
sum = sum + 10; System.out.println("sum에 20이 있었는데 10을 추가로 더하면? " + sum);
변수의 초기화
변수를 선언한 이후 처음으로 값을 저장하는 것을 의미
/* 선언 후 초기화 */ int age; age = 100; /* 선언과 동시에 초기화 */ int age = 100;
지역변수는 선언 후 호출을 하기 전에 반드시 초기화가 되어 있어야 한다.
/* 잘못된 예시 */
int age;
System.out.println(age);
// 이 경우 컴파일 에러가 발생한다. 호출이전에 값 초기화가 되어야 한다.
(+) 이클립스 사용
- package는 일종의 폴더 개념으로 생각하자.
- 패키지는 '세단위' 이상으로 사용하는것이 좋다. ex: chap01.exam01.run01
- 보통 패키지 없이 클래스를 작성하지 않는다.
- 클래스의 가장 맨 뒤엔 패키지 명이 존재한다.
- 클래스의 풀네임은 패키지 명을 포함한 것이다.
- 즉, 클래스를 bae01이라면 풀네임은 chap01.exam01.run01.bae01 이 된다.
- 클래스 작성도중 패키지 경로가 훼손되지않도록 주의해야한다.
- 이클립스 화면 내에 빨간 밑줄이 뜨는 이유? 컴파일 에러, 코드에 문법적인 오류가 있다는 의미이다.
- 어떠한 명령어가 끝났다면 코드 뒤에 항상 ';' 세미콜론을 붙여주어야 한다.
- { }는 클래스를 작성할 수 있는 공간이다.
- 약속된 형태의 메인 메소드 안에서만 출력 메소드를 작성할 수 있다. 메인 메소드의 선행없이 출력메소드만 입력하면 컴파일 에러가 뜬다.
- // 한줄주석으로서 코드로는 무시되는 기능이다. 단, 한줄만 가능하다.
- /* */ 여러줄의 주석을 코드로서 무시되는 기능로 달 수 있다.
- src 위 bin 엔 자동으로 컴파일된 .class 파일등이 있다. 이것은 JVM이 이해할 수 있는 형태의 파일이다.
메인메소드를 미리 만드는 것을 깜빡했다면?
- 단축키 CTRL + SPACE 를 입력하면 메인 메소드가 뜬다.
System.out.println( );을 한번에 입력하고 싶다면?
- 단축키 syso + CTRL + SPACE 를 누르면 한번에 완성된다.
이 외의 유용한 단축키
- CTRL + S : 저장
- CTRL + F11 : 출력 (단, 저장이 선행되어야한다.)
- Shift + enter : 다음줄로 이동
- Tab : 들여쓰기
'Programming > JAVA' 카테고리의 다른 글
메소드 (0) | 2021.12.22 |
---|---|
연산자 (0) | 2021.12.21 |
변수와 리터럴 (0) | 2021.12.20 |
변수 파트 암기할 표 정리 (0) | 2021.12.18 |
프로그래밍 기초 (0) | 2021.12.16 |