1. 화면에 글자 출력하기
System.out.print()를 사용한다 괄호() 안에 출력하고자 하는 내용을 넣으면 된다.
//예시
System.out.print("Hello, world") //화면에 문자열 Hello, world 출력
System.out.print(3+5) //화면에 8 출력
System.out.print("3+5") //화면에 3+5 출력
System.out.print() 외에도 System.out.println()이 있는데
System.out.print()은 괄호 속 내용을 출력하고 줄바꿈을 하지 않는다.
System.out.println()은 괄호 안의 내용을 출력하고 줄바꿈을 한다.
그리고 이클립스에서 sysout을 적으면 System.out.println()을 자동 완성할 수 있어서 매우 편하다.
자바는 대소문자를 구분하므로 System을 system으로 적지 않도록 주의!
2. 덧셈 뺄셈 계산하기
사칙 연산을 계산 하려면 앞서 배운것 처럼 괄호 안에 식을 작성하면 된다.
System.out.println(5+3) //8
System.out.println(5-3) //2
System.out.println(5*3) //15
System.out.println(5/3) //1
3. 변수의 선언과 저장
프로그래밍을 하다 보면 값을 저장해둘 공간이 필요한데 그 공간을 변수라 한다.
변수선언은 변수타입 변수이름; 이런 방식으로 선언한다.
예시를 들자면 int x; 이렇게 선언했을때 x라는 이름의 변수(저장공간)이 생긴다.

정수(integer)를 담을 준비가 된 x 라는 이름의 박스가 생겼다고 생각해보자
여기에 5를 넣으면 상자 속에 정수타입 5가 들어간 것이라고 생각하면 되고
혹 변수에 저장된 값을 바꾸고 싶다면 5를 넣은 것 처럼 다른 숫자를 넣으면 기존의 값은 지워지고 새로운 값이 저장된다.
코드로 표현하면
int x; //변수 선언
x = 5; // 변수에 값 대입
x = 3; // 변수에 새로운 값 대입, 기존 값은 지워짐
변수 선언과 값 대입을 동시에 할 수 있다
int x = 5 // 변수 선언과 값 5 대입
수학에서는 ‘=’가 양쪽이 같음을 의미하지만 자바에서는 오른쪽 값을 왼쪽에 저장하라는 의미의 ‘대입 연산자’이다. 혼동하지 않도록 주의
4. 변수의 타입
변수를 선언 할 때 변수에 저장할 값의 종류에 따라 타입을 선택해야 한다.

5. 상수와 리터럴
–상수는 변수와 마찬가지로 값을 저장할 수 있는 공간이지만 변수와 달리 한번 저장하면 다른 값으로 변경할 수 없다.
상수를 선언하는 방법은 변수와 동일하며 변수 타입 앞에 키워드 final을 붙여주면 된다. 예를 들면
final int CONST;
CONST=5;
CONST=3; //여기서 에러 발생, 상수에 저장 된 값을 변경할 수 없음
상수의 이름은 모두 대문자로 하는 게 관례라고 한다. 여러 단어로 이루어져 있는 경우 띄어쓰기를 하는 게 아닌 ‘_’ 언더바로 구분하도록 한다.
-리터럴
변수와 상수가 값을 저장 할 수 있는 공간이라면 리터럴은 그 공간에 들어가는 값을 의미한다.
변수에 타입이 있듯 리터럴에도 타입이 있다.
6. 리터럴의 타입과 접미사

