'Java' 태그의 글 목록
본문 바로가기
728x90

Java8

[Java] 문자열 합치기 왜 StringBuilder 인가 왜 StringBuilder 사용할까? java 에서 많은 문자열을 연결하면 많은 중간 문자열 객체가 생성되어 비효율적인 코드가 생성된다고 한다. 이유는 자바에서 String 객체는 변경 불가능하다. 한 번 생성되면 내용을 바꿀 수 없단 뜻이다. 따라서 하나의 문자열을 다른 문자열과 연결하면 새 문자열이 생성되고, 이전 문자열은 가비지 컬렉터로 들어간다. String str= "a" + "b" + "c" + "d" + "e"; str= "ab" + "c" + "d" + "e"; str= "abc" + "d" + "e"; str= "abcd" + "e"; str= "abcde"; 그래서 이러한 메모리 낭비를 위해 StringBuilder를 사용한다. StringBuilder는 변경 가능한 문자열을 만들어주.. 2022. 8. 16.
[Java]문자열 자르기 java에서 문자열 자르는 방법은 3가지가 있다. Substring split tokenizer String Class indexOf() String ex = "123-123"; int idx = ex.indexOf("-"); ​ //결과값 : 인덱스 값 출력 // 3 substring() : 문자열을 인덱스로 자른다. //사용법 String.substring(start) //문자열 start위치부터 끝까지 문자열 자르기 String.substring(start,end) // 문자열 start위치 부터 end전까지 문자열 가져오기 String ex = "123-123"; ex.substring(4); //123 ex.substring(2,4); //3-3 split() : 지정한 문자를 기준으로 문자열을.. 2022. 8. 9.
[Java] 입력 InputStream, Scanner, BufferedReader 비교 InputStream InputStream 의 정의는 This abstract class is the superclass of all classes representing an input stream of bytes. 이 추상 클래스는 바이트의 입력 스트림을 나타내는 모든 클래스의 슈퍼 클래스입니다. 여기서 중요한건 "바이트 입력 스트림"이다. byte 란? 하나의 단위로서 다루는 비트(bit)의 모임. 8비트의 모임을 1바이트라고 한다. Stream 이란? Stream in java A stream is a sequence of objects that supports various methods which can be pipelined to produce the desired result. 스트림(St.. 2022. 7. 26.
[Java] java의 인코딩 Unicode, UTF-8, EUC-KR Unicode 이전 글에서 본 문제점을 해결하기 위해 국제 표준화 기구(IOS)는 표준화작업을 진행하였다. 유니코드는 유니코드 컨소시엄에서 표준을 제정하고, 문자 집합, 문자열 인코딩, 문자열 처리 방식, 문자 정보 데이터베이스 등을 제공한다. 유니코드의 경우 각 나라별로 자신의 언어가 속하고 있는 고유한 공간을 할당받는다. 한글의 경우에는 0xAC00부터 시작하여 11172 자의 공간을 차지한다. 모든 글자는 사전 순서대로 매핑되어있다. 즉, 유니코드는 숫자와 글자 키와 값이 1:1로 매핑된 형태의 코드이다. 저장 효율을 위해 언어에 따라 하나의 문자를 표현하는데 1~4byte를 사용한다. 이로인해 유니코드는 26개국에서 같은 데이터를 공유할 수 있게 되어, 표준 인코딩 기법이 되었다. 이전에 사용하던.. 2022. 7. 22.
[Java] java의 인코딩 ASCII Code, Extend ASCII Code ASCII Code 아스키 코드는 1963년 미국 ANSI에서 표준화한 정보교환용 7비트 부호체계이다. 최상위 비트는 0으로 고정되어있고, 7bit를 사용하여 1Byte로 구성되어있다. 영어 알파벳과 특정 문자에 대해서 숫자와 1:1 매핑을 시켜놓은 것으로 한글을 포함한 다른 언어를 나타낼 수 없다. 그래서 유니코드가 등장했다. Extended ASCII Code ASCII 문자와 추가 문자를 포함하는 8 비트 부호체계이다. 2^8 = 256 개의 문자를 표현할 수 있다. ASCII control charachets : code 00~31 주변 기기들을 제어할 때 사용. ASCII Printable characters : code 32~127 인쇄 가능한 문자로 문자, 숫자, 구두점, 기타 기호 등을 나.. 2022. 7. 19.
[Java] 상수, 리터럴 상수(Constant) = 변하지 않는 변수 리터럴(Literal) = 데이터 그 자체 int a = 123; a는 변수, 리터럴은 123 final int a = 123; int 앞에 final를 붙일 시 a는 상수 java 에서 변수 long 자료형으로 변숫값을 대입할 때 리터럴 값에 접미사 L 을 명시해야 8 byte 할당 한다 변수 float 자료형으로 변숫값을 대입할 때 리터럴 값에 접미사 F 을 명시해야 4 byte 한다. java에서 리터럴은 약21억이 넘어가는 상수가 아닌 이상 그 이하의 수는 기본적으로 4 byte 크기로 스택 메모리 공간(operand stack)에 적재된다. 그럼 java 자료형 중 byte(1 byte), short(2 byte) 같은 경우 4 byte를 가지고 있는.. 2022. 5. 10.
Spring IoC, DI 가 무엇인지 IoC(Inversion of Control) : 제어가 반대로 간다는 개념 IoC는 Spring 에서만 사용되는 개념이 아니며, 프로그래밍 패턴이기 때문에 범용적으로 쓰이며 작게는 객체간에 디자인 패턴으로 크게는 컨테이너, 프레임워크 역활에 적합한 구조이기 때문에 상황에 맞게 사용되는 프로그래밍 모델이다. "IoC : 제어의 역전" 이라는 의미는 말 그대로 메소드나 객체의 호출작업을 개발자가 결정하는 것이 아니라, 외부에서 결정되는 것을 의미한다. 즉, IoC는 객체 생명 관리, 흐름 제어를 제 3자에게 위임하는 프로그래밍 모델이다. 일반적으로 자바 프로그램은 main() 메소드에서 시작해서 개발자가 미리 정한 순서를 따라 객체가 생성되곡 실행된다. 그런데 서블릿은 배포하고 나서 개발자가 직접 제어할 .. 2022. 4. 19.
[Java] 전역(glpbal)변수, 정적(static)변수 *전역 (global) 변수 * class 안의 전체영역에서 사용하는 변수 전역변수 값은 new 를 만나면 초기화 되는데, 최기화 되지 않는 값을 유지하려면 static 변수를 사용하면 된다. 라이프 타임 : 프로그램이 끝날때까지 scope가 없는 곳에서 "int g_test" 선언 다른 파일에서 사용하기 위해서는(다른 파일에서 해당 변수 접근 가능) (C/C++ 에서 가능, JAVA는 불가능) "extern int g_test" 이런식으로 선언하고 사용한다.( 다른 파일의 전역변수를 가져다 사용하는 것은 좋은 방법이 아니다. ) 정적 (static) 변수 : 여러 인스턴스가 공유해서 사용할 수 있는 변수 각 인스턴스는 같은 클래스 기반으로 생성되지만 각각 차지하는 메모리의 공간이 다른 개별 객체로 여기.. 2022. 3. 25.
728x90