📖
Kyu9's Repo
  • Library of mameil
  • 이슈 경험
    • 20230220_트랜잭션
    • 20230306_캐싱이슈
    • 20230722_테스트코드에서 @Transactional
    • 20230807_deadlock
  • 인턴 스터디
    • Gradle
    • Stream, Optional, 람다식
    • JVM의 메모리 구조, Garbage Collector
    • RESTful API
    • Microservice Architecture
    • HTTP
    • 웹서버란 무엇인가
    • Git Branch
    • TDD
    • Redis을 이용한 캐시
    • Thymeleaf
    • 정리가 필요한 자료들
    • SpringBoot Management
    • 테스크 코드 분할
  • 동아리 스터디
    • 기본 SQL 공부
      • SQL의 기본 개념
      • SELECT 문장을 이용하여 원하는 데이터 출력하기
        • 집합 연산자 사용하기
        • where절에 비교 연산자를 사용해보기
        • SELECT_EX
        • 산술 연산자 사용해보기
      • 단일 행 함수 사용
        • lower/upper 함수 사용하기
        • length함수 사용하기
        • concat함수 사용
        • substr/mid/substring 함수 사용
        • instr함수 사용하기
        • lpad/rpad 함수 사용하기
        • trim/ltrim/rtrim 함수 사용하기
        • replace 함수 사용하기
        • round 함수 사용하기
        • truncate 함수 사용하기
        • mod함수 사용하기
        • ceil함수 사용하기
        • floor함수 사용하기
        • power 함수 사용하기
        • Date fn(날짜 함수)
        • 형 변환 함수
        • 일반함수란
    • a-ha 실습
    • 혼자서 만들어본 게시판
    • AWS 강의
  • 학교 나머지 공부 자료
    • 웹프레임워크(Spring)
      • Spring이란?
      • Webframework1-1
      • Webframework1-2
      • SpringBoot의 특징
      • SpringBoot 생성 방법
      • Spring Data JPA
      • SpringBoot Security
      • SpringBoot HATEOAS
  • 공부 자료들
  • WS 온라인 자바 스터디
    • Week1(JVM은 무엇이며 자바 코드는 어떻게 실행하는 것인가.)
    • Week2(자바 데이터 타입, 변수 그리고 배열)
    • Week3(연산자)
    • Week4(제어문)
    • Week5(클래스)
    • Week6(상속)
    • Week7(패키지)
    • Week8(인터페이스)
    • Week9(예외처리)
    • Week10(멀티쓰레드 프로그래밍)
    • Week11(Enum)
    • Week12(Annotation)
    • Week13(I/O)
    • Week14(Generic)
    • Week15(람다식)
  • 백준문제
    • 입출력과 사칙연산
      • We love kriii(10718)
      • 고양이(10171)
      • 개(10172)
      • A+B(1000)
      • A-B(1001)
      • AxB(10998)
      • A/B(1008)
      • 사칙연산(10869)
      • 나머지(10430)
      • 곱셈(2588)
    • for문
      • 구구단(2739)
      • A+B - 3(10950)
      • 합(8393)
      • 빠른 A+B(15552)
      • N 찍기(2741)
      • 기찍 N(2742)
      • A+B - 7(11021)
      • A+B - 8(11022)
      • 별 찍기 - 1(2438)
      • 별 찍기 - 2(2439)
      • X보다 작은 수(10871)
    • if문
      • 두 수 비교하기(1330)
      • 시험 성적(9498)
      • 윤년(2753)
      • 사분면 고르기(14681)
      • 알람 시계(2884)
      • 오븐 시계(2525)
      • 주사위 세개(2480)
      • 영수증(25304)
    • While문
      • A+B - 5(10952)
      • A+B - 4(10951)
      • 더하기 사이클(1110)
    • 1차원 배열
      • 최소, 최대(10818)
      • 최댓값(2562)
      • 숫자의 개수(2577)
      • 나머지(3052)
      • 평균(1546)
      • OX퀴즈(8958)
      • 평균은 넘겠지(4344)
    • 함수
      • 정수N개의 합(15596)
      • 셀프 넘버(4673)
      • 한수(1065)
    • 문자열
      • 아스키코드(11654)
      • 숫자의 합(11720)
      • 알파벳 찾기(10809)
      • 문자열 반복(2675)
      • 단어 공부(1157)
      • 단어의 개수(1152)
      • 상수(2908)
      • 다이얼(5622)
      • 크로아티아 알파벳(2941)
      • 그룹 단어 체커(1316)
    • 기본수학-1
      • 손익분기점(1712)
      • 벌집(2292)
      • 분수찾기(1193)
      • 달팽이는 올라가고 싶다(2869)
      • ACM 호텔(10250)
      • 부녀회장이 될테야(2775)
      • 설탕 배달(2839)
      • 큰 수 A+B(10757)
      • Fly me to the Alpha Centauri(1011)
    • 기본수학-2
      • 소수 찾기(1978)
      • 소수(2581)
      • 소인수분해(11653)
      • 소수 구하기(1929)
      • 베르트와 공존(4948)
    • 재귀
      • 하노이 탑 이동 순서(11729)
      • 피보나치 수 5(10870)
      • 별 찍기(2447)
    • 브루트 포스
      • 블랙잭(2798)
      • 분해합(2231)
      • 덩치(7568)
      • 체스판 다시 칠하기(1018)
      • 영화감독 슘(1436)
    • 집합과 맵
      • 숫자 카드(10815)
      • 문자열 집합(14425)
      • 숫자 카드2(10816)
      • 듣보잡(1764)
      • 대칭 차집합(1269)
      • 서로 다른 부분 문자열 갯수(11478)
    • 정렬
      • 수 정렬하기(2750)
      • 수 정렬하기 2(2751)
      • 수 정렬하기 3(10989)
      • 통계학(2108)
      • 소트인사이드(1427)
      • 좌표 정렬하기(11650)
      • 좌표 정렬하기2(11651)
      • 단어 정렬(1181)
      • 나이순 정렬(10814)
      • 커트라인(25305)
      • 좌표압축(18870)
    • 백트래킹
      • N과 M - 1(15649)
      • N과 M - 2(15650)
      • N과 M - 3(15651)
      • N과 M - 4(15652)
      • N-Queen(9663)
      • 스도쿠(2580)
      • 연산자 끼워넣기(14888)
      • 스타트와 링크(14889)
    • 이분 탐색
      • 수 찾기(1920)
    • 동적계획법
      • 피보나치 함수(1003)
      • 신나는 함수 실행(9184)
      • 01타일(1904)
      • 파도반 수열(9461)
      • RGB거리(1149)
      • 정수 삼각형(1932)
      • 계단 오르기(2579)
      • 1로 만들기(1463)
      • 쉬운 계단 수(10844)
      • 포도주 시식(2156)
      • 가장 긴 증가하는 부분 수열(11053)
      • 가장 긴 바이토닉 부분 수열(11504)
      • 전깃줄(2565)
      • LCS(9251)
      • 연속합(1912)
      • 평범한 배낭(12865)
      • 더하기(9095)
    • DFS와 BFS
      • 미로탐색(2178)
      • 바이러스(2606)
      • DFS와 BFS(1260)
      • 단지번호붙이기(2667)
      • 전쟁 - 전투(1303)
      • 숨바꼭질(1697)
      • 데스 나이트(16948)
      • 나이트의 이동(7562)
      • 녹색 옷 입은 애가 젤다지?(4485)
      • 음식물 피하기(1743)
      • A->B (16953)
      • 숨바꼭질 3(13549)
      • 숨바꼭질 2(12851)
    • 구현
      • 치즈(2636)
  • 프로그래머스 문제
    • SQL
      • Animal Table - Oracle
      • Animal Table - MySQL
      • Animal Table2 - Oracle
      • Animal Table 3,4 - Oracle
    • Lv1
      • 두 개 뽑아서 더하기
      • 제일 작은 수 제거하기
      • 문자열 내 p와 y의 개수
      • 예산
      • 자릿수 더하기
      • 두 정수 사이의 합
      • 같은 숫자는 싫어
      • 가운데 글자 가져오기
      • 수박수박수박수박수박수?
      • 나누어 떨어지는 숫자 배열
      • 2016년
      • 폰캣몬
      • 서울에서 김서방 찾기
      • 문자열을 정수로 바꾸기
      • 소수 만들기
      • 문자열 다루기 기본
      • 소수 찾기(에라토스테네스의 체)
      • 숫자 문자열과 영단어
      • 이상한 문자 만들기
      • 없는 숫자 더하기
      • 문자열 내림차순으로 배치하기
      • 문자열 내 마음대로 정렬하기
      • 약수의 개수와 덧셈
      • 콜라츠 추측
      • 자연수 뒤집어 배열로 만들기
      • 신규 아이디 추천
      • 비밀지도
      • 크레인 인형뽑기 게임
      • 실패율
      • 로또의 최고 순위와 최저 순위
      • 키패드 누르기
      • 정수 내림차순으로 배치하기
    • Lv2
      • 행렬의 곱셈
      • 영어 끝말잇기
      • 영어 끝말잇기
      • N개의 최소 공배수
      • 피보나치 수
      • 124 나라의 숫자
      • 짝지어 제거하기
      • 프린터
      • 다음 큰 숫자
      • 최댓값과 최솟값
      • 최소값 만들기
      • 숫자의 표현
      • JadenCase 문자열 만들기
      • 오픈채팅방
      • 영어 끝말잇기
      • 멀쩡한 사각형
      • 올바른 괄호
      • 위장
      • 기능개발
      • 더 맵게
      • 스킬트리
    • 완전탐색
      • 모의고사(Lv1)
      • 카펫(Lv2)
      • 소수 찾기(Lv2)
    • 정렬(Sorting)
      • K번째 수(Lv1)
      • 가장 큰 수(Lv2)
      • H-Index(Lv2)
    • 해시(Hash)
      • 완주하지 못한 선수(Lv1)
      • 전화번호 목록(Lv2)
    • 탐욕법(Greedy)
      • 체육복(Lv1)
      • 큰 수 만들기(Lv2)
      • 구명보트(Lv2)
    • 동적계획법(DP)
      • 정수 삼각형(Lv3)
    • 깊이/너비 우선 탐색(DFS/BFS)
      • 타겟 넘버(Lv2)
      • 네트워크(Lv3)
      • 단어 변환(Lv3)
  • 스프링부트 책
    • Day 1
    • Day 2
    • Day 3
    • Day 4
    • Day 5
    • Day 6
    • Day 7
    • Day 8
    • Day 9
    • Day 10
    • Day 11
    • Day 12
    • Day 13
    • Day 14
    • Day 15
    • Day 16
    • Day 17
  • JPA 책
    • 프로젝트 세팅 및 기본설정
    • 영속성 관리 개념
    • 엔티티 매핑
      • 실습 예제
    • 연관관계 매핑 기초
      • 실습 예제
    • 다양한 연관관계 매핑
      • 다대일, 일대다 관계
      • 일대일, 다대다 관계
      • 실습 예제
    • 고급 매핑
      • 상속 관계 매핑
      • @MappedSuperclass
      • 복합 키와 식별 관계 매핑
      • 조인 테이블
    • 프록시와 연관관계 관리
      • 프록시
      • 즉시 로딩과 지연 로딩
      • 영속성 전이, 고아 객체
    • 값 타입
      • 임베디드 타입
      • 값 타입과 불변 객체
      • 값 타입의 비교, 컬렉션
    • 객체지향 쿼리 언어
      • JPQL part1
      • JPQL part2
      • JPQL part3
      • QueryDSL
      • NativeSQL
      • 객체지향 쿼리 심화
    • 응용 애플리케이션
      • 엔티티 설정
    • 스프링 데이터 JPA
      • 공통 인터페이스
  • Kotlin In Action
    • 코틀린의 특징
    • 코틀린의 기초
    • 함수 정의와 호출
    • 클래스, 객체, 인터페이스
    • 람다 방식
    • 코틀린 타입 시스템
    • 연산자 오버로딩과 기타 관례
    • 고차함수
    • 제네릭스
    • 애노테이션과 리플렉션
    • 코루틴
  • Oracle
    • Oracle 기본
    • Oracle 심화
  • SQL_연습
    • Revising the Select Query
    • Basic Select
    • Advanced Select
    • Basic Select 2
  • SQL 첫걸음(책)
    • Day 1
    • Day 2
    • Day 3
    • Day 4
    • Day 5
    • Day 6
    • Day 7
    • Day 8
    • Day 9
    • Day 10
    • Day 11
    • Day 12
    • Day 13
    • Day 14
    • Day 15
    • Day 16
    • Day 17
    • Day 18
    • Day 19
    • Day 20
    • Day 21
    • Day 22
    • Day 23
    • Day 24
    • Day 25
    • Day 26
    • Day 27
    • Day 28
    • Day 29
    • Day 30
  • 더 자바 코드를 조작하는 다양한 방법
    • JVM 이해하기
    • 바이트코드 조작
    • 리플렉션
    • 다이나믹 프록시
    • 애노테이션 프로세서
  • 더 자바, 애플리케이션을 테스트하는 다양한 방법
    • JUnit5
    • Mockito
    • 도커와 테스트
    • 성능, 운영이슈, 아키텍처 테스트
  • 이펙티브 자바
    • item1 - 생성자 대신 정적 팩토리 메소드를 고려하라
    • item2 - 생성자에 매개변수가 많다면 빌더를 고려하라
    • item3 - 생성자나 열거타입으로 싱글턴임을 보증하라
    • item4 - 인스턴스화를 막기 위해선 private 생성자를 사용하라
    • item5 - 자원을 직접 명시하지 말고 의존 객체 주입을 사용하라
    • item6 - 불필요한 객체 생성을 피하라
    • item7 - 다 쓴 객체 참조를 해제하라
    • item8 - finalizer와 cleaner 사용을 피하라
    • item9 - try-finally 보다 try-with-resources을 사용하라
    • item10 - equals는 일반 규약을 지켜 재정의하라
    • item11 - equals을 재정의하려면 hashCode도 재정의하라
    • item12 - toString을 항상 재정의하라
    • item13 - clone 재정의는 주의해서 진행하라
    • item14 - Comparable을 구현할지 고민하라
  • Elastic Search
    • 강의 Summary
    • Elastic Summary 개념 정리
    • Elastic Summary 적용 정리
  • 토비의 스프링 강의
    • 스프링부트 살펴보기
    • 독립 실행형 서블릿 애플리케이션
  • k8s
    • minikube 설치
    • jenkins 추가
  • Article
    • Choosing the Right MessageBroker
