티스토리 뷰
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 1038) 의 근사값 |
double | 8 byte | 0.0 | (1.7 X 10-308) ~ (1.7 X 10308) 의 근사값 |
|
문자형 | 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등)들을 포함
'Programming > JAVA' 카테고리의 다른 글
[JAVA] IntelliJ 설정과 빌드도구(Maven, Gradle) (0) | 2022.08.09 |
---|---|
[JAVA] Stream API (0) | 2022.04.29 |
[JAVA] 함수형 인터페이스 (0) | 2022.04.29 |
[JAVA] Stream 직렬화와 읽고 쓰기 (0) | 2022.04.29 |
[JAVA] 데이터 타입과 문자열 분리 String,StringBuilder .. (0) | 2022.04.26 |