int octNum = 010; //8진수 10, 10진수로 8 8진수를 표현할때는 리터럴 앞에 접두사 "0"를 붙인다
int hexNum= 0x10; //16진수 10, 10진수로 16 16진수를 표현할때는 리터럴 앞에 접두사 "0x"를 붙인다
long big = 100_000_000_000L; //정수형 리터럴 중간에 구분자'_' 를 넣을수 있다. 큰숫자 읽을때 편하다
float pi = 3.14f; //접미사f대신F 를 사용해도 된다 생략불가
double rate = 1.68d; // 접미사d대신 D를 사용해도 된다 생략가능
필자는 리터럴이의 타입이 왜 필요하고 붙여줘야 하는지 이 글을 작성하고 나서야 알았다. (추후에 나오지만 이런 걸 몰라도 그냥 float를 선언하고 초기화해서 사용했기때문)
리터럴에 타입이 왜 필요할까? 그냥 아까 배운 것처럼 그냥 선언하고 값 넣으면 안되나? 에 대한 내용은 추가 기술할 예정
7. 문자 리터럴과 문자열 리터럴
‘A’와 같이 작은따옴표로 문자 하나를 감싼 것을 “문자 리터럴”이라고 한다. 문자 두개이상을 사용하면 큰따옴표(“”)로 감싸야 하며 이는 “문자열 리터럴”이라고 한다.
char ch = 'J' // char ch = "JAVA" 이런 방식은 불가능하다 변수 타입(공간 혹은 상자의 타입)이 char==문자 형태이기 때문
String name = "JAVA"; // 변수 name에 문자열 리터럴 "JAVA"를 저장
여러 문자를 저장하기 위해서는 String(문자열)타입을 사용해야 한다.
아무 내용도 넣지 않기 위해서도 String(문자열) 타입을 사용해야 한다.
String str = ""; //빈 문자열 가능
char ch ='';//빈 문자 불가능, 에러
ch = ' ' //공백은 가능 공백은 아무것도 없는게 아니라 문자입니다.
8. 문자열 결합
숫자 뿐만 아니라 아래와 같이 두 문자열을 합칠 때도 +를 사용한다
String name= "JA"+"VA";
덧셈 연산자는 양옆(피연산자)이 모두 숫자일 때는 두 수를 더하지만, 피연산자 중 어느 한쪽이 String이면 나머지 한쪽을 String으로 변환 후 두 String을 결합한다.
문자열 + any type == 문자열
any type + 문자열 == 문자열
다른 타입을 문자열로 바꾸고 싶을 때 빈 문자열을 더해주는 것으로 바꿀 수 있다.
System.out.println(7+7+""); // 14 , 7+7후 문자열로 변경
System.out.println(""+7+7); // 77 , 앞에 있는 7을 문자열로 바꾸고, 뒤에 있는 7도 자동 형 변환 하여 결합
9. 두 변수의 값 바꾸기
int x와 y의 값을 바꾸려면 어떻게 해야할까
int x = 10, y = 20; // int x =10; 과 int y = 20; 을 한줄로 표현함
int tmp = x; //tmp 라는 이름의 빈 공간을 사용해서 x의 값을 보관
x = y; // 먼저 x에 y의 값을 대입, 즉 x=20
y = tmp; //보관해놓은 원래의 x값을 y에 대입 결과적으로 x와 y의 값은 서로 변하게 되었다.
TMP 또는 TEMP란 “Temporary(일시적인, 임시적인)”의 준말입니다. 컴퓨터에서는 “임시 파일”이나 “임시 디렉토리(폴더)”를 의미하는 경우가 대부분입니다.
10. 기본형과 참조형
우리가 주로 사용하는 값(data)의 종류(type)에는 크게 문자와 숫자로 나눌 수 있다.그리고 숫자는 정수형과 실수형으로 나눌 수 있다.
자료형은 크게 기본형과 참조형 으로 나눌 수 있는데, 기본형 변수는 실제 값을 저장하는 반면, 참조형 변수는 어떤 값이 저장되어 있는 주소 를 지정한다.
기본형(primitive type): 논리형(boolean), 문자형(char), 정수형(byte, short, int, long), 실수형(float, double), 계산을 위해 실제 값을 저장한다. 모두 8개
참조형(reference type): 객체의 주소를 저장한다. 8개의 기본형을 제외한 나머지
11. 기본형의 종류와 범위

기본 자료형의 종류와 크기는 반드시 외워야 한다.
12. printf를 이용한 출력
println()을 사용한 출력은 편하지만 변수의 값을 그대로 출력한다. 값을 변환하지 않고는 다른 형식으로 출력할 수 없다.
같은 값이라도 다른 형식으로 출력하고 싶을 때, 예를 들어 소수점 둘째 자리 까지만 출력하고 싶을 때 printf()를 사용하면 된다.
int age = 14;
System.out.printf("age=%d",age) // age:14

