본문 바로가기
Java/혼자 공부하는 자바

[혼공자] 1주차_chapter 1~3

by 예린lynn 2024. 1. 5.
728x90

미션

1. 기본 미션 : JDK 설치 화면 인증하기

 

2. 선택 미션 : p.88 02-3 확인 문제 9번에 들어갈 코드를 2가지 이상 작성해보기

답:

(int)(var1 + var2 + var3 + Double.parseDouble(var4))
(int)var1 + (int)var2 + (int)var3 + (int)Double.parseDouble(var4)

 


 

Chapter 01 : 자바 시작하기

자바는 애플리케이션 뿐만 아니라 웹사이트를 개발하는 핵심 언어로, 모든 운영체제에서 실행 가능한 데스크톱 애플리케이션 개발에도 사용 가능하다. 자바는 다음과 같은 특징이 있다.

  • 모든 운영체제에서 실행 가능 : 윈도우에서 개발된 프로그램을 수정하지 않고 리눅스에서도 실행 가능
  • 객체 지향 프로그래밍을 위한 최적의 언어
  • 메모리(RAM) 자동 정리 : 개발자는 메모리 관리보다 핵심 기능인 코드 작성에 집중 가능
  • 무료 라이브러리 풍부 : 오픈 소스 라이브러리 풍부

 

Chapter 02 : 변수와 타입

1 . 변수

변수는 값을 저장할 수 있는 메모리의 특정 번지에 붙이는 이름이다. 메모리에 값을 저장하고 싶다면 변수를 선언하고 변수에 값을 지정하면 된다. 또한 변수는 자신이 선언된 위치에서 자신이 속한 블록 내부까지만 사용이 가능하고 밖에서는 사용할 수 없기 때문에 이에 유의해서 선언해야 한다.

 

변수 이름은 다음과 같은 규칙을 따라서 정해야 한다.

  • 첫 번째 글자는 문자이거나 '$', '_' 이어야 하고 숫자로 시작할 수 없다
  • 영어 대소문자를 구분한다
  • 첫 문자는 영어 소문자로 시작하되, 다른 단어가 붙을 경우 첫 문자를 대문자로 한다
  • 문자 수(길이)의 제한은 없다
  • 자바 예약어는 사용할 수 없다

 2 . 기본 타입

1) 기본 타입

정수 타입 byte, char, short, int, long
실수 타입 float, double
논리 타입 boolean

 

  • Char 타입 : 하나의 문자를 작은따옴표(')로 감싸서 사용. 유니코드(0~65535)로 변환되어 저장
  • String 타입 : 문자 또는 여러 개의 문자들인 문자열을 큰따옴표(")로 감싸서 사용
  • 논리 타입 : true, false

2) 이스케이프 문자

문자열 내부에 역슬래시(\)를 붙여서 사용한다. 이스케이프 문자를 사용하면 문자열 내부에 특정 문자를 포함시킬 수 있다.

이스케이프 문자 출력 용도
\t 탭만큼 띄움
\n 줄 바꿈(라인 피드)
\r 캐리지리턴
\" " 출력
\' ' 출력
\\ \ 출력
\u16진수 16진수 유니코드에 해당하는 문자 출력

 

3) 실수 타입

소수점이 있는 실수 리터럴을 저장할 수 있는 타입에는 float와 double이 있다. float에 비해 double이 메모리 사용 크기가 더 크지만, double 타입이 정밀도가 더 높기 때문에 더 정확한 데이터 저장이 가능하기 때문에 가능한 double 타입을 사용하는 것이 좋다.

 

자바는 실수 리터럴을 기본적으로 double 타입으로 해석하기 때문에 실수 리터럴을 float 타입 변수에 저장하면 컴파일 에러가 발생한다. 실수 리터럴을 float 타입으로 저장하고 싶으면 리터럴 뒤에 f나 F를 붙여야 한다.

float var = 3.14 // 컴파일 에러
float var = 3.14f
float var = 3.14F

double var= 3.14

 

4) 논리 타입

참과 거짓을 의미하는 논리 리터럴로 true와 false를 사용한다.

boolean stop = true;
boolean state = false;

 

3 . 타입 변환

두 변수의 타입이 동일할 경우, 한쪽 변수값을 다른 쪽 변수에 복사해서 저장할 수 있다. 반면 두 변수의 타입이 다르면 값의 저장이 가능할 수도 있고 불가능할 수도 있다.

 

1) 자동 타입 변환

자동 타입 변환은 프로그램 실행 도중 값의 허용 범위가 작은 타입이 허용 범위가 큰 타입으로  자동으로 타입 변환이 일어나는 것이다.

기본 타입의 허용 범위 크기는 다음과 같다.

byte < short < int < long < float < double

 

2) 강제 타입 변환

큰 허용 범위 타입은 작은 허용 범위 타입으로 자동 타입 변환될 수 없다. 이때 큰 타입을 작은 타입으로 강제로 나눠서 저장하는 강제 타입 변환을 사용한다. 강제 타입 변환은 캐스팅 연산자 괄호 ()를 사용하는데,  괄호 안에 들어가는 타입은 나누는 단위이다.

//int를 byte로 강제 타입 변환
int intValue = 10;
byte byteValue = (byte) intValue

 

3) + 연산에서의 문자열 자동 타입 변환