Powered by GitBook
On this page
  • 프리미티브 타입 종류와 값의 범위 그리고 기본 값
  • Primitive type VS Reference type
  • Literal
  • 변수 선언 및 초기화 하는 방법
  • 변수의 스코프와 라이프 타임
  • 타입 변환, 캐스팅 그리고 타입 프로모션
  • 1차 및 2차 배열 선언하기
  • 배열이란
  • 1차원 배열
  • 2차원 배열
  • 타입 추론, var

Was this helpful?

  1. WS 온라인 자바 스터디

Week2(자바 데이터 타입, 변수 그리고 배열)

프리미티브 타입 종류와 값의 범위 그리고 기본 값

  • Primitive type은 JavaVM에서 지원하는 비객체형 타입으로 자바 언어에 내장된 기본 유형

  • 자바는 정수, 실수, 논리, 문자 방식의 Primitive type을 지원한다.

  • stack 메모리에 저장된다.

  • 실제 값을 전달하고 stack영역에 생성, 종료됨

  • 산술 연산이 가능하고 null로 초기화할 수 없다.

  • 종류

    • byte

      • 8비트 크기에 부호 있는 정수

      • 범위 : -128 ~ 127

      • 기본값 0

      • wrapper class : Byte

    • short

      • 16비트 크기에 부호 있는 정수

      • 범위 : -32768 ~ 32767

      • 기본값 0

      • wrapper class : Short

    • int

      • 32비트 크기에 부호 있는 정수

      • 범위 : -2147483648 ~ 2147483647

      • 기본값 0

      • wrapper class : Integer

    • long

      • 65비트 크기에 부호 있는 정수

      • 범위 : -9223372036854775808 ~ 9223372036854775807

      • 기본값 0L

      • wrapper class : Long

    • float

      • 32비트 크기에 실수

      • 기본값 0.0f

      • 부동소수점 방식으로 메모리에 저장

      • wrapper class : Float

    • double

      • 64비트 크기에 실수

      • 부동소수점 방식으로 메모리에 저장

      • 기본값 0.0d

      • wrapper class : Double

    • boolean

      • true, false의 두 가지 값을 가지는 논리형

      • 참/거짓 상태를 판별하기 위한 간단한 flag로 boolean이 사용됨

      • 1bit의 정보로 표현하지만 사용하는 메모리의 크기는 미정임

      • 기본값 false

      • wrapper class : Boolean

    • char

      • 16비트 유니 코드 문자

      • 범위 0 ~ 65535 or ' u0000' ~' ufff'

      • 기본값 : '\u0000'

      • wrapper class : Charater

  • wrapper class : 산술 연산이 불가능하고, null값으로 초기화할 수 있다.

    • 왜?

      • 매개변수로 객체가 요구되는 경우

      • 기본형이 아닌 객체로 저장을 해야하는 경우

      • 객체간의 비교가 필요한 경우

