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
빨강꼬마

,

변수



1. 변수는 기억공간에 대한 별칭. 자료형 지정 필수.

-> 별수는 데이터를 저장하기 위한 공간이므로 사전에 미리 준비되어 있어야 한다.


2. 변수명은 식별자 작성 규칙에 맞춰서 작성.

자료형 변수 = 데이터;

자료형 변수 = 구문;


3. 지역 변수와 멤버 변수로 구분. 자동 초기화 지원 여부가 다르다.

지역 변수는 메소드 내부에 선언된 변수.

멤버 변수는 클래스 차원에 선언된 변수.



//자료형의 초기값 예제

//클래스

public class Test10 {

    

    int a; //멤버변수(클래스 안에서 선언하며, 자동초기화 지원)

    int kor, eng, mat; // int 초기값은 0

    double d;  // double 초기값은 0.000000

    char c;    // char 초기값은 '' 즉, 아무것도 없는 빈값

    boolean l; // boolean 초기값은 false

    String str; // 스트링 초기값은 null (참조형 변수 초기값은 null)

    

    //메소드(클래스 선언 후 선언하는 하위개념)

    public void test() {

        int b = 0; //지역변수(메소드 안에서 선언하며, 사용자가 직접 초기화해야함)

        int tot = 0;

        

        System.out.printf("a=%d %n", a);

        System.out.printf("kor=%d %n", kor);

        System.out.printf("b=%d %n", b);

        System.out.printf("tot=%d %n", tot);

        System.out.printf("double=%f %n", d);

        System.out.printf("char=%c %n", c);

        System.out.printf("boolean=%b %n", l);

        System.out.printf("String=%s %n", str);

    }

      

  //main 메소드 -> 프로그램의 진입점

        public static void main(String[] args) {


        Test10 obj = new Test10();

        obj.test(); // 사용자가 지정한 메소드에 실행 명령 호출 부분

}

}




//결과

a=0 

kor=0 

b=0 

tot=0 

double=0.000000 

char=

boolean=false 

String=null 





연산자

◆ 연산자의 종류 ◆

 산술 연산자

 + - * / %

 부호 연산자

 + -

 대입 연산자 (주로 많이 쓰이는 연산자)

 = 복합대입연산자 (+= -= *= /= %=)

 관계 연산자 (주로 많이 쓰이는 연산자)

 > >= < <= instanceof

 등가 연산자

 == != 

 증감 연산자

 ++ --

 논리 연산자

 && || !

 조건 연산자

 ? :

 비트 연산자 (잘 안쓰임)

 & | ^ ~ << >> >>>




1. 산술 연산자 + * * / %


* 곱하기 연산자

/ 나누기 연산자 (몫 연산 가능)

% 나머지 연산자


"예를 들어, 990원에서 500원의 갯수는?" 을 구하려면,

몫 연산을 수행해야 되는데 이때는 나누기 연산에서 정수 나누기 정수 연산을 수행하면 몫으로 정수가 나오는 것을 이용하여 몫을 구할 수 있음.
나누기 연산에서 정수 나누기 실수는 실수임. 즉,

990 / 500 -> 1 (몫)

990 / 500.0 -> 1.98 (나누기)


500원을 뺀 나머지 금액은 아래와 같이 구할 수 있다.

990 % 500 -> 490 (나머지)


정수 값이 저장된 변수 / 정수 값이 저장된 변수 -> 정수 결과 (몫)

정수 값이 저장된 변수 / (double)정수 값이 저장된 변수 -> 실수 결과 (나누기) //(double)은 캐스트 연산자라고 부름




문제) 거스름돈을 환폐단위로 구분해서 출력.
실행예)
금액(10~1000)? 990
총액 : 990원
오백원 1개, 백원 4개, 오십원 1개, 십원 4개





3. 증감 연산자 ++ --


데이터++ -> 데이터는 상수이므로 연산자 사용 불가


변수++ -> 변수는 현재 저장된 값에 대해서 +1 연산을 수행한 후 기존의 값을 덮어쓰기함

변수1++ -> 변수 = 변수1 + 1 과 같은 연산. 변수값을 먼저 사용하고, 더하기 연산은 나중에 함.

++변수1 -> 변수1 = 변수 + 1 과 같은 연산. 더하기 연산을 먼저 수행하고, 변수값을 나중에 사용함.



