Archive

Java Day 5 제어문

|

Java Day 5 제어문


  1. 제어문의 종류
    • 분기문(비교문, 조건문) : if문, switch문
    • 반복문 : for문, while문, d0-while문
    • break문 : 반복문,switch문 내에서 쓰이며 빠져나갈때 쓰임
    • continue문 : 현재 진행되는 반복 회차를 포기하고 다음 회차로 이동
    • 제어문은 서로 중첩이 가능
  2. if문

    • 조건값은 boolean형 참이냐 거짓이냐

    • 수행문이 한 줄이면 생략 가능

    if (score >= 90) grade = "A학점";
    else if (score >= 80) grade = "B학점";
    else grade = "C학점";
    
  3. switch문

    • 조건값은 정수형 혹은 문자형 (long,실수형 사용 불가)
    • break문이 없으면 다음 break를 만나거나 빠져나올 때까지 모든 수행문 실행
    • default문의 위치는 자유 (맨 위 가능, 중간 가능, 생략 가능)
    • 범위를 비교하는 if문에 비해 switch문은 값을 비교, 해당 case의 수행문만 실행하므로 연산 속도가 더 빠르다
    • 자바 7 부터 조건값에 문자열 사용 가능
    String person = "학생";
    switch(person) {
        case "성인" : break;
        case "학생" : break;
        case "아동" : break;
    }
    
  4. for문

    • 초기화식, 조건식, 증감식 복수 가능 ,(쉼표)로 구분
    for (int i=0, j=10; i<=50 && j>=50; i++, j--) {...}
    
    • 초기화식은 왠만하면 int를 쓰자…float 같은 실수형은 애매함
  5. while문

    • fot문은 횟수를 제한, while문은 동작을 제한 (조건식이 true일 동안 반복)
    • 무한루프를 조심하자
  6. do-while문

    • while문과 다르게 do문을 무조건 한 번 실행 후 while문에 진입
    • 사용자의 입력을 제한하기위해 쓰임
  7. continue문

    • 반복문에서만 사용
    for(int i=1; i<=10; i++){
        if(i % 2 == 0) continue; //짝수일 경우 print 찍지 않고 다시 for문으로
       	System.out.println(i); // 홀수만 출력
    }
    

참고 자료


이것이자바다

자바프로그래밍100% 실전가이드

KG아이티뱅크 자바 강의자료

2020-12-08 TIL

|

2020-12-08 난수표현,향상된for문,다차원배열 🍕


  • 오늘 한 것
    1. 학원 숙제 - 제어문 문제 풀이
    2. 학원 비대면 수업 (배열)
    3. 블로그 포스팅 (java day3, day4 정리)
    4. Javascript30 Tutorial day 21 (추후 포스팅 예정)
    5. github.io 약간의 오류 수정

  • 오늘 배운 것

    1. java에서 random 난수 삽입 2가지 방법

      • import java.util.Random; 으로 클래스를 불러온다.

        Random r = new Random(); 객체 생성

        r.nextInt(); 등으로 사용

        r.nextInt(100); 0~100 까지 정수 랜덤값

      • Math.random() 활용

        Math.random() 그냥 쓰면 0.0~1.0 까지의 랜덤값을 출력하므로

        (int)Math.random()*100; 이런식으로 쓰면 0~100 까지의 정수 랜덤값

        활용도는 어떻게 쓰느냐에 따라 무궁무진 !

    2. java 향상된 for문은 연산을 덜 수행하므로 속도가 빠르다.

      • but, 무조건 좋은 것은 아니다!
      • index가 필요할 때는 기존 for문 사용 / 필요 없을때는 향상된 for문 사용
    3. 다차원배열

    int[][] arr;
    arr = new int[2][3]; // [row][column] 2x3의 table이라 생각하자
    //배열에 값을 할당
    arr[0][0] = 1;
    ...
    arr[1][2] = 6;
    

    stack 영역의 배열 arr은 100의 주소값으로 heap 영역의 100번지에 0번째,1번째 두 개의 주소값을 참조하고 있으며, 100번지의 0번째, 1번째는 각각 heap 영역의 200번지, 300번지의 0번째,1번째,2번째의 주소값을 참조하고 있다.

    말로 설명하기 참 어렵다.


  • 내일 할 것
    1. 이것이 리눅스다 Chapter 07 셸 스크립트 프로그래밍 끝내기
    2. Javascript30 Tutorial Day 22
    3. 블로그 포스팅 (Java Day 5, 6)
    4. 시간이 남으면 Javascript Day 1 포스팅

  • 끝으로

아침에 일어나 공부

오후에 학원 수업

밤에 공부

새벽에 블로그 포스팅

오늘의 한 줄 총평 : 24시간이 모자라..


  • 참고 자료

