3일차 2023-03-10 Java

2023. 3. 10. 20:35java

1. 이스케이프 문자

 

 

2일 차 이후 추가)

Format String(형식 문자열): 출력형식을 지정하기 위한 형식 문자열

% s나 %d 등 변환 지시어를 사용해서 원하는 출력 형식을 만들 수 있다.

 

1-1주요 변환 지시어

%d : 정수값 출력시(byte/short/int/long)
 %f : 실수값 출력시(float/double)
 %c: 한 문자 출력시(char)
 %b: boolean형 출력시
 %s: 문자열 출력시
 %n: 줄바꿈 (\r\n도 가능)  
 %%: %리터럴을 의미(%를 문자 그대로 표현, %가 다른 기능으로 사용되지 않기 위함)

 

1-2) printf("형식 문자열", 값들을 컴마로 구분해서 나열). 단, printf는 줄 바꿈 기능이 없음.

ex)

System.out.printf("국어:%d,영어:%d,수학:%d,평균:%.14f\n",kor,eng,math,avg);

1-3) 형식 문자열에서 데이터 출력 시 자릿수 지정

ex)

%숫자d

%4c: 한문자를 출력하는데 전체 자리 수는 4자리

%5d: 정수 숫자를 출력하는데 전체 자릿수는 5자리

%6.2f: (f) 실수를 출력하고, ( .2) 소수점 둘째 자리까지, (6) 전체 자릿수는 6자리이다(여기서 소수점도 자리를 차지함)

자릿수 지정 시 값을 오른쪽부터 채운다(양수일 때)

-를 붙이면 왼쪽부터 채움. 

ex)

printf("%4d",12);

col)

_ _ 12

printf("%-4d",12);

col)

12_ _

ex)

형식 문자열에서 데이터 출력시 자릿수 지정 예제

col)

형식 문자열에서 데이터 출력시 자릿수 지정 예제 결과

 

2. 연산자

 

 

2-1) 단항 연산자

증감연산자: ++ --

부호연산자: + -

비트별 NOT연산자(1의 보수): ~

논리 부정 연산자: !

 

2-2) 산술 연산자

*(곱하기)    /(나누기몫) %(나누기 나머지) +(더하기) -(빼기)

 

2-3) 쉬프트 연산자

<<, >>: 비트 개념으로 0과 1로 이루어진 비트를 우측이나 좌측으로 이동.

비트계산 의미

ex)

쉬프트 연산
비트 연산
비트연산2

결과)

비트연산 결과

위의 비트계산이 처음 봤을 때 이해가 조금 필요하기도 하다.

 

2-4) 비교 연산자

비교 연산자

 

 

2-5) 비트 연산자

&(and)      |(or)        ~(not)    ^(xor): xor은 둘 다 참이거나 두 항이 다 거짓이면 false  두 항이 반대이면 true

 

2-6) 논리 연산자

논리 연산자

여기서 | 과 &는 잘 쓰지 않음. 

|, &은 ||, &&과 같은 역할을 하지만 ||, &&은 좌측이 false가 떨어지면 우측을 하지 않고 결괏값을 내버림.

하지만  |, &은 양쪽을 다 비교를 하고  null 같은 에러가 생겨날 수 있음

 

ex) |, &는 양쪽 항을 비교 다 함

결과)

ex) &&, ||, 결과

 

2-7) 할당 연산자

할당 연산자

대입연산자(=)로 초기화

※대입 연산자의 오른쪽 식이 항상 먼전 실행된 후 그 결괏값을 왼쪽의 변수에 대입

축약표현

※산술연산자에만 적용된다.

++변수, 변수--: 1먼저 증가시키고 연산, 연산하고 1감소

조심할 것)

증감연산자

첫 번째 줄 결과는 10이 출력하고 난 뒤, num5에 1 증가시켜 num5는 11이 저장, 

두 번째 줄 결과에서 11이 출력이 됨.

 

2-8) 연산자 우선순위

:()는 모든 연산자에 우선한다.

연산자 우선순위는 산술 > 비교 > 논리 연산자 순이다.(산비논)

그리고 연산순위가 같으면 왼쪽에서 오른쪽으로 순으로 결정

 

2-9) 논리 연산애의 우선순위

NOT    >    AND     >   OR, XOR

 

3. 제어문

 

3-1) if문

if(조건식) {

    명령문

}

조건식은 논리식이며 참일 경우에 명령문을 수행하며, 거짓일 경우 명령문을 수행하지 않는다.

 

※주의) 만약, 명령문이 2줄인데 {}가 없으면 한 줄만 적용, 그 아랫줄은 if문법에 해당하지 않음.(그냥 출력됨)

그래서 한 줄 명령문이면 {} 생략가능. 

2줄 이상이면 {}를 써야 한다.

 

※ System.in.read() 메서드:

사용자입력을 받을 때까지 블락상태=> 이 코드 이후가 실행되지 않고 대기상태이다. (입력을 받을 수 있음)

 

사용자 입력

사용자 입력을 asciiCode 변수에 저장

저장된 값(문자)은 컴퓨터는 65인 아스키코드값으로 저장되어 있어서 출력하면 65

이 65를 (char) 변환으로 다시 'A'변환

문자 결과값
아스키 코드값을 알때

 

아스키 코드값을 모를때

 

문제
A를 입력하였을 때

 

^(특수문자)를 입력하였을 때

 

위의 입력을 받고, 바로 입력을 받고 싶다고 System.in.read();쓰면 씹힘;;;

이유는 첫번째 입력 때 엔터를 치게 되는데, 끝마침과 동시에 버퍼 속에 \r\n(개행문자)이 있어서 이것을 없애야만 다시 입력할 수 있는 상태가 된다.

이것을 처리하기 위해 skip메서드를 활용

System.in.skip(2);

혹은 System.in.read();System.in.read();

이렇게 2번 써버리는 식으로 개행문자를 없애고 

System.in.read();를 써서 사용자 입력을 쓸 수 있다.

버퍼에 대한 것은 나중에 정리할 것.

 

'java' 카테고리의 다른 글

6일차 2023-03-15 Java  (0) 2023.03.15
5일차 2023-03-14 Java  (2) 2023.03.14
4일차 2023-03-13 Java  (0) 2023.03.13
2일차 2023-03-09 Java  (1) 2023.03.09
1일차 2023-03-08Java  (0) 2023.03.08