증감연산자 예

// 클래스

public class Test12 {

    

    //main 메소드. 프로그램 시작점.

    public static void main (String [] args){

        

        //지역 변수. 사용자 직접 초기화필수

        int a = 0;

        

//증감 연산자는 변수의 값을 1씩 증가시킨다.

        System.out.printf("%d %n", a++);

        System.out.printf("%d %n", a);

        System.out.printf("%d %n", ++a);

        System.out.printf("%d %n", (++a + ++a));

        System.out.printf("%d %n", (a++ + a++));

System.out.printf("%d %n", a);

    }

}


//결과

6





4.대입 연산자 = 복합대입연산자


자료형 변수 = 데이터; // 데이터를 변수에 대입시킨다.

자료형 변수 = 구문;   // 구문의 결과 값인 데이터를 변수에 대입시킨다.


자료형 변수 += 데이터;  //-> 자료형 변수 = 변수 + 데이터 를 의미함.

자료형 변수 -= 데이터;  //-> 자료형 변수 = 변수 - 데이터 를 의미함.

자료형 변수 *= 데이터;

자료형 변수 /= 데이터;

자료형 변수 %= 데이터;




5. 관계 연산자 > >= < <= instanceof

-> 결과값은 true, false만 리턴.


a > b     a의 값이 b보다 큰지 확인해주는 연산자. 

a >= b    a의 값이 b보다 크거나 같은지 확인해주는 연산자. 


예제는 조건 연산자 문제와 함께 확인가능.



6. 조건 연산자(삼항연산자) ? :


자료형 변수 = (조건)? 값1 : 값2;

-> 조건의 결과가 true이면 값1, false이면 값2를 리턴.




문제) 두 개의 숫자 중에서 가장 큰 숫자 구하기.

실행 예)

숫자1? X

숫자2? Y

입력 받은 숫자: X, Y

가장 큰 숫자: X



문제) 세 개의 숫자 중에서 가장 큰 숫자 구하기.

실행예문)

숫자1? X

숫자2? Y

숫자3? Z

입력 받은 숫자: X, Y, Z

가장 큰 숫자: X




문제) 세 개의 숫자 중에서 가장 작은 숫자 구하기.

숫자1? X

숫자2? Y

숫자3? Z

입력 받은 숫자: X, Y, Z

가장 작은 숫자: X






7. 등가 연산자 == !=

-> 결과값은 true, false를 리턴.
-> 기본자료형인 경우에만 정상적으로 결과출력가능.


변수 == 데이터 -> 변수의 값이 데이터와 같은지 확인.

변수 != 데이터 -> 변수의 값이 데이터와 같지 않은지 확인.



참조형(String..)인 경우는 == 연산으로 비교 불가. equals() 메소드를 이용했을때만 참조형의 값 비교가 가능함.
참조형은 기본 자료형과는 달리 메모리 내부적으로 참조주소값을 사용하기 때문에 등가 연산자가 사용이 되지 않는 것임.
(equals()는 참조주소값이 아닌 실제 진짜 데이터를 비교하는 메소드)


잠깐!!!    if 구문에 대해


if (조건) {

//조건이 참인 경우 실행할 부분

}else{

//조건이 거짓인 경우 실행할 부분

}




등가연산자의 사용방법 예

import java.io.*;


public class Test16 {

    public static void main (String [] args) throws IOException{

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        

        System.out.print("비밀번호(숫자만 입력 가능)?");

        String password = br.readLine();

        

        /*

        //비교연산을 수행하기 위해서 양쪽의 데이터 타입(자료형)을 일치시켜야 한다.

        if(Integer.parseInt(password) == 1234){

            System.out.println("암호가 맞습니다.");

        }else{

            System.out.println("암호가 틀렸습니다.");

        }

        */

        

        //문자열 자료형을 비교하는 올바른 방법.

        if(password.equals("1234")){

            System.out.println("암호가 맞습니다.");

        }else{

            System.out.println("암호가 틀렸습니다.");

        }

    }

    

}


//결과

비밀번호(숫자만 입력 가능)?1234

암호가 맞습니다.





tips. 메소드에 대한 짧은 설명


Integer 클래스에서 Integer.parseInt(**)에서 parseInt(**)는 클래스의 하위 멤버중 하나인 메소드



WRITTEN BY
빨강꼬마

,