전체 글

전체 글

    [JAVA] 문자열 자르기 · 분리( substring() · split() )

    T1) 문자열 자르기 문자열에서 특정 부분의 문자열을 추출하고 싶다면 substring() 메소드를 사용한다. substring() 메소드에서도 당연히 공백도 포함한다. substring(시작지점) = 시작지점부터 끝까지 반환 substring(시작지점, 끝지점) = 시작지점부터 끝지점 -1 위치까지 반환 public class StringVarTest { public static void main(String[] args) { String str = " 문자문지방문"; System.out.println(str.substring(1));//문자문지방문 System.out.println(str.substring(1, 3));//문자 } } T2) 문자열 분리 문자열에서 특정 문자(구분자)를 기준으로 문자열..

    [JAVA] 문자열 길이 · 문자열 대체

    T1) 문자열 길이 문자열의 길이를 알고 싶다면 length() 메소드를 사용한다. 문자열의 길이는 공백을 포함한다. public class StringVarTest { public static void main(String[] args) { String str = ""; String str1 = "문자열"; String str2 = "문 자 열"; System.out.println(str.length()); // 0 System.out.println(str1.length()); // 3 System.out.println(str2.length()); // 5 } } T2) 문자열 대체 문자열 일부분을 다른 문자열로 대체하고 싶으면 replace() · replaceAll() · replaceFirst()..

    [JAVA] 메모리 사용 영역

    T1) java 명령어로 JVM이 구동된다면 JVM은 운영체제에서 할당받은 메모리 영역(Runtime Data Area)을 어떻게 구분해서 사용할까? 메소드 영역(Method) : 바이트코드 파일을 읽은 내용이 저장되는 영역이다. 클래스별로 상수, 정적 필드, 메소드 코드, 생성자 코드 등이 저장된다. 힙 영역(Heap) : 객체가 생성되는 영역이다. 객체의 번지(주소)는 메소드 영역과 스택 영역의 상수와 변수에서 참조할 수 있다. 스택 영역(Stack) : 메소드를 호출할 때마다 생성되는 프레임(Frame)이 저장되는 영역이다. 메소드 호출이 끝나면 프레임은 자동 제거된다. 프레임 내부에는 로컬 변수 스택이 있다. 프레임 내부에서 기본 타입 변수와 참조 타입 변수가 생성되고 제거된다. 결론 : ==, ..

    [JAVA] 데이터 타입 분류

    데이터 타입(Data Type) 기본 타입(primitive type) 정수 타입 byte char short int long 실수 타입 float double 논리타입 boolean 참조 타입(reference type) 배열 타입 열거타입 클래스 인터페이스 기본 타입으로 선언된 변수는 값 자체를 저장하고, 참조 타입으로 선언된 변수는 *객체가 생성된 메모리 번지를 저장한다. 기본 타입 변수 ( 값 ) 참조 타입 변수 ( 메모리 번지 ) → ( 메모리 번지) 객체 변수들은 스택(stack)이라는 메모리 영역에 생성이 된다. 스택에 저장된 변수들 중 기본타입 변수들은 직접 값을 들고 있지만, 참조 타입 변수들은 참조할 데이터의 번지(주소)값을 저장하고 그 주소를 통해 힙(heap) 영역의 객체를 참조한다..

    [JAVA] Switch Expressions (Java 12이후)

    Switch & Switch Expressions 사용예시 public class SwitchValueExample { public static void main(String[] args) { String grade = "B"; //Java 11 이전 문법 int score1 = 0; switch(grade) { case "A": score1 = 100; break; case "B": int result = 100 - 20; score1 = result; break; default: score1 = 60; } System.out.println("score1: " + score1); //Java 12부터 가능 int score2 = switch(grade) { case "A" -> 100; case "B"..

    [JAVA] NaN과 Infinity

    NaN 과 Infinity 발생 경우 나눗셈 또는 나머지 연산 시 좌측 피연산자가 정수이고 우측 피연산자가 0일 경우 예외(ArithmeticException)가 발생한다. 무한대의 값을 정수로 표현할 수 없기 때문이다. (ex int result = 5 / 0) 좌측 피연산자가 실수 이거나 우측 피연산자가 0.0또는 0,0f이면 예외가 발생하지 않고 연산의 결과는 Infinity 또는 NaN(Not a Number)이 된다. 이 경우 어떤 연산을 하더라도 결과는 계속 같은 것이기때문에 데이터가 엉망이 될 수있으므로 계속해서 연산을 수행해서는 안된다. (ex Infinity + 2 → Infinity, NaN + 2 → NaN) 미리 방지하는 방법 Double.isInfinite() 와 Double.in..

    [CS : 컴퓨터 구조] 명령어 사이클과 인터럽트

    T1) 명령어 사이클 프로그램 속 명령어들은 일정한 주기가 반복되며 실행되는데 이 주기를 명령어 사이클이라고 한다. 인출 사이클 : 실행할 내용을 가장 먼저 CPU로 갖고와야한다 실행 사이클 : 갖고 온 내용을 바탕으로 실행한다. 간접 사이클 : 간접 주소 지정 방식 같이 메모리 접근이 더 필요한 경우 발생하는 사이클이다. ※ 어떤 명령어는 인출과 실행 사이클 만으로 실행되고, 어떤 명령어는 인출, 간접, 실행 사이클을 거쳐 실행된다. T2 ) 인터럽트 인터럽트(interrupt) ; 방해하다, 중단시키다. CPU가 정해진 흐름대로 프로그램을 처리하고 있는 과정 중 흐름을 끊어버리는 것이 인터럽트이다. CPU가 꼭 주목해야할 때 혹은 CPU가 얼른 처리해야할 다른 작업이 생겼을 때 발생한다. T2_sub..

    [JAVA] 문자열 반복 ( String.repeat()활용 )

    문자열을 반복해서 출력하기 for문 활용 class Solution { public String solution(String my_string, int k) { String answer = ""; for(int i=0; i