이러한 지시자를 사용하여 printf()를 사용한다. 줄 바꿈은 %n를 통해 넣어 사용한다.
13. printf()를 사용한 출력 예제
추후 추가하겠습니다.
14.화면으로부터 입력 받기
책에서는 직접 입력을 하면 더 재미있어지지 않을까 하는 마음으로 미리 소개한다고 한다.
주석 참고해서 따라해보세요.
import java.util.Scanner; //Scanner클래스를 사용하기 위해 추가
public class Hello {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in); //Scanner클래스의 객체를 생성
System.out.println("정수를 입력해보셈"); // 저는 22를 입력하겠습니다.
String input = scanner.nextLine(); //입력받은 내용을 input에 저장
int num = Integer.parseInt(input); //입력받은 내용을 int타입의 값으로 변환
System.out.println("입력내용:"+input); //입력내용:22 여기서의 22는 문자열"22"입니다 input의 22이기 때문입니다.
System.out.printf("nun=%d%n",num); //여기서의 22는 정수형인 숫자 22입니다. 그렇기에 지시자 %d로 출력했네요.
}
}
저희는 아직 자동형변환 밖에 안배웠는데 java.lang.Integer 클래스를 사용하여 강제형변환하여 String타입을 int타입으로 바꿨네요.
15. 정수형의 오버플로우
연산과정에서의 오버플로우는 해당 타입이 표현할 수 있는 값이 범위를 넘어서는 것이다.
예를 들어 0000~9999의 범위를 표현 할 수 있는 표시기가 있다고 할 때 최대 값인 9999의 다음 숫자는 0000이다. 원래는 10000이 되어야 하는데 다섯 자리는 표현할 수 없기 때문이다.
반대로 0000-1은 9999이다.
즉 최대값 + 1 == 최소값, 최소값 – 1 ==최대값 은 참이다.
16. 부호있는 정수의 오버플로우
아까 배운 것과 마찬가지이다. 최대값 + 1 == 최소값, 최소값 – 1 ==최대값 은 참이라는 점만 알면 된다.
short타입은 정수 -32768~32767까지 표현할 수 있다.
그렇기에 -32768-1 은 -32769로 표현될 수 없기 때문에 32767로 나온다. 32767+1도 표현될 수 없기 때문에 -32768로 나온다.
package ch01;
import java.util.Scanner;
public class Hello {
public static void main(String[] args) {
short sMin = -32768, sMax = 32767;
System.out.println("sMin = " + sMin);
// System.out.println("sMin-1 = " + sMin -1); //이부분은 문자열과 사칙연산이 같이 있을 경우 조심해야함을 알려드리기 위해 추가 했습니다.
// System.out.println("문자열빼기1"-1); //문자열과 정수형 변수sMin이 +연산되어 문자열이 되는데 여기에 -1를 할수 없습니다. 괄호 사용하여 사칙연산 먼저 해주세요.
System.out.println("sMin-1 = " + (sMin-1)); //-32769 , short 최소 값에서 1빼면 최대값 나온다며? 왜 안돼? 라고 생각하실까봐 넣어놨습니다.
// 1이 int 타입인점, 그리고 산술연산규칙을 알아야 이해될 내용이며 다음 챕터에 나옵니다.
System.out.println("sMin-1 = " + (short)(sMin-1)); //32767 아직 배우지 않은 강제형변환 입니다.
System.out.println("sMax = " + sMax);
System.out.println("sMax+1 = " + (short)(sMax+1)); //-32768
}
}
이 코드로 부호있는 정수의 오버플로우를 확인할 수 있다.
17. 타입간의 변환방법
- 문자를 숫자로 변환 – 문자에서 0을 뺀다. ‘3’-‘0’ 은 정수형 3이다.
- 숫자를 문자열로 변환 -숫자에 빈 문자열을 더한다. 3 + “” 은 문자열”3″이다 ,Integer클래스 이용한 다른 방법도 있다. 아마 나중에 나올 듯 하다.
- 문자열을 숫자로 변환 – Integer.parseInt() 또는 Double.parseDouble() 을 사용한다. Integer.parseInt(“3”) 은 3이다.
- 문자열을 문자로 변환 – charAt(0)을 사용한다. “3”.charAt(0)은 문자’3’이다.
- 문자를 문자열로 변환 – 빈 문자열을 더한다. ‘3’ + “” 은 문자열 “3”이다.
다음 챕터로 넘어가기전에 추가 할 것: 리터럴에 타입이 필요한 이유(리터럴 타입), 이스케이프 문자(출력),변수와 상수 원칙(변수와 상수), 기본형의 종류와 범위 왜 외워야하나
1 Comment
대표 멘토 - 아키텍터
2024-07-15첫번째 글에서도 알고 있었지만 매뉴얼이나 글을 작성하는데 소질이 있어보입니다. 앞으로 작성되는 글이 정말 기대되는군요.