본문 바로가기
IT/Java

[Java] 기초 내용 정리 (자바의 특징, 변수, 주석, 데이터 타입)

by dwoi 2023. 3. 24.

본 내용은 자바에 대해서 공부한 내용을 간략하게 정리하는 글이다.

 

목차

     


    Java

     


    1. Java 언어의 강력한 특징

    1.1. 객체지향언어 - Java

    • 실제 세계를 객체로 모델링해서 만듬
    • 최근 프로그래밍의 주요 트렌드
    • 코드를 재사용하기 쉽고, 협업에 편리함
    • 설계에 대한 어려움

    ex. 절차 지향 언어

    • 시간에 따른 순차적인 처리
    • 고전적인 프로그래밍 방식
    • 컴퓨터의 처리방식과 유사함
    • 유지보수가 어렵고, 상호 협업의 어려움
    • 대표적으로 C언어가 있음

     

    1. 2. Java Virtual Machine

    • 자바로 개발한 코드를 실행하기 위한 가상머신
    • 플랫폼 독립적으로 어디서든 동일하게 동작할 수 있게 함
    •  Write Once, Run Anywhere
    • 메모관리를 쉽게 해줌

     

    1.3. Gargage Collection

    • 메모리 관리를 위한 방법
    • 코드에서 사용하다가 더이상 필요없는 메모리를 자동으로 회수함
    • 메모리 할당에 의한 개발자 실수가 잦아서 만들어진 방식
    • 최근 버전의 자바에서는 G1 GC를 기본으로 채택

     


     

    2. 변수, 주석과 세미콜론

    2. 1. 변수

    • 프로그램에서 사용하는 데이터를 저장함
    • 자바에서 변수는 기본 자료형을 지정함
    • 자료형과 다른 데이터는 변수에 저장할 수 없음
    • 자바에서 사용하고 있는 예약어는 변수 이름으로 사용할 수 없음
    • 영문자, 숫자, 특수문자 중 일부만 사용하여 이름을 정할 수 있음

     

    2.2. 상수

    • 프로그램 실행주기동안 변하지 않는 특별한 변수
    • 기본적으로 변수의 특성은 모두 가지고 있음
    • 자바에서는 private static final 수식어를 붙여서 선언함
    • 일반적으로 대문자와 _를 활용해서 선언
    • 자바에서 사용하고 있약어는 변수 이름으로 사용할 수 없음
    • 특별한 상수 클래스인 enum을 사용하기도 함 -  Java만의 특성

     

    2.3. 주석

    • 프로그램 실행에 영향을 주지 않는 코드
    • 코드의 설명이나 이력을 기록하는 데 사용

     

    2.3.1. 주석의 종류

    - 라인주석 (line comment)
    - 블럭주석 (block comment)
    - Javadoc 주석 (Javadoc comment)

    • 인수인계를 하거나 기능을 명세할 때, 자바 소스 파일들을 문서화 할 일이 있을 수 있는데 이럴때 html 형식으로 설명, 하이퍼링크를 생성해주는 것이 javadoc

     

    2.4. 세미콜론의 역할

    - 글쓰기(작문)을 할 때 마침표(.)의 역할
    - 명령문(statement)의 마무리를 의미함
    - Python처럼 줄바꿈을 문장의 마무리로 인식하는 언어도 있음
    - C언어나 자바처럼 전통적인 언어에서는 특별한 문자로 세미콜론을 사용함

     

    2.5. method의 형식


    - 접근제한자 (public, protected, (default), private)
    - 수식어 (static, final, synchronized)
    - 반환형식
    - 메서드이름
    - 메서드 파라미터
    - { … } 블럭

    private static void test() 
    {
    	main(args null);
    }

    ①. 접근제한자 붙임(private)

    ②. 수식어(static, 정적)

    ③. 반환형식(void, 반환하는 거 없음)

    ④. 메소드, 함수 이름(test)

    ⑤. 메소드 파라미터 : 매개변수

    ⑥. 실행되는 중괄호안에 있는 블럭.

     

    2.6. 명령문의 형성

    - 변수의 정의와 값의 할당
    - 메서드 이름과 파라미터 통해서 실행
    - 반복문, 분기문과 같은 연산

     


     

    3. 자바의 데이터타입

    3.1. 원시타입 (primitive type)

    • 정수, 실수 등 실제 데이터값이 저장된 타입
    • 타입 이름이 소문
    • 즉 Null이 존재하지 않고 기본값이 존재하는게 특징
    종류
    데이터형
    size
    표현 범위
    default value
    논리형
    boolean
    1 bit (?)
    true 혹은 false
    false
    문자형
    char
    2 bytes
    '\u0000' ~ 'uFFFF' (16비트 유니코드 문자 데이터)
    \u0000
    정수형
    byte
    1 byte
    -128 ~ 127
    0
    정수형
    short
    2 bytes
    -32768 ~ 32767
    0
    정수형
    int
    4 bytes
    -2147483648 ~ 2147483647( -21억 ~ + 21억)
    0
    정수형
    long
    8 bytes
    -9223372036854775808 ~ 9223372036854775807(-100경 ~ + 100경)
    0L
    실수형
    float
    4 bytes
    1.4E-45 ~ 3.4028235E38
    0.0f
    실수형
    double
    8 bytes
    4.9E-324 ~ 1.7976931348623157E308
    0.0d

     

    3.2. 참조 타입 (Reference type)

    • 원시 타입을 제외한 나머지 타입을 의미
    • 값이 아닌 메모리 주소 정보를 가지고 있음
    • Null이 존재하고 기본값은 Null
    • 제너릭을 사용할 수 있음.

    3.2.1. 참조 타입의 종류

    Wrapper type
    - Byte, Short, Integer, Long, Float, Double, Boolean, Char

    Object type
    - Class, Array, Enum
    - String
    - LocalDate, LocalDateTime

     

     


     

    4. 형 변환(type casting)

    4.1. 자동 형변환

    • 프로그램 실행 도중에 자동적으로 타입 변환이 일어나는 것을 말함.
    • 작은 메모리 크기의 데이터 타입을 큰 메모리 크기의 타입으로 변환하는 행위

    ex.

    byte a=10; // 정수 10을 byte 데이터 타입의 변수인 a에 저장
    int b=a; // byte 데이터 타입의 변수인 a를 int데이터 타입의 변수인 b에 저장

     

    4.2. 강제 형변환

    • 자동 형변환은 이제 특정 조건을 갖춰야지만 자바에서 자동으로 형변환을 해주는 거지만 강제로 형변환이 필요할 때 강제 형변환을 통해 실시

    ex.1)

    int intVal = 1;
    byte byteVal = intVal;

    위 예제는 int 데이터타입이 byte 데이터타입보다 메모리 크기가 크기때문에 컴파일 에러가 발생

    → int는 4byte짜리인데  byte는 1byte짜리니까.

    이럴 때 다음 코드블럭과 같이 형변환을 진행

    ex.2)

    int intVal = 1;
    byte byteVal = (byte) intValue;

    위와 같이 (byte)를 넣어주면 강제로 형변환 시켜주는 기능이 강제 형변환이다.

     

    4.3. 데이터파싱

    public class HelloWorld
    {
        public static void main(String[] args)
        {
            String numberAsString = "1004";
            int number = Integer.parseInt(numberAsString);
    
            System.out.println(number);
        }
    }

    → 문자열 형태의 데이터 타입을 Integer.paseInt를 통해 문자열을 숫자로 변환해서 나타냄.

     

    5. 접근제한자(Access Modifier)

    • 해당 필드/메소드/클래스에 접근할 수 있는 권한을 통제함
    • public, protected, private, (default)
      • public : 자바 내 모든 객체에 접근 가능
      • protected : 같은 패키지 내의 객체와 해당 객체에서 상속받은 객체와 접근 가능
      • default : 동일한 패키지 내의 객체에서만 접근 가능, 상속자 선언 안할시
      • private : 동일한 객체 내에서만 접근 가능
    • 최대한 통제 가능한 접근제한자로 관리해야 유지 보수가 편함.

     

    6. 문자열 결합

    • StringBuilder
      • StringBuilder 클래스를 활용함
    • StringBuffer
      • StringBuffer 클래스를 활용함
      • Thread-Safe를 지원함
    • + 연산자
      •  + 연산자를 활용함
      • 최근 JDK에서는 +연산자 사용시 StringBuilder를 사용함
    public class HelloWorld{
    public static void main(String[] args) {
            String greeting = "hello";
            String name = "hogeun";
    
            String strVal= new String(new StringBuilder().append(name).append(greeting));
    
            System.out.println(strVal);
    
            }
        }

    댓글