Java에서 문자열을 처리했던 클래스들에 대해서 정리를 해보자. StringJava에서 String은 불변(immutable)한 문자열을 처리하기 위한 클래스이다. 즉, String 객체가 생성되면 그 값은 변경되지 않는다. StringBufferJava에서 StringBuffer는 가변(mutable)한 문자열을 처리하기 위한 클래스이다. 즉, 새로운 문자열을 추가하거나 변경하게 되면 “기존의 객체”로 추가 및 변경이 된다. StringBuilderJava에서 StringBuilder는 가변(mutable)한 문자열을 처리하기 위한 클래스이다.StringBuffer와 마찬가지로 새로운 문자열을 추가하거나 변경하게 되면 "기존의 객체"로 추가 및 변경이 된다.StringBuffer와 다르게 멀티쓰레드 환..
객체비교우리는 자바에서 지원되는 메서드나 혹은 자료구조를 통해서 이미 primitive 변수들을 정렬하는 방법에 대해서는 잘 알고 있다.하지만 객체 즉, 클래스 안에 변수들을 매개로 정렬하는 방법에는 잘 모르는 경우가 있다. 이를 자바에서는 Comparable과 Comparator를 사용하여 정렬한다. 이에 대해서 공부해보자.public interface Comparator { int compare(T o1, T o2);}public interface Comparable { public int compareTo(T o);} Comparable과 ComparatorComparable은 "자기 자신과 매개변수 객체를 비교"하는 것이고, Comparator는 "두 매개변수 객체를 비교"한다는 것이다.Compa..
변수란? 프로그래밍에서 변수란, 값을 저장할 수 있는 메모리상의 공간을 의미한다. 이 공간에서 저장된 값은 변경될 수 있기 때문에 변수라고 불린다. 새로운 값을 저장하면 기존의 값은 사라진다. 변수의 선언과 초기화 변수를 사용하려면 변수를 선언해야한다. int year = 0; int age = 14; 변수 타입 : 변수에 저장될 값이 어떤 타입(type)인지를 지정하는 것 변수 이름 : 변수에 붙인 이름 변수를 선언하면, 메모리의 빈 공간에 변수타입에 알맞은 크기의 저장공간이 확보되고, 앞으로 이 저장공간은 변수이름을 통해서 사용할 수 있게 된다. 변수를 선언한 이후에는 변수를 사용할 수 있으나 위 예제처럼 어떠한 값으로 변수를 초기화(initialization)해야한다. 메모리는 여러 프로그램이 공유..
Java에서 'synchronized' 키워드는 자바 언어의 초기 버전부터 지원되었습니다. 자바는 1995년 처음으로 발표되었고, 그때부터 'synchronized' 키워드를 사용하여 스레드 동기화를 제어하는 데 사용할 수 있었습니다. 따라서 Java 1.0부터 'synchronized' 키워드가 존재하게 됩니다. 그렇다면 'synchronized' 란 뭘까? 'synchronized' 는 Java 프로그래밍 언어에서 스레드 동기화를 구현하는데 사용되는 키워드 입니다. 스레드 동기화는 여러 스레드가 공유자원에 동시에 접근하려는 경우 발생하는 경쟁 조건과 같은 문제를 방지하고 스레드 간의 작업을 조절하기 위해 사용됩니다. 'synchronized' 키워드는 다음 두가지 주요 방법으로 사용됩니다. 메소드 레..
JVM이란 운영체제는 자바 프로그램을 바로 실행할 수 없는데, 그 이유는 자바 프로그램은 완전한 기계어가 아닌, 중간 단계의 바이트 코드이기 때문이다. 이것을 해석하고 실행 할 수 있는 가상의 운영체제가 필요하다. 이것이 자바 가상 기계(JVM : Java Virtual Machine)이다. JVM은 실 운영체제를 대신해서 자바 프로그램을 실행하는 가상의 운영체제 역할을 한다. 자바 프로그램은 확장자가 .java인 파일을 작성하는 것부터 시작된다. 이것을 소스 파일이라고 하는데, 이 소스 파일을 컴파일러로(javac.exe)로 컴파일하면 확장자가 .class인 바이트 코드 파일이 생성된다. 바이트 코드 파일은 JVM 구동 명령어(java.exe)에 의해 JVM에서 해석되고 해당 운영체제에 맞게 기계어로 ..
Garbage Collection(가비지 컬렉션)이란 자바 가상 머신(JVM)에서 자동으로 객체를 제거하여 메모리를 해제하는 프로세스입니다. 자바에서 객체는 동적으로 할당되며, 개발자가 명식적으로 메모리를 해제하지 않으면 더 이상 사용하지 않는 객체가 메모리에 계속 남아있을 수 있습니다. 이러한 객체를 가바지라고 부릅니다. 가비지 컬렉션은 이러한 가비지 객체들을 자동으로 식별하고, 메모리를 자동으로 해제하여 프로그램 실행 중에 메모리 누수를 방지합니다. 자바에서 가비지 컬렉션은 일반적으로 개발자가 관여할 필요가 없으며, JVM이 자동으로 수행합니다. 그러나 가끔씩 가바지 컬렉션의 성능을 최적화하거나 세부적인 제어가 필요할 수도 있습니다. 장점 메모리 누수 방지 : 가비지 컬렉션은 더 이상 사용하지 않는 ..
Java String 객체는 내장 함수를 정리하자. equals() eqauls()는 두개의 문자열이 동일한 값을 가지고 있는지를 비교하는 함수이다. a == b 와는 다르다. a == b는 문자열 변수의 주소값을 비교하는 것이다. 예시) String a = "test"; String b = a; String c = "test"; String d = new String("test"); String e = "wtf"; System.out.println(a==b);//true System.out.println(a.equals(b));//true System.out.println(a==c);//true System.out.println(a.equals(c));//true System.out.println(b=..
자바의 특징을 정리하자. 이식성이 높은 언어 이식성이란 서로 다른 실행 환경을 가진 시스템 간에 프로그램을 옮겨 실행할 수 있는 것을 말한다. 자바 언어로 개발된 프로그램은 소스파일을 수정하지 않아도, 자바 실행 환경(JRE : Java Runtime Environment)이 설치되어 있는 모든 운영체제에서 실행 가능하다. 따라서 자바 언어는 이식성이 높은 프로그래밍 언어이다. 객체지향 언어 객체 지향 프로그래밍(OOP : Object Oriented Programming)이란 프로그램을 개발하는 기법으로 부품에 해당하는 객체들을 먼저 만들고, 이것들을 하나씩 조립 및 연결해서 전체 프로그램을 완성하는 기법이다. 이때 사용되는 언어를 객체 지향 언어라고 한다. 자바는 100% 객체 지향 언어이다. 객체를..