[JAVA] 자바 난수(랜덤숫자) 생성하기

Java Day 4 입출력

|

Java Day 4 입출력


  1. 표준 입출력

    • import java.io.*; (IDE에 따라 자동으로 입력됨)

    • 메소드 뒤에 throws IOEXception 예외 전가 처리를 해야한다

      왜?

      JVM은 한 번 실행이 되면 멈추면 안된다. 커서가 쭉쭉 내려오다가 입출력을 위해 멈추게 되면 JVM이 프로그램을 종료시켜버린다. 따라서 예상이 되는 예외를 처리해주어야한다.

  2. print.in.read()

// read() 1byte입력받음, read(byte[]) 배열로 입력받음, read(byte[], start, length) 시작부터 길이만큼 배열로 받음
int i = System.in.read();

char i2 = (char)System.in.read(); //아스키코드값으로 입력받기 때문에 강제로 형변환을 해줘야 컴파일에러가 안난다.

int i3 = System.in.read() - '0'; //숫자 0의 아스키값이 48이므로 48만큼 빼줘야 숫자가 그대로 나옴
  1. 문자열 입력받기
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String name;
name = br.readLine(); //엔터치기 전까지의 2비트 단위의 문자열을 저장

int score;
score = Integer.parseInt(br.readLine()); //기본적으로 문자열을 입력받으므로 숫자는 형변환을 시켜줘야함
  1. write()
//wirte(int), write(byte[]), write(byte[], start, length)
System.out.write(65); // ---> 'A' 출력
//그러나 안찍혀있다 why? write는 buffer를 이용
//자바에서 버퍼는 무조건 8KB --> 8192byte가 될 때까지 출력을 안함
System.out.flush(); // flush()를 이용하여 버퍼에 저장된 값 출력

byte[] by = {'b','y','t','e'};
System.out.write(by,0,4); // by의 0번째부터 길이 4만큼 출력
//8192byte가 안찼는데 출력이 된 이유는?
//byte[] 바이트배열의 경우에는 Auto-flush 기능이 있기 때문에
//주로 byte단위로 전송을 하는 네트워크에서 사용
  1. 그 밖에 C언어에서 온 printf가 있으나 거~~~의 쓰이지 않으므로 pass…

참고 자료


이것이자바다

자바프로그래밍100% 실전가이드

KG아이티뱅크 자바 강의자료

Java Day 3 연산자

|

Java Day 3 연산자


  1. 연산자란?

    • 자료의 가공을 위해 정해진 방식에 따라 계산하고 결과를 얻기 위한 행위를 의미하는 기호들의 총칭

    • 연산자의 종류와 우선순위

      종류 연산자 우선순위
      최우선 연산자 . [] () 1
      단항 연산자 ! ~ +/- ++/– 2
      산술 연산자 * / % + - 3
      시프트 연산자 « » »> 4
      관계 연산자 < > <= >= == != 5
      비트 연산자 & | ^ 6
      논리 연산자 && || 7
      삼항 연산자 조건? 항1 : 항2 8
      배정 대입 연산자 *= /= %= += -= «= »= »>= &== |= ^= = 9
      후위형 증감 연산자 ++ – 10
      순차 연산자 , (콤마) 11
  2. 최우선 연산자

  • . 접근 연산자, [] 배열 참조 연산자, () 괄호 연산자(괄호로 묶으면 먼저 연산처리) 등
  1. 단항 연산자

    • +/- 부호 연산자 (양수,음수)
    // 부호 연산자의 산출 타입은 int가 된다
    short s = 99;
    short result = -s; // compile error
    // int result = -s; 이렇게 써야함
    
    • ++/– 증감 연산자
    int x1 = 10;
    int y1 = --x1;  //다른 연산이 수행되기 전 피연산자의 값이 1 감소
    System.out.println("x1 = " + x1); // x1 = 9, y1에 대입하기 전 1 감소
    System.out.println("y1 = " + y1); // y1 = 9
    
    int x2 = 10;
    int y2 = x2--;  //다른 연산을 수행한 후 피연산자의 값이 1 감소
    System.out.println("x2 = " + x2); // x2 = 9, y2에 10을 대입하고 1 감소
    System.out.println("y2 = " + y2); // y2 = 10
    
    • ! 논리부정, ~ 비트 부정 (정수형에만 사용 가능, 산출 타입은 int, long은 long에만)
  2. 산술 연산자

    • +, -, *, /, %
    • 정수(byte,short,char,int)의 사칙연산은 int가 나온다. 단, long 제외
    char d, e;
    d = 'a'; //97
    e = 'A'; //65
    int f = d+e; //int가 아닐 경우 compile error
    System.out.println("f의 값 : " + f); //162
    
    • NaN, Infinity 주의
    int a = 5;
    int b = 0;
    int c = a / b; //0으로 나누면 ArithmeticException 예외 발생
    
    int d = 5;
    double e = 0.0 //0에 한없이 가까운 근사치
    double f = d / e; //0에 한없이 가까운 값으로 나누면 Infinity 출력
    double g = d % e; //0에 한없이 가까운 값으로 나눈 나머지 NaN(Not a Number) 출력
    
  3. 시프트 연산자

    • « (Left Shift) 연산자 : 2진수 변환 후 왼쪽으로 숫자만큼 민다. 빈자리는 0으로 채움
    • ’»’ (Right Shift) 연산자 : 2진수 변환 후 오른쪽으로 숫자만큼 민다. 빈자리는 0으로 채움
    • ’»>’ (Unsigned Right Shift) 연산자 : ‘»‘와 같으나 음수일 경우에도 0으로 채움
  4. 관계 연산자

    • <, >, <=, >= 비교 관계 연산자
    • ==, != 항등 관계 연산자
  5. 비트 연산자

    • & (AND) 2진 비트에서 모두 1인 값만 1 출력, ‘ ’ (OR) 2진 비트에서 하나만 1이어도 1 출력, ^ (Exclusive OR) 2진 비트에서 하나만 1인 값만 1 출력
  6. 논리 연산자

    • && (AND) 둘 다 참이어야 참, ‘   ’ (OR) 둘 중 하나만 참이어도 참
  7. 삼항 연산자

    • 조건항 ? 항1 (true) : 항2 (false) 자바스크립트에서 참 많이 쓴다
    int score = 80;
    char grade = (score > 90) ? 'A' : 'B'; //false이므로 B 출력
    
  8. 배정 대입 연산자

    • +=, -=, *=, /=, %=, &=, ‘ =’, ^=, «=, »=, »>=
    • x += i ———> x = x + i 이렇게 풀어서 쓸 수 있다. 실제 연산속도에서는 차이가 없단다.

