Programming/JAVA

[JAVA] JAVA와 JAVA의 특징?

RosyPark 2022. 4. 29. 08:04

JAVA

0. JAVA의 특징  

- 객체지향 프로그램 언어 중 하나로 썬 마이크로 시스템즈에서 처음 발표

- 이식성이 높은 언어, 서로 다른 실행 환경을 가져도 자바 실행환경만 설치되면 모든 운영체제에서 실행가능

- 객체지향언어 (OPP) 

- 자바 8부터 람다식사용하여 컬렉션 요소를 필터링, 매핑, 집계처리하는게 쉬워짐

- 메모리 자동 관리

- 다양한 애플리케이션 개발

- 멀티 스레드 쉽게 구현 가능

- 속도가 느리고 , 예외처리가 불편 

 

JAVA 8 

- 출시일 :2014년 3월

* LTS와 비 LTS 버전의 차이

- 비 LTS는 업데이트 제공기간이 짧다

- 비 LTS 배포 주기 6개월 .... LTS 배포 주기 3년 

- 주요기능 : 람다 표현식, 메소드 레퍼런스, 스트림 API, Optional <T>

 

 

1. 기본적인 형식

public class Example {

    public static void main(String args[]) {

        System.out.println("Hello world ");
    }
}

 

2. JAVA 명명 규칙 (Naming Conveiton) 

(1) 클래스 이름

- 반드시 대문자로 시작 

 

(2) 메소드 이름

- 소문자로 시작

- 여러단어로 조합될시 Camel 표기법 사용 

- 동사로 시작하는게 보통 

 

(3) 속성 이름

- 소문자로 시작

 

(4) 상수 이름 

- 속성이 변하지 않는 상수의 경우 모든 글자를 대문자로 표현 

- 여러 단어로 구성된 변수 이름이면 단어 사이를 언더바(_)로 구분 

 

3. 데이터 타입 

- 크게 기본형(primitive type) , 참조형(reference type) 2가지로 나누어짐

 

(1)기본형(primitive type)

- 논리형, 문자형, 정수형, 실수형으로 나누어짐

- 값을 직접 표시함  

- 실제 값을 저장하는 공간으로 Stack 메모리에 저장 

- 기본값이 있기 때문에 Null 존재하지 않음. 

 

  Type 메모리 크기 기본값 데이터 표현 범위
논리형 boolean 1 byte  false  true, false
정수형 byte 1 byte 0  -128 ~ 127
short 2 byte 0  -32,768 ~ 32,767
int(기본) 4 byte 0  -2,147,483,648 ~ 2,147,483,647
long 8 byte 0L  -9,223,372,036,854,775,808        ~ 9,223,372,036,854,775,807
실수형 float 4 byte 0.0F  (3.4 X 10-38)
       ~ (3.4 X 10
38) 의 근사값
double 8 byte 0.0 (1.7 X 10-308)
    ~ (1.7 X 10
308) 의 근사값
문자형  char 2 byte '\u0000'   0 ~ 65,535

 

public class Main {

    public static void main(String[] args) {
        byte b=10;
        short s=20;
        int i=30;
        long l=40;
        float f=50.0F;
        double d=60.0D;
        char c='a';
        boolean b2=true;
    }
}   

 

<참조 : Wrapper Class> 

- A Wrapper class is a class which contains the primitive data types (int, char, short, byte, etc). In other words, wrapper classes provide a way to use primitive data types (int, char, short, byte, etc) as objects. These wrapper classes come under java.util package. (출처) 

- Wrapper Class의 역할? primitive data type을 object형으로 바꿔줌 말그래도 객체!!! 

- 이 데이터 형태는 multithreading시 synchronization을 도와줌 

- JDK 1.5부터 도입되어 Autoboxing, Unboxing이 지원되어 반환값이 기본형일때와 Wrapper 클래스일때의 차이가 없어짐 , 하지만 AutoBoxing과 AutoUnBoxing은 Primitive Type과 상응하는 Wrapper Class에만 일어남 

 

 

AutoBoxing

        int a = 100;
        Integer integer = Integer.valueOf(a);
        Integer autoBoxingInteger = 100;

        System.out.println(integer); //100
        System.out.println(autoBoxingInteger); //100

 

AutoUnBoxing <- deprecated in IntelliJ 

       Integer integer2 = new Integer(100);
        int i = integer2.intValue();
        int j = integer2;
        System.out.println(i); //100
        System.out.println(j); //100

 

 

(2) 참조형(reference type)

- 기본형을 제외한 타입들

- 값이 저장되어 있는 주소값을 저장하는 공간으로  Heap 메모리에 저장

- 객체나 배열을 Null 값으로 받으면 NullPointException 발생 

- 배열(Array), 열거, Class, 인터페이스(Interface) 

 

Type example 기본값 메모리크기
배열 (Array) int[] array = new int[7]; Null 4 byte (객체 주소값) 
열거 (Enumeration)  
클래스 (Class) String name = "Rosy"
Student rosy = new Student(); 
인터페이스(Interface)   

 

JVM, JRE, JDK의 차이

JVM - 자바 가상머신(Java Virtual Machine) 

       - 자바 소스코드로부터 만들어지는 자바 바이너리 파일(.class)을 실행

JRE - 자바 실행환경(Java Runtime Environment)

JDK - JRE + 개발을 위해 필요한 도구(javac, java등)들을 포함

 

출처 : https://wikidocs.net/257