Primitive type VS Reference type

자바의 자료형은 위 두 가지 타입으로 나뉠 수 있고 primitive type은 기본형이라고 불리우고, reference type은 참조형으로 불리운다.

  • Primitive type

    • 비객체 타입

    • Null을 가질 수 없는 형태

    • 자료의 실제 값이 변수에 저장되는 형태임

  • Reference type

    • 기본적으로 java.lang.Object을 상속받는다.

    • 선언한 자료형이 기본형이 아닌경우 참조형이다.

    • 변수에 값을 저장하는 형태가 아니라 값이 저장된 장소를 가리키는 형태

Literal

소스 코드 내에 직접 입력된 값을 의미한다. = 변수 초기화 시 저장할 값에 해당

  • 정수 : byte, char, short, int, long에 저장

  • 실수 : float, double에 저장

  • 문자 : ' '로 묶인 텍스트, 이스케이프문자()

  • 논리 : boolean에 저장

변수 선언 및 초기화 하는 방법

  • 변수 초기화 : 변수를 선언하고 처음으로 값을 저장하는 것을 변수 초기화라고한다.

    • 멤버변수는 초기화 하지 않아도 변수의 타입에 맞는 기본값으로 초기화가 이루어지지만 지역변수는 사용하기 전에 반드시 초기화 필요함

  • 멤버변수를 초기화하는 방법

    • 명시적 초기화 : 변수를 선언을 함과 동시에 초기화하는 방법

    • class Car{
          int door = 4;//기본형 변수의 초기화
          Engine engine = new Engine();//참조형 변수의 초기화
      }
    • 초기화 블럭 : 메소드에서와 같이 조건문, 반복문, 예외 처리 구문등 자유롭게 이용이 가능하고, 초기화 작업이 복잡할때 사용한다.

      • 클래스 초기화 블럭 : 클래스 초기화시 사용, 클래스가 처음 메모리에 로딩될 떄 수행

      • 인스턴스 초기화 블럭 : 인스턴스 변수를 초기화하는데 사용, 생성자와 같이 인스턴스가 수행될 때 수행, 인스턴스 초기화 블럭이 생성자보다 먼저 수행

  • 멤버변수의 초기화 시기와 순서

    • 클래스 변수

      • 초기화 시점 : 클래스가 처음 로딩될때만

      • 초기화 순수 : 기본값 -> 명시적 초기화 -> 클래스 초기화 블럭

    • 인스턴스 변수

      • 초기화 시점 : 인스턴스가 생성될 때마다 각 인스턴스별로 초기화

      • 초기화 순서 : 기본값 -> 명시적 초기화 -> 인스턴스 초기화 블럭 -> 생성자

    • class Test{
          //명시적 초기화
          static int a = 1;
          int b = 2;
      
          //클래스 초기화 블럭
          static{
              a = 2;
          }
      
          //인스턴스 초기화 블럭
          {
              b=2;
          }
      
          //생성자
          Test(){
              b=3;
          }
      }