참고 자료


이것이자바다

자바프로그래밍100% 실전가이드

KG아이티뱅크 자바 강의자료

2020-12-07 TIL Start ! 👍

|

TIL Start ! 👍


  • 오늘 한 것
  1. 학원에서 내준 간단한(?) 숙제 풀이

  2. 학원 비대면 수업(Java 제어문)

  3. 블로그 포스팅(지금까지 배운 것들)

  4. Javascript30 Tutorial day 20 (추후 포스팅 예정)


  • 오늘 배운 것
  1. VM ware tools

학원에서 내준 숙제 중에 이런 문제가 있었다.

VMware를 활용하여 윈도우를 설치하였다. 이 Guest 컴퓨터에 다양한 유틸리티 프로그램을 설치하고 싶다. 이때 Host Computer에서 유틸리티 프로그램을 복사해 와야 한다. 복사하는 작업을 수행하기 위하여 무엇을 해야 하는가?

나는 정답을 ‘iso 변환기를 돌려서 iso 파일을 만들어서 VM ware의 Guest Computer의 CD-Rom에 마운트 시켜 설치한다.’ 라고 적었다. 정답은 VM ware tools를 설치하면 끝나는 간단한 것이었다. 그냥 Host Computer에 있는 프로그램을 드래그해서 Guest Computer에 갖다 놓으면 된단다.

다음에 linux 공부 할 때 써봐야겠다.

  1. JAVA에서 실수형 자료의 기본은 double

정수형 자료의 기본이 int인 것처럼 실수형 자료의 기본은 double임. 이건 뭐…

  1. 정수의 사칙연산은 정수가 나온다
short s1 = 2;
short s2 = 4;
short s3 = s1 + s2;
System.out.println("s3 = " + s3);
// 정수의 사칙연산은 int이므로 s3의 short를 int로 바꾸지 않으면 compile error가 남.

이 부분은 당연하게 마치 들숨 날숨을 쉬듯이 몸에 익혀야하지만 자칫하면 간과하고 넘어갈 수 있어서 주의깊에 봐야함…

시험에서 함정으로 나올 가능성이 다분하다.


  • 내일 할 것

이것이 리눅스다 Chapter 07 셸 스크립트 프로그래밍 끝내기

Java 제어문 문제 풀기 (feat.숙제)

Javascript30 tutorial day 21 (시간되면 22까지?)

블로그 포스팅(지금까지 배운 것들)


  • 끝으로

블로그를 빨리 시작했어야했는데.. 지금까지 배운 내용들 정리하고 포스팅하는데만 시간이 꽤 걸릴 것 같다. 그렇다고 느긋하게 하다보면 새로운 내용들이 차곡차곡 쌓일테니 빨리 쳐내야한다. 이 참에 확실히 내껄로 만들면서 제대로 공부한다고 생각해야겠다.😒

오늘의 한줄 총평 : 정리의 필요성