8. 논리 연산자 && || !
-> 결과가 true, false로 리턴.


조건1 && 조건2 -> AND 연산자. 조건1과 조건2의 true, false에 따라서 최종적인 true, false를 리턴
                          동시에 true일때만 최종 true가 됨. false가 하나 있으면 무조건 false를 리턴


조건1 || 조건2 -> OR 연산자. 조건1과 조건2의 true, false에 따라서 최종적인 true, false를 리턴
                          동시에 false일때만 최종 false가 됨. true가 하나 있으면 무조건 true를 리턴.


(! (조건) ) -> NOT 연산자. 조건의 true, false를 반대로 리턴







자료형


1. 정수형


byte -> 1바이트, 표현범위: -128 ~ 127

short -> 2바이트, -32768 ~ 32767

int -> 4바이트(32비트), -2,147,483,648 ∼ 2,147,483,647.  (암기)

long -> 8바이트. 접미사 L표기 필요.


10진수 -> 0 ~ 9 조합

2진수 -> 0, 1 조합

16진수 -> 0 ~ 9 ~ A ~ F 조합



Wrapper 클래스 (기본자료형에 대한 클래스 표현)

byte -> Byte

short -> Short

int -> Integer

long -> Long


Integer.parseInt() -> 형 변환 메소드

Integer.MAX_VALUE -> int 자료형의 최대값을 돌려주는 상수

Integer.MIN_VALUE -> int 자료형의 최소값을 돌려주는 상수






문제)) 임의의 수를 입력 받아서 2진수, 10진수, 16진수 표현을 출력.
실행예)
10진수 입력(0~2147483647)?
2진수: xxxxxxxx
10진수: xxxxxxxx
16진수: xxxxxxxx






2. 문자형과 문자열형


char -> 문자형. 기본자료형. 'A'. ASCII코드로 저장됨.
String -> 문자열형. 참조형. "ABCD". 


char ch1 = 'AB'; // 오류
char ch2 = 'A';  // 성공


String st1 = "AB"; // 성공


ASCII코드중에서 문자 0은 48, 9는 57
ASCII코드중에서 문자 A는 65, Z는 90
ASCII코드중에서 문자 a는 97, z는 122


char과 int 자료형은 서로 호환이 가능한 범위를 가진다.


char ch3 = 65; //성공. 'A'가 입력됨.


System.out.printf("%d %n", 65); // 65
System.out.printf("%c %n", 65); // A


String str = "TEST";
System.out.printf("%c %n", str.charAt(0)); //문자열이 저장된 변수명.charAt(문자열위치값) 즉, 여기서는 T 리턴
System.out.printf("%c %n", str.charAt(1));
System.out.printf("%c %n", str.charAt(2));
System.out.printf("%c %n", str.charAt(3));








문제) 대문자로 구성된 4글자짜리 문자열을 입력받고 나서, 소문자로 변경한 다음 출력.
실행 예)
문자열 입력(4자, 대문자)?TEST
입력된 문자열 : TEST
소문자로 변환 : test






자료의 형 변환


1. 자료의 형이 일치하지 않는 경우 원하는 자료형으로 변환할 수 있어야 한다.

2. 묵시적 형변환, 명시적 형 변환
묵시적 형 변환 -> 자동으로 변환시켜 주는 것. 데이터가 원래의 값을 유지하는 것이 가능. 작은 데이터를 큰 자료형에 넣는 경우에 주로 발생.
명시적 형 변환 -> 특정 명령 수행을 통해서 강제적으로 변환을 시키는 것. 데이터가 원래의 값을 유지하지 못하는 경우도 발생.





형 변환의 대표적인 예

문자열형 -> 숫자형, 숫자형 -> 문자열형


int 변수 = Integer.parseInt(문자열형);
double 변수 = Double.parseDouble(문자열형);


String 변수 = String.valueof(정수형);
String 변수 = String.valueof(실수형);