변수의 스코프와 라이프 타임

  • 변수의 Scope : 프로그램 상에서 사용되는 변수들은 그 변수가 사용 가능한 범위를 갖게된고 변수가 선언된 블럭이 그 변수의 사용범위가 된다.

    종류로써는 3가지 종류의 변수가 있다.

    • 지역변수

      • 메소드 내부에서 선언한 변수이고, 해당 메소드 밖에서는 사용할 수 없다.

      • 클래스가 메모리에 올라갈때 생성된다.

      • 함수를 호출하게되면 스택 메모리에 생성되게 되고 해당 함수가 종료하면 스택이 사라지게 되면서 그 안에 있던 변수들은 사라지게 되면서 지역 변수는 사용할 수 없게 된다.

      • 지역변수는 변수의 이름이 같아도 각각 다른 변수로 인식하게 된다.

      • public class Scope{
            //멤버 변수
            int a = 25;
        
            //밖에서 a라고 선언해도 f1, f2에서도 a로 선언해서 변수 사용이 가능하다.
            public void f1(){
                    //f1의 지역변수 
                    int a = 10;
                    System.out.println(a);//10
            }
            public void f2(){
                    //f2의 지역변수 
                    int a = 15;
                    System.out.println(a);//15
            }
            public static void main(String[] args){
                    Scope s = new Scope();
                    s.f1(); //10
                    s.f2(); //15
                    int a = 20;
                    System.out.println(a); //20
                    System.out.println(s.a); //25
            }
        }
    • 멤버변수

      • new 키워드로 인스턴스를 생성해야 사용할 수 있다.

      • Heap 메모리에 생성되게 되며 멤버 변수는 해당 클래스의 메소드에서 사용 가능하다.

      • 만약 public으로 설정되어있다면, 같은 패키지의 다른 클래스들도 사용이 가능

      • 만약 private으로 설정되어있다면, 다른 클래스에서의 접근이 제한되고 만약 다른 클래스들이 사용하고 싶다면 getter / setter 함수를 통해서 접근하면 된다 = 데이터의 보안성이 보장된다.

    • static 변수

      • 프로그램 실행시, 클래스를 메모리에 로드했을 때부터 생성된다.

      • new키워드로 인스턴스를 생성하지 않아도 사용가능

      • 메모리(stack, heap, data)부분에서 data부분에 생성되게 된다.

      • 메모리에 로드해서 사용하기 때문에 속도도 빠르지만 프로그램이 종료되기 전까지는 살아있다(그만큼 시스템의 메모리가 줄어든다)

      • 순서 : 프로그램 실행 -> 클래스 로드(static 생성) -> 인스턴스 생성

      • 정적 변수라고도 불리우고 클래스에 하나밖에 없기 때문에 클래스 변수라고도 불리움