자바에서 + 연산자는 두 가지 기능을 가진다.

  • 덧셈 연산 : 피연산자가 모두 숫자인 경우
  • 문자열 결합 연산 : 피연산자 중 하나가 문자열일 경우, 나머지 피연산자도 문자열로 자동 변환
int value = 3 + 7;  // int value = 10;
String str = "3" + 7;  // String str = "37"; 
String str = 3 + "7";  // String str = "37";

 

4) 문자열을 기본 타입으로 강제 타입 변환

변환 타입 사용 예시
String -> int String str = "10";
int value = Integer.parseInt(str);
String -> double String str="12.345";
double value = Double.parseDouble(str);
String -> boolean String str = "true";
boolean value = Boolean.parseBoolean(str);
기본 타입 -> String String str = String.valueOf(기본타입값);

 

단, 문자열이 숫자가 아닌 알파벳이나 특수 문자, 한글 등을 포함하고 있을 경우 숫자 타입으로 변환을 시도하면 숫자 형식 예외(NumberFormatException)가 발생한다.

 

 4 . 변수와 시스템 입출력

- 표준 출력 장치

System.out.println("출력 내용");

 

메소드 의미
println(내용); 괄호 안의 내용을 출력하고 행을 바꿔라
print(내용); 괄호 안의 내용을 출력만 해라
printf("형식문자열",값); 괄호 안의 첫 번째 문자열 형식대로 내용을 출력해라

 

printf의 형식 문자열에서 %와 변환 문자는 필수로 작성하고 그 외의 항목은 모두 생략할 수 있다. %는 형식 문자열의 시작을 의미하고, 변환 문자에서 제공되는 값의 타입에 따라 d(정수), f(실수), s(문자열)를 입력한다. 또한 만약 형식 문자열에 포함될 값이 2개 이상일 경우에는 값의 순번(argument_index$)을 적어야 한다.

System.out.printf("이름: %s", "감자바");  // 이름: 감자바
System.out.printf("나이: %d", 25);  // 나이: 25
System.out.printf("이름: %1$s, 나이: %2$d", "감자바", 25);  // 이름: 감자바, 나이: 25

 

- 표준 입력 장

System.in.read()가 실행되면 Console 뷰는 enter키가 입력될 때까지 대기 상태가 된다. 그 후 enter키가 입력되면 System.in.read()는 입력된 키들에 대한 키코드를 하나씩 읽는다. 

System.in.read();

 

System.in.read();는 키코드를 하나씩 읽기 때문에 2개 이상의 키가 조합된 한글을 읽을 수 없고, 입력된 내용을 통 문자열로 읽지 못한다는 단점이 있다. 이를 보완하여 사용하는 것이 Scanner 클래스이다. 

Scanner scanner = new Scanner(System.in); //생성된 scanner를 변수에 저장
String inputData = scanner.nextLine(); //읽은 문자열을 String 변수에 저장

 

Chapter 03 : 연산자

연산자 우선순위는 다음과 같다.

증감(++,--) > 곱셈(*), 나눗셈(/), 나머지(%) > 산술(+,-) > (비교(<, >) > &&

 

1) 부호 연산자 (+, -)

+ 피연산자의 부호 유지
- 피연산자의 부호 변경

 

cf) 부호 연산자의 결과는 int 타입이다. 그렇기 때문에 byte 타입 변수를 부호 연산하면 int 타입으로 변환된다.

 

2) 증감 연산자(++, --)

연산식 설명
++ 피연산자 다른 연산을 수행하기 전에 피연산자의 값 1 증가
-- 피연산자 다른 연산을 수행하기 전에 피연산자의 값 1 감소
피연산자 ++ 다른 연산을 수행한 후에 피연산자의 값 1 증가
피연산자 -- 다른 연산을 수행한 후에 피연산자의 값 1 감소

 

3) 문자열 결합 연산자(+)

피연산자 중 한쪽이 문자열이면 + 연산자는 문자열 결합 연산자로 사용되어 다른 피연산자를 문자열로 변환하고 서로 결합한다.

String str = "JDK" + 6.0// JDK6.0
String str = "JDK" + 3 + 3.0 // JDK33.0
String str = 3 + 3.0 + "JDK" // 6.0JDK

 

4) 논리 연산자

구분 연산식 설명
AND &&, & 피연산자 모두 true일 경우에만 결과가 true
OR ||, | 피연산자 중 하나만 true여도 결과가 true
XOR ^ 피연산자가 하나는 true이고 다른 하나가 false일 경우에만 결과가 true
NOT ! 피연산자의 논리값을 바꿈

 

5) 삼항 연산자 (?:)

삼항 연산자는 3개의 피연산자를 필요로 한다. 삼항 연산자는 ? 앞의 조건식에 따라 콜론(:) 앞뒤의 피연산자가 선택된다.

(조건식) ? (피연산자1) : (피연산자2)

조건식을 연산해서 true가 나오면, 삼항 연산자의 결과는 피연산자1이 나온다. 반면에 연산해서 false가 나오면, 삼항 연산자의 결과는 피연산자2가 나온다.

728x90

'Java > 혼자 공부하는 자바' 카테고리의 다른 글

[혼공자] 5주차_Chapter 8~9  (0) 2024.02.01
[혼공자] 4주차_chapter 7  (0) 2024.01.31
[혼공자] 3주차_chapter 6  (0) 2024.01.19
[혼공자] 2주차_chapter 4~5  (0) 2024.01.13
[혼공자] 혼공학습단 11기 시작  (0) 2024.01.04