티스토리 뷰

Day 3. 자바의 형변환과 연산자


글을 쓰는 재주가 없어서 그런지,  써놓고 읽어보곤 하는데 제가 봐도 가독성이 정말 떨어지는군요...

그래도 제가 복습한다는 느낌으로 채워나가겠습니다.




-자바의 형변환

: 기본 자료형 변환에서는 대다수가 숫자형만 대상이 된다.

-자바의 연산 : 정수와 정수의 연산은 정수,    실수와 실수의 연산은 실수로 표현된다.

(타입이 다르면, 연산은 같은 타입으로 변환된 뒤에 연산이 일어나게 된다.

- 자동 형 변환이 일어날 때, 자바는 작은 크기에서 큰 크기의 타입으로 변환이 일어남.

ex) 정수 / 실수 = 실수 (정수타입 < 실수타입)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class CastingDemo1 {
    public static void main(String[] args) {
        double num1 = 10;
        System.out.println(num1);
 
        int num2 = 3;
        int num3 = 10;
        System.out.println(num2/num3);    // 정수/정수 = 정수
 
        double num4 = 3.0;
        double num5 = 10.0;
        System.out.println(num4/num5);    // 실수/실수 = 실수
 
        System.out.println(num2/num5);    // 정수/실수 => 실수/실수 = 실수
    }
}
// 자동형변환
// 1. 작은 타입의 값을 큰 타입의 그릇에 담을 때
// 2. 덜 정밀한 타입의 값을 정밀한 그릇에 담을 때
// 3. 연산에 참여한 타입과 연산의 결과가 같은 타입이 되게 할 때
// 4. 연산에 참여한 값의 타입이 서로 다른 경우 더 큰 타입의 값으로 변경될 때
cs


코딩tip!

<메인 메소드> p.15

: JVM이 항상 처음으로 찾는 메소드이다.

  진입점이 되는 메소드이다.

  프로그램이 반드시 가져야되는 메소드이다.

-->    public static void main(String[] args) {}



<연산자>


<산술 연산자>

1
2
3
4
5
6
7
8
9
10
public class OpDemo1 {
    public static void main(String[] args) {
        // 산술연산자 : +, -, *, /, %
        int num1 = 7;
        int num2 = 3;
        
        System.out.println(num1/num2);    // 몫을 계산한다.
        System.out.println(num1%num2);    // 나머지를 계산한다.
    }
}

cs



- % : 나머지 연산자, modular 연산자. (주로 암호학에서 사용)

- + : 프로그래밍에서는 2가지의 기능이 있음.

- 숫자 + 숫자 >> 단순한 덧셈 기능

- 문자열 + 문자열 >> 문자열을 연결하는 기능(이어붙이기) ex) "홍" + "길동" = 홍길동

  문자열 + ??       >> 이어붙이기 ex) "홍" + 10 = 홍10

1
2
3
4
5
6
7
8
9
10
11
12
13
public class OpDemo2 {
    public static void main(String[] args) {
        String str1 = "서울특별시";
        String str2 = "종로구 봉익동";
        String str3 = str1 + str2;
        System.out.println(str3);
    
        String str4 = 3 + 6 + "abc";
        String str5 = "abc" + 3 + 6;
        System.out.println(str4);
        System.out.println(str5);
    }
}
cs

8,9 행을 보면 

8행에서는 3 + 6 + "abc"를 출력하면 9abc가 나오지만,

9행에서는 abc36이 나오게됩니다. 과정을 보면 알 수 있는데요.

"abc" + 3 + 6 ==> abc3 + 6 ==> abc36 (이렇게, 앞에 문자열과 숫자가 먼저 만나서 이어붙이기가 진행되게 되서 그렇습니다.)


<증감 연산자>

<대입 연산자>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public class OpDemo4 {
    public static void main(String[] args) {
        // 대입 연산자 : =, +=, -=, *=, /=, %=
 
        int a = 10;
 
        a = a + 1;
        System.out.println(a);
 
        a = a + 1;    // a의 값과 1을 더한 다음 그 값을 다시 a에 저장한다.
        System.out.println(a);
 
        a += 1;    // a의 값을 1 증가시킨다.
        System.out.println(a);
 
        a -= 1// a의 값을 1 감소시킨다.
        System.out.println(a);
 
        a += 2;
        System.out.println(a);
 
        a*= 2;
        System.out.println(a);
    }
}
cs



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class OpDemo5 {
    public static void main(String[] args) {
        int a = 10;
 
        a++;    //a의 값을 1 증가시킨다.
        System.out.println(a);
 
        ++a;    //a의 값을 1 증가시킨다.
        System.out.println(a);
 
        int b = 100;
 
        b--;    //b의 값을 1 감소시킨다.
        System.out.println(b);
 
        --b;    //b의 값을 1 감소시킨다.
        System.out.println(b);
    }
}
cs

