개발/교육
(Java) 2일차
kakk789
2022. 3. 29. 09:45
주석문
프로그램 실행에 영향을 끼치지 않으며 설명하기 위한 문장
프로그램에 오류가 있을 때에 오류를 해결하기 위하여 의심스러운 부분을 주석으로 처리해가면서 오류를 해결할 수 있음
// --> 한줄 주석
/* */ --> 여러줄 주석
범위 주석 방법
ctrl + shift + c --> 블록 범위를 한번에 주석
ctrl + / --> 블록 범위를 한번에 주석
변수와 상수
ex ) int a = 10
변수
- 변할 수 있는 값
- 변수 a에 10을 선언했다가 5를 선언 가능
상수
- 고정된 값
- 예를들어 10=5 불가능
두 변수의 값 바꾸기
temp 임시변수 선언하여 값을 저장하여 temp에 저장하는 방식을 사용함
-- 형식 --
int temp;
temp = a;
a=b;
b = temp;
public class SwapTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
int a = 17;
int b = 24;
System.out.println("a: "+ a);
System.out.println("b: "+ b);
int temp;
temp = a;
a=b;
b = temp;
System.out.println("a: "+ a);
System.out.println("b: "+ b);
}
}
Boolean
나이가 20살 이상일 경우 true를 출력하라.
flags = true == age >= 20;
flags = age >=20;
if문 대신 이런 식으로 표현해도 됌.
import java.util.Scanner;
public class BooleanTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
boolean flags;
Scanner sc = new Scanner(System.in);
int age = sc.nextInt();
flags = age >=20;
System.out.println(flags);
}
}
char
하나의 문자를 표현하기 위한 자료형
'홋' 따옴표 로 묶어줘야함
char a = '홍'; //한글자 홋 따옴표
String b = "홍길동"; //여러글자 쌍 따옴표
String c = "홍"; // 한글자 쌍 따옴표
System.out.println(a); // 홍
System.out.println(b); // 홍길동
System.out.println(c); // 홍
번외) String에서 한 바이트 반환하기(charAt)
String data = "hello";
char first = data.charAt(0); // char 로 저장해야함
System.out.println(first); // char 형의 h 한글자 반환
OverFlow, UnderFlow
- 1번. OverFlow가 되는 이유는 바이트가 표현할 수 있는 양의 정수는 127까지인데 거기에 1을 더하니까 오버플로우 되어 -128이 출력 됨
- 2번. UnderFlow가 발생하는 이유는 바이트가 표현할 수 있는 음의 정수는 -128 까지인데 거기에 1을 빼니까 언더플로우 되어 +127이 됨.
// 1번. OverFlow
byte a = 127;
a= (byte)(a+1);
System.out.println(a); // -128 출력
// 2번. UnderFlow
byte b = -128;
b= (byte)(b-1);
System.out.println(b); // +127 출력
서로 다른 자료형을 연산을 하면 자료형이 큰 것으로 연산이 됨.
예시 ) int (4) + double(8)
==> double(8)
int a=5;
int b=2;
double r = a / b;
System.out.println(r); // 결과 값 2.0 (비정상)
double r2 = a / (double)b; // 하나라도 double로 형변환 해야함
System.out.println(r2); // 결과 값 2.5 (정상)
비트 연산자
& 비트곱 - AND 연산 - 둘 다 1이면 1 ( 곱하기 개념으로 이해 = 둘이 1*1=1 임 )
| 비트합 - OR 연산 - 하나 라도 1이면 1 ( 더하기 개념으로 이해 = 0+1= 1 임)
^ 비트차 - XOR 연산 - 같으면 0 다르면 1 ( 빼기 개념으로 이해 = 1 - 0 = 1)
비트 곱( & )과, 비트 합( | )은 논리 연산자로도 사용 가능.
if(age >=30 & height<=160) // && 이 아닌 &만 해도 가능함
ShortCut Operation
위에서 설명 했듯이 비트 곱( & ) 과, 비트 합( | )은 논리 연산자로 사용이 가능하다.
그렇다면 && 과 & 의 차이점은 무엇일까? 결과는 비슷하나 원리가 다름
if ( 조건식 1 && 조건식 2 )
- &&은 조건식 1이 거짓이라면 조건식 2를 수행하지 않음
- 그래서 &&, || 를 Shortcut Operation 이라고 함.
만약 if ( 조건식 1 & 조건식 2 ) 일 경우
- & 가 논리연산자로 사용될 때는 조건식 1이 거짓이라도 일단 조건식 2도 실행함.
- 즉, 조건식1, 2번 모두 다 실행 해야함.
- 실행하는게 무슨 의미가 있는거냐면, 만약 조건식에 전위연산, 후위연산이 있을 경우 문제가 될 수도 있음.
아래 예시 코드를 확인해보자
int a, b, c, d;
a=b=c=d=5;
if(++c > 100 & ++d > 100) {
System.out.println("OK"); }
else {
System.out.println("NO"); }
System.out.println("c: "+c); // 출력 값: 6
System.out.println("d: "+d); // 출력 값: 6
//---------------------------------------------------------
if (++a > 100 && ++b > 100) {
System.out.println("OK"); }
else {
System.out.println("NO"); }
System.out.println("a: "+a); // 출력 값: 6
System.out.println("b: "+b); // 출력 값: 5
해당 두 코드는 모두 "NO"를 출력한다.
하지만 c, d = 모두 6이 출력 되었지만 a, b는 각각 6, 5가 출력되었다.
- c는 전위 연산으로 우선 6으로 증가 되었고, 해당 조건식 1번은 거짓이지만 &를 논리연산으로 사용한다면 뒤에 조건식 2번을 무조건 실행하기 때문에 d도 전위 연산 실행되므로 모두 6이된다
- 하지만 a, b는 다르다. 각각 6, 5 가 출력된다.
a는 우선 전위 연산 실행하면 6이 되지만 해당 조건식 1번 자체가 거짓이므로 두번째 조건식이 실행되지 않는다. 두번째 조건문이 실행되지 않으니 당연히 b도 전위연산을 할 수가 없으므로 각각 6, 5가 출력 된다
시프트 연산자
<< 의미: *2 한 것과 같음 ( 3비트 레프트 시프트 == 곱하기 8 를 의미)
>> 의미: /2 한 것과 같음 ( 2비트 라이트 시프트 == 나누기 4 를 의미)
int i = 8;
int a = i << 1;
int b = i >> 1;
System.out.println(a); // 16
System.out.println(b); // 4
상기 코드설명
- 8 = 2진수로 0000 1000
- a = 왼쪽으로 1비트 만큼 시프트 하므로 0001 0000 즉, 16이 됨
- b = 오른쪽으로 1비트 만큼 시프트 하므로 0000 0100 즉, 4가 됨
삼항 연산자(조건식 연산자)
조건식에 따라 동작시킬 항을 선택하기 위한 연산자.
간단한 if, else를 대신할 수 있음.
사용법 설명
(항1) ? 항2 : 항3
- 항1 = 조건식(참, 거짓)
- 항2 = 항 1이 참 일 경우 항2 동작
- 항3 = 항1 이 거짓 일 경우 항3 동작
항2와 항3에는 변수, 상수, 수식이 올 수 있음.
int a = 5;
//방법 1
int b = (a>0)?1:0;
System.out.println(b);
//방법 2
String c = (a>0)?"OK":"NO";
System.out.println(c);
//방법 3
System.out.println( (a>0)?"OK":"NO") ;
제어문
프로그램 실행 중에 실행할 문장을 제어하기 위한 문장을 말한다
선택문, 반복문, break, continue 가 있음.
선택문
if, switch 문이 존재
중첩 if문 활용도
- 3개 중 큰 수 찾기할 때 중첩 if문 활용
Scanner sc = new Scanner(System.in);
System.out.println("3개의 정수를 입력>> ");
int n1 = sc.nextInt();
int n2 = sc.nextInt();
int n3 = sc.nextInt();
int max=0;
if (n1>n2) {
if(n1>n3) {
max=n1;
}
else {
max=n3;
}
}
else {
if(n2>n3) {
max=n2;
}
else {
max=n3;
}
}
System.out.println("가장 큰 수는"+max+"입니다.");
반응형