출력메소드


System.out.print( )
( ) 안의 변수, 문자, 숫자, 논리 값을 모니터에 출력해주는 메소드

System.out.println()
print문과 동일하게 출력은 해주지만 출력 후 자동으로 출력창에 줄바꿈(개행)을 해주는 메소드
  • 소괄호안에 입력한 변수,숫자,문자값을 창에 출력해준다.
  • 두가지의 차이는 개행(줄바꿈)의 여부에 있다.

 

System.out.println(1.23);

 

리터럴이란? literal


프로그래밍 언어에서 미리 정의해놓은 값의 형태를 말한다.
  • 리터럴의 종류에 따라 사용할 수 있는 연산자가 다르다.

 

리터럴의 종류
  1. 숫자 : 정수, 실수
  2. 문자 : 하나의 문자만 의미 ex: 'C' (작은따옴표)
  3. 문자열 : 두개이상 문자들의 연속을 의미 ex: "안녕하세요" (큰따옴표)
  4. 논리 : 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

+ Recent posts