타입 변환, 캐스팅 그리고 타입 프로모션

  • 타입 변환에는 두 가지 종류가 있음

    • 자동 타입 변환

      • 프로그램 실행 도중에 자동으로 타입 변환이 일어난다.

      • 작은 크기를 가지는 타입이 더 큰 크기의 타입으로 저장되었을때 발생함

      • 타입별 크기 순서

        • byte(1) < short(2) < int(4) < long(8) < float(4) < double(8)

      • 음수가 저장될 수 있는 byte, int 등의 타입은 char 타입으로 자동 타입 변환할 수 없음

    • 강제 타입 변환

      • 큰 크기의 타입을 작은 크기의 타입으로 자동 타입 변환은 불가능

      • 하지만 강제로 잘라서는 가능하긴 하다.

      • 강제 타입 변환에서는 입력값에 대해서 변환시, 값의 손실이 일어나지 않도록 주의, 값이 보존할 수 있는지 확인할 필요가 있음

      • 연산 시 자동 타입 변환 정리

        • 정수-실수 => double

        • 정수-정수 => int

        • 실수-실수 => double

        • 큰 타입-작은 타입 => 큰 타입

  • Casting : 특정 자료형을 다른 자료형과 호환되게 다른 자료형으로 변환하는 연산자

    • boolean제외한 기본형들은 서로 형변환이 가능하다.

    • primitive-reference간에는 서로 형변환이 불가능하다.

    • 값의 범위가 작은 타입에서 큰 타입으로의 변환은 생략가능

  • type promotion

    • 자바에서는 표현식에 적용되는 type promotion 규칙들이 있다.

      • 모든 byte, short, char들은 int형으로 변경된다.

      • 피연산자의 타입에 따라서 변경되서 계산된다.

