본 내용은 자바에 대해서 공부한 내용을 간략하게 정리하는 글이다.
목차
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);
}
}
'IT > Java' 카테고리의 다른 글
[Java] 기초 내용정리 (자바의 클래스와 객체, 인터페이스) - ★ (0) | 2023.03.24 |
---|---|
[Java] 기초 내용 정리 (조건문, 반복문) (0) | 2023.03.24 |
댓글