▶CodeStates Back-End/Section 1

TIL [0504] Java

휴학생감자 2022. 5. 10. 11:59

Java 자바

객체지향 프로그래밍 언어 중 하나로, 운영체제에 독립적으로 실행이 가능하다는 큰 장점으로 전 세계적으로 많이 쓰이는 언어이다.

 

 

특징

#1. OS에 독립적

JRE(Java Runtime Environment)가 설치되어 있는 모든 운영체제에서 실행이 가능하도록 만들어짐.

JRE는 JVM(자바 가상 머신)과 표준 클래스 라이브러리로 이루어져 있음.

 

#2. 객체 지향 언어(OOP, Object Oriented Programming)

객체지향 프로그래밍 개념을 사용하여, 모든 기능은 객체로 만들어 사용됨.

따라서, 유지보수가 쉽고 확장성이 높음

 

#3. 함수형 프로그래밍 지원

자바 8버전부터 람다식과 스트림을 추가하여, 컬렉션의 요소를 필터링/매핑/집계 처리가 쉬워지고 코드가 간결해지는 장점이 생김.

 

#4. 자동 메모리 관리(Garbage Collection)

자동으로 사용하지 않는 메모리를 가비지 컬렉터가 수거하여 메모리 관리가 편해지고 핵심 코드에 집중할 수 있음.

 

 

 

JVM(Java Virtual Machine)

특정 프로그래밍 언어를 기계가 이해할 수 있는 언어로 옮기는 과정을 컴파일이라고 하며,

자바 코드로 작성한 프로그램을 해석하고 실행하는 과정을 JVM이 수행한다.

즉, OS 위에 JVM을 설치함으로써 운영체제에 독립적일 수 있다.

 

JDK(Java Develoment Kit)

JRE와 개발에 필요한 도구 전체를 말함.

 


 

변수의 타입

기본 타입(Primitive Type)

: 데이터의 실제 값을 저장

 

① 논리형 → boolean

true or false를 값으로 가짐.

 

② 문자형 → char

하나의 문자만 저장 가능함.

 

③ 정수형 → byte, short, int, long

int는 CPU가 가장 효율적으로 처리할 수 있는 타입으로 정수형 중에 주로 사용되며, 

각각 1byte, 2byte, 4byte, 8byte의 크기를 가짐.

 

④ 실수형 → float, double

float은 접미사가 없으면 컴파일 에러가 발생하므로 주로 double을 사용함

 

 

참조 타입(Reference Type)

: 데이터가 저장된 주솟값을 저장 (※ 자바는 참조형 변수 간의 연산이 불가능하다.)

     

- 클래스이름 변수이름;

Ex. Student name = new Student();

객체를 생성하여 해당 주소를 변수에 저장함으로서 초기화함.


 


 

String 클래스

하나의 문자만을 다룰 수 있는 char과 달리 문자열을 다룰 수 있는 타입이다.

다른 타입과 달리 클래스를 통해 다뤄지는데, 이는 클래스가 제공하는 관련 메서드들을 쉽게 사용하기 위함이다.

또, 문자열이 담겨 있는 주소가 변수에 저장된다.

 

선언방식

1. 문자열 리터럴을 대입하는 방법

String string = "안녕하세요";

 

※리터럴, Literal : 문자가 가리키는 값 자체를 의미하여, 컴퓨터 내부에 해당 값 자체가 생성됨.

 

2. new 연산자로 객체를 생성하여 대입하는 방법

String string = new String("안녕하세요");

 

 

< 대표적인 String 메서드 >

charAt(int index)

문자열에서 특정 인덱스에 해당하는 문자를 반환하며,  문자열의 길이보다 큰 인덱스나 음수를 전달하면 오류가 발생함.

 

compareTo(String str) / compareToIgnoreCase(String str)

문자열을 인수로 전달된 문자열과 비교하여 같으면 0, 다르면 1을 반환함.

대소문자를 구분하지 않고 비교하려면 compareToIgnoreCase를 이용해야 함.

 

concat(String str)

두 문자열을 연결하여 새로운 문자열로 만듬.

 

indexOf(int ch) / indexOf(String str, inf fromIndex)

특정 문자나 문자열이 처음으로 등장하는 위치의 인덱스를 반환함.

포함되지 않은 문자열이면 -1을 반환함.

 

trim( )

맨앞, 맨뒤에 포함된 공백을 제거함.

 

toLowerCase( ) / toUpperCase( )

모든 문자를 소문자 또는 대문자로 변환함.

 

length( )

문자열의 길이를 반환함.

 

isEmpty( )

문자열의 길이가 0이면 true, 0이 아니면 false.

 

split(String regex)

인수로 전달된 표현식에 따라 문자열을 나누어 줌.

 

substring(int beginIndex) / substring(int begin, int end)

해당되는 인덱스를 통해 구간을 지정하여 새로운 문자열로 만듬.

 


 

# StringTokenizer 클래스

문자열을 특정 구분자를 기준으로 나누어주는 클래스로, 쪼개진 문자열들을 토큰(token)이라고 한다.

 

countTokens( ) : 남은 토큰의 개수를 반환함.

hasMoreElements( ), hasMoreTokens( ) : 현재 위치 뒤에 하나 이상의 토큰이 있으면 true, 아니면 false를 반환함.

nextElements( ), nextToken( ) : 다음 토큰을 반환하나, 반환형이 각각 Object, String으로 다름.

 

 

# StringBuilder 클래스

여러 개의 문자열을 하나의 객체에 append( ) 메서드를 통해 연결해주는 클래스이다.

출력 시에는 toString( )을 통해 확인할 수 있다.

 

 

# StringBuffer 클래스

생성된 인스턴스는 String클래스로 생성된 것과 달리 값을 변경하거나 추가할 수 있다.

16개(기본) 이상의 문자를 저장할 수 있는 내부 버퍼를 가지므로, 문자열 추가시 공간의 낭비가 없고 속도 효율이 높다.

 

append( ) : 문자열의 가장 뒤에 인수로 전달된 값을 추가함. (*concat( )과 같은 결과지만, 처리 속도가 훨씬 빠르다.)

capacity( ) : 인스턴스의 현재 버퍼 크기를 반환함.

delete( ) / deleteCharAt( ) : 인덱스에 해당하는 부분 문자열을 원래 문자열에서 제거함.

insert( ) : 원래 문자열의 중간에 다른 문자열을 삽입함.

 

 

 

 

 

 

'▶CodeStates Back-End > Section 1' 카테고리의 다른 글

TIL [0509] 배열  (0) 2022.05.12
TIL [0506] 제어문  (0) 2022.05.12
TIL [0503] Git  (0) 2022.05.03
TIL [0502] Linux  (0) 2022.05.03
TIL [0427] HTML, CSS  (4) 2022.04.28