🥕
TIL
  • [TIL] Studying tech / computer science knowledge
  • KeyMap
  • 알고리즘
    • 복잡도 계산 ( Computational Complexity )
    • DisjointSet-unionFind
    • Bellman-ford Algorithm
    • Dijkstra's Algorithm
    • DP ( Dynamic Programming , 동적 계획법 )
    • 플로이드-워셜 알고리즘 (Floyd-Warshall algorithm)
    • Kruskal's Algorithm
    • 최장 증가 수열 (Longes Increasing Subsequence)
    • Prim's Algorithm
    • 정렬
    • 시간복잡도 와 공간복잡도 ( Time Complexity & Space Complexity )
    • Topological Sort (위상 정렬)
  • 책 읽고난 후 요약
    • 프로그래밍 대회에서 배우는 알고리즘 문제해결 전략
    • cleancode
    • 도메인 주도 설계로 시작하는 마이크로서비스 개발
    • 오브젝트
  • CDC
    • debzium
    • kafka
  • 개발 상식
    • asciidoctor
    • 컴파일러
    • ELK 스택
    • 엔디안
    • git
    • Gitmoji
    • 테스트 종류
    • 라이브러리와 프레임워크
    • 정규 표현식
    • REST API
    • 동기와 비동기 / Blocking과 NonBlocking
    • Transaction Script와 Domain Model
    • 디자인 패턴
      • 행동 패턴
      • 객체 생성 패턴
        • 추상 팩토리 패턴
        • 빌더 패턴
        • 팩토리 메서드 패턴
        • [생성 패턴] 프로토 타입 (Prototype Parttern)
        • 싱글톤
      • 구조 패턴
        • 어댑터 패턴
        • 브릿지 패턴
        • 컴포짓(Composite) 패턴
        • 데코레이터
        • 프록시
    • refactoring
      • 중복 코드
      • 전역 데이터
      • 긴 함수
      • 긴 매개변수 목록
      • 가변 데이터
      • 이해하기 힘든 이름
  • 자료구조
    • AVL Tree
    • Splay Tree
    • aaTree
    • array-list
    • 자료구조 시간/공간 복잡도
    • 그래프
    • 힙
    • Red Black Tree
    • stack-queue
    • 트리 ( Tree )
  • DevOps
    • MSA
    • Kubernetes
      • AccessingAPI
      • controller
      • dashboard
      • kubernetes
      • object
      • pod
      • service
      • volume
  • Java
    • 어노테이션
    • 제어문
    • 데이터 타입
    • Enum
    • jvm
    • 연산자
    • thread
    • Java8
      • CompletableFuture
      • Date/Time
      • 어노테이션과 메타스페이스
      • 인터페이스
      • 람다식
      • Optional
      • 스트림
  • JavaScript
    • moduleProject
    • webpack-babel
    • 코어 자바스크립트
      • array
      • 함수 바인딩
      • 데코레이터와 포워딩
      • Class
      • 비교 연산자
      • Date 내장 객체
      • destructuring-assignment
      • function
      • 함수의 prototype 프로퍼티
      • 가비지 컬렉션 ( Garbage Collection )
      • JSON (JavaScript Object Notation)
      • map-set
      • 내장 프로토타입
      • new연산자와 생성자 함수
      • 객체
      • Object.keys, values, entries
      • 옵셔널 체이닝 '?.'
      • 프로퍼티 플래그
      • 프로퍼티 종류
      • 프로토 타입
      • 호출 스케줄링 ( scheduling a call )
      • scope
      • this
      • type-conversions
      • type
      • 함수의 자료형
      • var_let_const
  • Linux
    • 기본 명령어
    • 파일 종류
    • 리눅스
  • 네트워크
    • 응용 계층 ( Application Layer )
    • 오류 검출과 오류 정정
    • Http
    • Http Header
    • 컴퓨터 네트워크란
    • 네트워크 계층
    • 네트워크 제어 영역
    • 전송 계층 ( Transport Layer )
  • PHP
    • Facade
    • composer
    • scopeResolutionOperator
    • Laravel
      • SocialProvider
      • architecture
      • blade
      • controller
      • db
      • dbArchitecture
      • debug
      • eloquent
      • email
      • event
      • exceptionHandling
      • middleware
      • model
      • modelFactory
      • pagingLoading
      • queryBuilder
      • route
      • scout
      • seeding
      • tntsearch
      • validate
      • view
  • React
    • Next.js
    • React 란?
  • Spring
    • Controller
    • 요청이 들어왔을때 스프링이 처리하는 방법 ( 내부구조 )
    • ConfigurationProperties
    • Entity / DTO / VO
    • Maven
    • Repository와 DAO
    • 스프링 빈
    • Spring Framework
    • MVC 패턴
    • 도메인 입력값 검증
    • Spring Cloud
      • Spring Cloud
      • Eureka
    • Spring Data
      • JPA
      • JPA 어노테이션
      • 엔티티 비교
      • 복합 키와 식별 관계 매핑
      • JPA 예외처리
      • 객체지향 쿼리
      • EntityManagerFactory와 EntityManager
      • JPA 최적화
      • 프록시와 연관관계 맵핑
      • 연관관계
      • 상속관계 맵핑
      • 트랜잭션 범위와 영속성 컨텍스트
      • 데이터 타입
      • MySQL 연결
      • Pageable
    • Spring Project들과 library
      • Custom Serialize
      • Elasticsearch Index API
      • Spring HATEOAS
      • lombok (롬복)
      • Model Mapper
      • Object Mapper
      • Representation Model
      • Spring REST Docs
      • Spring Boot
    • Spring Security
      • Spring Security
      • Authentication
      • Authentication Filter
      • Authorization Filter
      • Filter Chain
      • SecurityContext
      • Spring OAuth2.0
    • Spring Test
      • AssertJ
      • Junit5
      • JunitParams
      • Mock Object
  • DataBase
    • ALIAS
    • CONCAT
    • CTE
    • Group By
    • HAVING
    • IFNULL
    • 인덱스
    • JOIN
    • ORDER BY
    • ROLLUP
    • SELECT
    • SELECT DISTINCT
    • SQL
    • WHERE
  • Web 상식
    • OAuth
    • WAS
    • HTTP통신 기반 인증
    • 브라우저
    • CSR 과 SSR
    • HTTPS
    • Web