String 변수 = Integer.toString(정수형);
String 변수 = Integer.toBinaryString(정수형);
String 변수 = Integer.toHexString(정수형);


String 변수 = String.format("%d", 정수형);
String 변수 = String.format("%f", 실수형);


char 변수 = 문자열형변수명.charAt(인덱스);






if문


1. 주어진 조건에 따라 분기 방향을 정하기 위하여 사용하는 제어문
2. 기본형식


//조건이 만족되는 경우(true인 경우)만 실행문 실행

if (조건) {

// 실행문;

}


//조건이 만족되는 경우(true인 경우)는 실행문1 실행

//조건이 만족되는 않는 경우(true인 경우)는 실행문2 실행

if (조건) {

// 실행문1;

} else {

// 실행문2;

}


사용 가능 방법

if (조건) {

//실행문1;

} else if (조건2) {

//실행문2;

} else {

//실행문3;

}

-> 다른방법으로 표기하면

if (조건) {

//실행문1;

} else {

if (조건2) {

//실행문2;

} else {

//실행문3;

}




//if, else 구문은 한번만 표기, else if (조건)은 추가 가능.

if (조건) {

//실행문1;

} else if (조건2) {

//실행문2;

} else if (조건3) {

//실행문3;

} else {

//실행문4;

}

-> 위와 같은 상황은 다른 표현으로 사용하기도 합니다. 다만, else 즉 실행문4가 없음.

if (조건1) {

// 실행문1;

}

if (조건2) {

// 실행문2;

}

if (조건3) {

// 실행문3;

}




문제) 세 개의 숫자 중에서 가장 큰 숫자 구하기. 단, if문 사용.
실행 예)
숫자1?XX
숫자2?YY
숫자3?ZZ
입력 받은 숫자 : XX, YY, ZZ
가장 큰 숫자 :  ZZ



문제) 임의의 수를 입력 받아서 짝수, 홀수로 구분해서 출력.
실행 예)
임의의 정수(0 이상)? 
입력받은 숫자 :
구분 : 






문제) 임의의 수 를 입력 받아서 3의 배수, 4의 배수로 구분해서 출력.
실행 예)
임의의 정수(3 또는 4의 배수)?
입력받은 숫자 :
구분 : 3의 배수

혹은

임의의 정수(3 또는 4의 배수)?
입력받은 숫자 :
구분 : 4의 배수

혹은

임의의 정수(3 또는 4의 배수)?
입력받은 숫자 :
구분 : 3의 배수 또는 4의 배수


WRITTEN BY
빨강꼬마

,

