2023. 3. 10. 20:35ㆍjava
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-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'변환
위의 입력을 받고, 바로 입력을 받고 싶다고 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 |