Powered by GitBook
On this page
  • 1. 조건문
  • Switch
  • if문
  • 2. 반복문
  • for
  • for-each문
  • Iterator
  • while
  • 3. 분기문
  • break
  • continue
  • return
  • live-study 대시보드 만들기
  1. Java

제어문

1. 조건문

Switch

특정 데이터의 값에 따라 수행할 작업을 선택하는 구문으로 switch를 사용한다.

일반적인 사용법은 C/C++와 다르지 않다.

public class example {
    public static void main(String[] args) {
        String select = "ORANGE";
        String fruit;

        switch(select){
            case "APPLE" :
                fruit = "apple";
                System.out.println("사과");
                break;
            case "BANANA" :
                fruit = "banana";
                System.out.println("바나나");
                break;
            case "ORANGE" :
                fruit = "orange";
                System.out.println("오렌지");
                break;
            default:
                fruit = "default";
                System.out.println("default");
                break;
        }
        System.out.println(fruit);
    }
}

switch() 매개변수에 데이터 값을 입력하고 case : 를 이용해 값에 따라 구문을 구분하면 된다.

  • String이나 ,Integer과 같은 Wrapper타입이 올 수 있다.

  • case의 값에는 리터럴 이나 상수가 와야 하고 중복해서는 안된다.

Java 12버전 이후에 case ->를 이용하여 작업할 구문을 작성할 수 있게 되었고 break를 생략이 가능해졌다.

