JAVA

    [Java] 문자열 비교 ==, equals() 차이점

    [Java] 문자열 비교 ==, equals() 차이점

    예전에 알고리즘을 푸는 도중, String 변수를 무심코 == 연산자를 사용해 비교해 동작하지 않았던 경험이 있다. 물론 equals() 함수를 사용하니 잘 동작했는데, 그동안 이 둘의 차이가 뭔지 정확히 이해하고 있지 않았던 것 같아서 정리하려고 한다. Java에서는 int와 boolean과 같은 일반적인 데이터 타입의 비교는 == 연산자를 사용해서 비교한다. 하지만 String같이 Class의 값을 비교할 때는 == 가 아닌 equals()라는 메소드를 사용하여 비교를 해야한다. 이 둘의 차이는 뭘까? String 변수 생성 시 주소할당 String 변수를 생성할 때는 두가지 방법이 있다. 리터럴을 이용한 방식 new 연산자를 이용한 방식 위 두 가지 방식에는 큰 차이점이 있는데, 리터럴을 사용하게 ..

    [Java] int와 Integer의 차이

    1. int vs Integer int (primitive type, 원시형 타입) int는 변수의 타입(data type, 자료형)이다. 자료형은 ‘data의 type에 따라 값이 저장될 공간의 크기와 저장형식을 정의한 것’ 이다. 자료형은 기본형(primitive type)가 참조형(referece type)으로 나뉨 Integer (wrapper class, 래퍼 클래스) 매개변수로 객체를 필요로 할 때 기본형 값이 아닌 객체로 저장해야할 때 객체 간 비교가 필요할 때 위와 같은 경우, 기본형을 객체 다루기 위해 사용하는 클래스들을 래퍼 클래스라고 함. Integer은 int의 래퍼 클래스 라고 할 수 있음. int vs Integer int : 자료형(primitive type) 산술 연산 가능 ..

    [Java] 스택(Stack)과 큐(Queue) Java로 구현하기

    [Java] 스택(Stack)과 큐(Queue) Java로 구현하기

    이번 포스팅에서는 스택과 큐를 자바에서 구현하는 방법에 대해 설명하려고 한다. 스택(Stack)과 큐(Queue)의 대한 기본적인 개념은 이전 포스팅에 정리 했었다. 자바에서 Stack 사용하기 자바에서 스택은 Stack 클래스를 구현하여 제공하고 있다. Stack st = new Stack(); Stack의 메서드 메서드 설명 boolean empty() Stack이 비어있는지 확인 Object peek() Stack의 맨 위에 저장된 객체를 반환 pop()과 달리 Stack에서 객체를 꺼내지 않음 비었을 때는 EmptyStackException 반환 Object pop() Stack의 맨 위에 저장된 객체를 꺼냄 비었을 때는 EmptyStackException 반환 Object push(Object ..

    [JAVA] static(정적) 변수와 메소드

    static static이란? 정적인, 움직이지 않는다는 뜻으로 Java에서 static 키워드를 사용하는 것은 메모리에 한번 할당되어 프로그램이 종료될 때 해제되는 것을 의미한다. static으로 선언된 메서드나 변수는 자바 버추얼 머신에서 인스턴스 객체의 생성 없이 호출(사용)을 할 수 있다. 자바 프로그램을 실행하면 static으로 지정된 메서드를 찾아서 먼저 메모리에 할당시킨다. static 키워드를 통해 생성된 정적 멤버들은 heap 영역이 아닌 static 영역에 할당된다. static 영역에 할당된 메모리는 모든 객체가 공유하여 하나의 멤버를 어디서든지 참조할 수 있지만 GC(Garbarge Collector)의 관리 영역 밖에 존재한다. 따라서 프로그램 종료 시까지 메모리가 할당된 채로 존..