1차 및 2차 배열 선언하기

배열이란

  • 같은 타입의 변수들로 이루어진 유한 집합

  • 배열을 구성하는 각각의 값을 element라고 하며 배열에서의 위치를 가리키는 숫자를 index라고 한다.

  • 인덱스는 항상 0부터 시작하며 0을 포함한 양의 정수로 구성된다.

1차원 배열

  • 선언

    • 타입[] 배열이름;
      or
      타입 배열이름[];
    • 타입은 배열 요소(element)로 저장되는 변수의 타입을 명시

    • 배열 이름은 배열이 선언된 후에 배열에 접근하기 위해서 사용됨

    • 만약 배열의 길이보다 적은 수의 배열 요소를 초기화하게 되면, 나머지는 배열의 타입에 맞게 자동으로 초기화

      • char - '\u0000'

      • byte, short, int - 0

      • long - 0L

      • float - 0.0F

      • double - 0.0 or 0.0D

      • boolean - false

      • 배열, 인스턴스 - null

2차원 배열

  • 배열의 요소(element)으로 1차원 배열을 가지는 배열

  • 선언

    • 타입[][] 배열이름;
      or
      타입 배열이름[][];
      or
      타입[] 배열이름[];
  • 예제

    public class Array {
        public static void main(String[] args) {
            int[][] arr = new int[2][3];
    
            int k =10;
            for(int i=0;i<arr.length;i++){
                for(int j=0;j<arr[i].length;j++){
                    arr[i][j] = k;
                    k = k + 10;
                }
            }
    
            for(int i=0;i<arr.length;i++){
                for(int j=0;j<arr[i].length;j++){
                    System.out.println(arr[i][j] + " ");
                }
                System.out.println();
            }
        }
    }
  • 배열의 선언과 동시에 초기화하는 방법

    • 타입 배열이름[열][행] = {
          {배열요소[0][0], 배열요소[0][1], ...},
          {배열요소[1][0], 배열요소[1][1], ...},
          {배열요소[2][0], 배열요소[2][1], ...},
          ...
      };
  • 가변 배열

    • 열의 길이를 명시하지 않음으로써, 행마다 다른 길이의 배열을 요소로 저장할 수 있음

    • int[][] arr = new int[3][];
      arr[0] = new int[2];
      arr[1] = new int[4];
      arr[2] = new int[1];
      //행을 생략했기 때문에 행마다 다른 길이의 배열을 저장할 수 있는 배열생성됨

타입 추론, var

  • 타입 추론이란 타입이 정해지지 않은 변수의 타입을 컴파일러가 유추ㄹ하는 기능

  • 자바에서의 타입 추론은 제네릭과 람다에 대한 타입 추론을 의미한다.

  • 자바 10부터 타입추론을 지원하는 var 키워드가 추가됨

    • 이 키워드는 local variable임

    • 선언과 동시에 initializer가 필수로 요구됨

    • //java 9이하
      String message = "data";
      //java 10이상
      var message = "data";
    • 다른 사람들과의 공유시 가독성에 대해서 문제가 생길수 있음

      • 위치만 보고 Message에 어떤 타입의 데이터가 할당되는지 모름

PreviousWeek1(JVM은 무엇이며 자바 코드는 어떻게 실행하는 것인가.)NextWeek3(연산자)

Last updated 3 years ago

Was this helpful?