또한, ->와 yield를 사용하여 Switch도 값을 반환할 수 있게 되었다. case에 따라 특정 변수의 값을 바꾸는 경우에는 위의 코드와 같이 외부의 변수에 값을 할당해주는 방법으로 비슷한 코드를 반복작성해야하는 단점이 존재했는데 쉽게 값을 바꿀 수 있게 되었다.

public class example {
    public static void main(String[] args) {
        String select = "ORANGE";
        String fruit;

        fruit = switch(select){
            case "APPLE" -> {
                System.out.println("사과");
                yield "apple";
            }
            case "BANANA" -> {
                System.out.println("바나나");
                yield "banana";
            }
            case "ORANGE" -> {
                System.out.println("오렌지");
                yield "orange";
            }
            default -> {
                System.out.println("없음");
                yield "default";
            }
        };
        System.out.println(fruit); //orange
    }
}

yield는 case문에서 키워드로 사용되지만 변수 명으로 사용이 가능하다.

int yield = 10; //error가 나지 않는다.

if문

if() 괄호안의 오는 데이터(구문의 반환 값)은 boolean형으로 true일 때 수행하는 문법

int i = 10;
if(i == 1){
    System.out.println("1");
} else if( i > 1 && i < 7) {
    System.out.println("2이상 6이하");
}
else {
    System.out.println("7이상");
}

2. 반복문

for

for(int i=0; i < 10; i++){
    System.out.print(i+ " ");
}

//0 1 2 3 4 5 6 7 8 9

기본 for문은 괄호 안에 구문은 3가지가 올 수 있으며 초기식, 조건 식, 증감 식 으로 제어가 가능하다.

for-each문

for(int i : new int[]{0,1,2,3,4,5,6,7,8,9}){
            System.out.print(i+ " ");
}

//0 1 2 3 4 5 6 7 8 9

조건식이 아닌 변수타입 변수명 : 배열/컬렉션을 입력하면 해당 레퍼런스 데이터의 값을 처음부터 끝까지 조회가 가능하다. (컬렉션에 저장되어있는 요소들을 읽어오기 위한 Iterator를 통해 조회를 한다.)

Iterator

반복문과는 밀접한 관련은 없는 내용일 수 있지만 나온김에 정리하려고 한다.

Collection을 기반으로 각 자료구조들을 조회 하는 데 있어 데이터를 읽는 방법을 동일한 방식으로 가능하게 제공해준다. (다형성)

메서드

  • hasNext() : 다음 요소가 있는지 체크 (있다면 true)

  • next() : 다음 데이터 반환

  • remove() : next()로 읽은 요소를 삭제

배열/컬렉션에 데이터 타입이 명시되어있기 때문에 앞의 변수타입을 var키워드를 사용하여 타입추론도 가능하다.

C++의 for(auto : )구문과 비슷하다.

while

C/C++과 while문은 동일하고 while()괄호안의 조건식이 true이면 반복문을 돌게된다.

3. 분기문

break

기본 switch문에서 쓰인다면 각 case 구문을 중단하기 위한 구문으로 break가 없다면 다음 case가 이어서 실행이된다.

반복문에서 쓰인다면 현재 코드 블럭( {} )에 해당하는 반복문을 탈출한다.

continue

while에서 사용하면 다음 구문을 실행하지 않고 다시 처음부터 반복문을 실행하게 되며 for문에서 사용하면 마찬가지로 다음 구문은 실행하지 않고 처음부터 반복하게 되는데 증감 식을 한번 수행 후 시작한다.

설명이 애매한데 한마디로 반복문 중 conitnue를 만나면 반복문의 가장 끝으로 가는 느낌이다.

return

메서드 안에서 사용하며 메서드의 결과를 반환하는 구문

live-study 대시보드 만들기

https://gist.github.com/gowoonsori/409d7f2b3d79f75bbe566d760502e9db

Previous어노테이션Next데이터 타입

Last updated 3 years ago