1씩 증가 2씩 증가 3씩 증가

a = a + 1; a = a + 2; a = a + 3;

a += 1; a += 2; a += 3;

a++; 없음 없음



<비교 연산자>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class OpDemo7 {
    public static void main(String[] args) {
        // 비교 연산자 : ==, !=, >, <, >=, <=
        // 비교 연산자의 연산 결과는 항상 true 혹은 false 값이다.
 
        int a = 5;
        int b = 4;
 
        boolean result1 = a == b;
        System.out.println(result1);
        boolean result2 = a != b;
        System.out.println(result2);
 
        System.out.println(a > b);
        System.out.println(a >= b);
        System.out.println(a < b);
        System.out.println(a <= b);
    }
}
cs

a와 b가 같다 > a = b //  a == b

a와 b가 같지 않다 a != b

a가 b보다 크거나 같다 a >= b


<논리 연산자>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class OpDemo8 {
    public static void main(String[] args) {
        // 논리연산자 : &&, ||, ! (AND, OR, 부정)
        // 논리연산자의 연산 대상은 true 혹은 false 값을 결과로 내놓은 식이다.
        // 논리연산자의 연산 결과는 true 혹은 false 값이다.
 
        int year = 2017;
        int distance = 60000;
        
        // 구매기간이 3년이 경과된 경우 혹은 주행거리가 5만km 이상인 경우 유상처리
        boolean result = (2019 - year) > 3 || distance >= 50000;
        System.out.println("유상수리 여부 -> " + result);
    }
}
cs

|| = OR 으로 둘중 하나가 참이면 참

&& = AND 으로 둘다 참이면 참



코딩tip!

* 코드는 응집력이 있어야한다.

  코드는 소설과 같다.

  소설에 이야기의 종류에 따라 문단이 있듯이, 코드도 기능에 따라 들여쓰기, 띄기 등을 사용한다.

(예를 들어, 변수의 선언을 모아서 쓰고, 한줄 띄우고 실행문들을 모아서 쓴다.)



연산자의 설명은 위에 까지 였습니다.

주석(//)이용해서 설명을 적어놨구요. 추가설명은 소스밑에 달아두었습니다.


원리는 다음에 설명해주시기로하고, 지금까지 배운 것들을 통해 간단한 로직을 구현하기위해서

Scanner라는 입력을 받아쓸 수 있는 것을 배웠습니다(흉내만 내는..)


<구매년도와 주행거리를 입력받아서 유상수리여부의 조건에 맞는 지 판단하여 여부를 답하는 프로그램>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import java.util.Scanner;
 
public class OpDemo10 {
    public static void main(String[]args) {
        Scanner scanner = new Scanner(System.in);
 
        int year = 0;    // 구매년도를 담을 그릇
        int distance = 0;    // 주행거리를 담을 그릇
        boolean pay = false;    // 유상수리 여부를 담을 그릇
 
        System.out.println("구매년도를 입력하세요.");
        year = scanner.nextInt();
        System.out.println("주행거리를 입력하세요.");
        distance = scanner.nextInt();
        
        // 구매기간이 3년을 넘거나 주행거리가 50000km를 넘는 경우 유상수리로 판단.
        pay = 2019 - year > 3 || distance > 50000;
 
        System.out.println("=====================");
        System.out.println("구매년도 : " + year + "년");
        System.out.println("주행거리 : " + distance + "km");
        System.out.println("유상수리여부 : " + pay);
        System.out.println("=====================");
    }
}
cs

1행은 Scanner를 쓰기위해 재료의 출처를 달아놓는다고 보시면되고,

5행은 그 재료를 가져온 것이라 보시면 됩니다.

12,14행은 int값으로 입력을 받아서 앞에 변수에 대입한다는 뜻 인데요.

자세한 것은 다음에 Scanner에 대해 배울 때 적어놓겠습니다.



금일은 과제가 있었습니다.

Scanner를 통한 과제인데요. 오늘 배운 연산자들의 응용을 위해서 내주신 것 같습니다.

과제받자마자, 저는 코딩을 끝냈는데 아직까진 이해가 바로바로 되는 것 같아서 다행이네요...


***금일 과제 ***


1. 책의 가격과 구매수량을 입력받아서 총 구매가격을 표시하는 프로그램


2. 고객의 등급(1,2,3,)과 책의 가격과 구매수량을 입력받아서 총 구매가격을 표시하고, 

   고객의 등급이 1등급이고, 구매가격이 10만원이상이면 사은품제공여부를 표시하는 프로그램.

   (* 1등급이 아니면 사은푼 제공 false) 



제가 코딩한 답은 오늘 코딩한 학습내용들고 함께 첨부해두겠습니다!

( 과제 소스파일은 HomeWork01, HomeWork02 입니다.)

day3.zip

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함