본문 바로가기

study/java

(36)
자바/JAVA enum 열거 생활코딩 강의를 듣고 적는 글입니다. 자바의 데이터 타입 중 enum, 열거란 것이 있다. enum은 상수들의 집합이다. 그리고 사실상 클래스이다. 다음과 같이 선언한다. enum Fruit{ APPLE, PEACH, BANANA } 위 코드는 다음 코드와 동일하다. class Fruit{ public static final Fruit APPLE = new Fruit(); public static final Fruit PEACH = new Fruit(); public static final Fruit BANANA = new Fruit(); } 열거 타입을 통해 코드를 단순하게 해주고 관련있는 상수끼리 묶을 수도 있다. 또한 enum이라는 키워드를 통해 열거임을 확실하게 해준다. enum은 클래스여서 확장..
자바/JAVA 자신을 호출(생성)하는 객체 생활코딩 강의를 보면서 의문이 들었다. 저렇게 Fruit라는 객체에서 Fruit 타입의 static 객체를 생성한다. 여기서 생긴 의문 : APPLE 변수가 초기화 되면서 Fruit 객체가 생성이 되는데 그렇다면 그렇게 생긴 Fruit 객체가 또 APPLE, PEACH, BANANA 라는 변수가 생기고 각각 또 객체를 만들텐데 그렇다면 오버플로우가 발생해야 되는 거 아닌가? 재귀함수처럼 끝없이 생겨나니까 Java class instance recursive calling I have a very basic java theory question. Why the Employee class calls its self recursively in the following example? class Employee..
자바/JAVA 클래스 패스(Class Path) 생활코딩 자바 강의를 듣고 적는 글입니다. 자바 프로그램을 실행할 때 클래스패스라는 옵션으로 클래스의 경로를 지정해 클래스를 로드할 수 있다. 예를 들어 클래스1과 클래스2가 있다고 하자. 클래스1은 클래스2의 객체를 생성해 프로그램을 실행한다. 그런데 클래스2가 클래스1과 다른 디렉토리에 있다면 어떻할까? 같은 디렉토리로 이동한다. 클래스 패스 옵션을 준다. 1번 방법은 쉽다. 2번 방법을 알아보자. (이미 클래스파일로 컴파일 됐다는 가정 하에) java -classpath "경로후보1:경로후보2:경로후보3" 클래스1.class ==> 클래스1을 실행하는데 필요한 클래스 파일을 경로후보1, 경로후보2, 경로후보3에서 찾아라! 라는 뜻이다. 콜론은 경로 구분자이다. 당연히 클래스1의 경로도 경로 후보에 ..
자바/JAVA 제네릭 생활코딩 강의를 듣고 적는 글입니다. 제네릭(Generic)은 클래스 내부에서 사용할 데이터 타입을 외부에서 정하는 기법이다. 클래스를 선언할 때, 클래스 이름 뒤에 다이아몬드 꺽쇠 안에 데이터 타입 변수를 선언한다. 보통 T라고 한다. 이 T는 정해지지 않은 데이터 타입이다. 그리고 이 클래스로 객체를 만들 때, T의 구체적인 타입을 정할 수 있다.(복수로 사용할 수 도 있다.) 다음과 같이 사용할 수 있다. p1을 생성할 때는 꺽쇠 안에 String을 넣었다. 그러면 p1.info의 타입은 String이 된다. 마찬가지로 p2.info의 타입은 StringBuilder가 된다. class Person { public T info; } Person p1 = new Person(); Person p2 =..
자바/Java 논리, 비트 연산자, 이름을 갖는 반복문 자바 공부하면서 정리 안했던 것들 추가로 정리하는 중. 논리 연산자: true, false에 대해서 연산할 때 사용함 && : AND || : OR ! : NOT 비트 연산자: 비트끼리 연산한다. & : 비트 AND 연산 | : 비트 OR 연산 ^ : 비트 XOR 연산(다르면 1) ~: 비트 반전 NOT --> 부호가 바뀜 > N : N만큼 오른쪽 쉬프트 연산(왼쪽 쉬프트하고 같음.) >>> N: N만큼 비트를 오른쪽으로 이동시키고, 새로운 비트는 0이됨. --> 이건 부호비트까지 쉬프트 됨. 이름을 가지는 반복문 break 는 지금 실행중인 반복문만 빠져나갈 수 있다. 중첩된 반복문에서 다른 반복문까지 빠져나가고 싶을 땐 반복문에 라벨(label)을 붙여 break "라벨명"으로 해당 반복문을 빠져나갈..
자바/Java 컬렉션 강의 정리(2) 이 글은 뉴렉쳐님의 강의를 듣고 정리하는 글입니다. youtube.com/playlist?list=PLq8wAnVUcTFWKOIbvo18pJZ9zsxtXz_-k Object 타입의 배열을 만들면 모든 타입의 데이터를 만들 수 있지만, 반환할 때는, 어떤 타입인지 몰라 사용하기 어렵다. 그래서 "제네릭 Generic"이란 것이 등장했다. 제네릭은 데이터 타입을 일반화한다는(generalize) 것이다. 컬렉션을 만들 때, 자료형이 비어있는 리스트를 만든다. 그리고 타입을 정해준다. -> 자료형마다 컬렉션을 만드는 게 아니다. 이렇게 만든 컬렉션은 데이터를 넣고 뺄 때, 지정된 타입으로 변환해준다. 실제로는 Object 타입의 배열이 선언돼있지만, 지정된 타입으로 바꿔는 것이다. 형식을 전달받기 위해 키워드..
자바/Java 컬렉션 강의 정리(1) 이 글은 뉴렉쳐님의 강의를 듣고 정리하는 글입니다. youtube.com/playlist?list=PLq8wAnVUcTFWKOIbvo18pJZ9zsxtXz_-k 컬렉션이란 데이터를 (배열형태로?) 수집하고 관리해주는 객체이다. 간단히 말해서 가변 길이를 가진 배열이다. 대표적인 기능들은 다음과 같은 것이 있다. .add(value) 요소 추가 .remove(index) 요소 제거 .clear() 전체 삭제 .size() 전체 길이 반환 .get(index) index에 있는 값 반환 그럼 컬렉션은 왜 사용할까? 데이터 관리를 직접할 필요 없다. 제공하는 메소드를 통해 쉽게 값을 추가하고 뺄 수 있다. 배열의 크기를 알아서 늘려준다. 직접 만들어본 컬렉션. 정수형을 담는 컬렉션이다. package app...
자바/JAVA 자바 API 자바 API(Application Programming Interface): 자바에서 제공하는 클래스 및 인터페이스. 라이브러리 라고도 한다. 공식 문서를 통해 제공하는 API에 대한 정보를 얻을 수 있다. Java Platform, Standard Edition Documentation - Releases Java Platform, Standard Edition documentation, current and previous releases docs.oracle.com java.lang 패키지는 자바 프로그램의 기본적인 클래스를 담고 있다. 그리고 import 하지 않아도 java.lang이 제공하는 클래스와 인터페이스를 사용할 수 있다. java.lang이 제공하는 클래스 Object : 자바의 최상..