- 데이터 타입의 종류
 - 숫자타입: number (정수 및 실수 모두 포함)
          표현범위: number(5) -> -99999 ~ 99999
                    number(3) -> -999 ~ 999
                    number(5,2) -> -999.99 ~ 999.99
                    number(6,3) -> -999.999 ~ 999.999


 - 문자타입
   ①char: 고정형 문자타입
     name char(10) -> name 컬럼에 입력되는 데이터의 크기는 무조건 10Byte로 들어온다. 단, 10Byte가 넘는 데이터는 입력이 불가함.
                          -> 한글의 경우 한글자당 2Byte 영문은 1Byte. (키보드에서 한키로 입력되는 숫자, 영어등은 1Byte. 없는 것은 2Byte)

            ex: '이순신'             -> 10바이트로 고정되서 들어옴
                '김구'               -> 10바이트로 고정되서 들어옴
                '이에리사'           -> 10바이트로 고정되서 들어옴
                '박차고나온애가이뻐' -> 18바이트이므로 입력불가


   ②varchar2: 가변형 문자타입
     name char(10) -> name 컬럼에 입력되는 데이터의 크기는 해당 데이터의 크기만큼 들어온다. 단, 10Byte가 넘는 데이터는 입력이 불가함.

            ex: '이순신'             -> 6바이트로 맞추어 들어옴
                '김구'               -> 4바이트로 맞추어 들어옴
                '이에리사'           -> 8바이트로 맞추어 들어옴
                '박차고나온애가이뻐' -> 18바이트이므로 입력불가

   ③Nchar , Nvarchar2: 크기의 단위가 Byte가 아니라 글자수를 나타냄
            name Nchar(10) -> name 컬럼에 입력되는 데이터의 크기가 유니코드등을 포함하여 글자수 최대 10글자까지 입력됨. 넘으면 당연히 입력 불가

            ex: '이순신'             -> 10개의 글자수로 고정되어 들어옴. -> 20Byte
                '김구'               -> 10개의 글자수로 고정되어 들어옴. -> 20Byte
                '박차고나온애가이뻐' -> 10개의 글자수로 고정되어 들어옴. -> 20Byte
                'John michael'       -> 12개의 글자수(공백포함)이므로 입력불가.
                           
            name Nvarchar2(10) -> name 컬럼에 입력되는 데이터의 크기가 유니코드등을 포함하여 글자수 최대 10글자까지 입력됨. 
                                              넘으면 당연히 입력 불가

            ex: '이순신'             -> 3개의 글자수로 들어옴. -> 6Byte
                '김구'               -> 2개의 글자수로 들어옴. -> 4Byte
                '박차고나온애가이뻐' -> 9개의 글자수로 들어옴. -> 18Byte
                'John michael'       -> 12개의 글자수(공백포함)이므로 입력불가.


 - 날짜타입: date
          date예문:
    select sysdate, current_date from dual;
    select to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss'),
    to_char(current_date, 'yyyy-mm-dd hh24:mi:ss')  from dual;

※ 컬럼명에 숫자가 들어온다 하더라도 가장 앞에 숫자 0이 들어올 수 있는 개연성이 있을 경우 number 형이 아닌 문자형으로 지정하여야 한다
※ 문자는 시작과 끝에 반드시 '을 사용해야 함. 사용하지 않을 경우 숫자로 인식함.


- table에 대한 comment 처리문
comment on table [table명] is '[주석내용]';

- table내 각 column에 대한 comment 처리문
comment on column [table명].[table내 주석처리할 column명] is '[주석내용]';


- 특정 테이블에 있는 각 컬럼에 대한 주석확인 처리문

select column_name, comments
from user_col_comments
where table_name = '[table명]';



- 특정 테이블의 컬럼명과 데이터 타입 조회 명령어

describe [table명];
혹은
desc [table명];



- 특정 테이블 데이터 조회
select * from [table명];



- 데이터 입력하기
insert into [table명] values([column1 데이터], [column2 데이터], ~~~~~~~, [마지막 column 데이터]);




※ insert 명령어로 입력한 데이터는 디스크에 기록되는 것이 아닌 메모리에 기록하는 것. commit으로 디스크에 기록함



- 데이터 변경하기
update [table명] set [변경할 컬럼명1] = [변경할 데이터], [변경할 컬럼명2] = [변경할 컬럼명2] + [변경할 데이터] where [변경대상인 컬럼행] = [변경대상의 컬럼 데이터];



※ where 구문이 없을 경우 모든 행의 해당 컬럼이 변경됨
※ 변경 데이터중, X = X + 200 으로 예를 들면 X컬럼에 있는 값과 200을 합산한 결과 데이터를 최종데이터로 치환한다는 의미임
※ update 명령어로 변경한 데이터는 디스크에 기록되는 것이 아닌 메모리에 기록하는 것. commit으로 디스크에 기록함



- 데이터 삭제하기
delete [table명] where [삭제할 컬럼행] = [삭제할 컬럼행에 있는 열 데이터];




※ delete 명령어로 삭제한 데이터는 디스크에서 삭제하는 것이 아닌 메모리에서 삭제하는 것. commit으로 디스크에서 삭제함.



- commit
메모리에 상주된 데이터를 디스크에 기록하는 명령어
ex: commit;

- rollback
메모리에 상주된 데이터를 삭제하는 명령어
ex: rollback;


WRITTEN BY
빨강꼬마

,