728x90 전체 글425 [JAVA] 열거형 열거형(Enum) 서로 연관된 상수들의 집합을 의미한다. 여러 상수를 정의하는 기존의 방식은 상수명 중복이라는 문제가 발생한다. 정수 값을 상수에 할당할 때, 같은 정수 값을 할당하게 되면 상수의 이름이 중복이 되어 컴파일 에러가 발생한다. public static final int A = 1; public static final int B = 1; // 상수명 간의 중복 인터페이스를 사용하여 상수를 구분하는 방법으로 해결할 수 있지만, 타입 안정성이라는 새로운 문제가 발생한다. interface i { int A = 1 } interface j { int B = 1 } if (i.A == j.B){...} // 의미적으로 전혀 다른 값이지만, 코드에 문제가 없어 에러가 발생하지 않는다. (타입 안정성이.. 2022. 9. 13. [JAVA] 래퍼 클래스(Wrapper Class) int와 Integer의 차이 int = 자료형(Primitive Type) 변수의 데이터 타입이다. 데이터 타입에는 기본형과 참조형이 있는데 그중에서 int는 기본형에 속한다. 산술 연산이 가능하며, null로 초기화가 불가능하다. Intger = 래퍼 클래스(Wrapper class) 기본형을 객체로 다룰 때 사용하는 클래스를 래퍼 클래스(Wrapper class)라고 하는데 Integer는 int의 래퍼 클래스이다. Unboxing하지 않으면 산술 연산이 불가능하며, null 값을 처리 가능하다. ※ Unboxing이란 래퍼 클래스를 자료형으로 변환하는 것을 말함 Primitive Data Type Wrapper Class double Double float Float long Long int In.. 2022. 9. 13. [JAVA] 형변환 총정리 String to int (문자열에서 인트로) String str = "123"; int i = Integer.palseInt(str); int to String(인트에서 문자열) int i = 123; String str = Integer.toString(i); String to char(문자열에서 문자 추출) String str = "abc"; char c = str.chatAt(0); //str의 index값 입력 char to String(문자형에서 문자열로) char a = 'a'; String str = String.valueOf(a); int to float (정수형에서 실수형으로) int a = 1; int b = 2; int c = 5; float f1 = (a+b+c)/3; // 2.0.. 2022. 9. 12. [JAVA] 추상화와 인터페이스 추상화 기존 클래스들의 공통적인 요소를 모아 정의하는 것으로, 상위 클래스에 위치할수록 추상화의 정도가 높고 하위 클래스에 위치할수록 구체화된다. abstract 제어자 주로 클래스와 메서드를 형용하는 키워드로 메서드 앞에 붙으면 '추상 메서드(abstract method)', 클래스 앞에 붙으면 '추상 클래스(abstract class)'로 부른다. 어떤 클래스에 추상 메서드가 포함되어 있으면 해당 클래스는 자동으로 추상 클래스가 된다. 추상 메서드 메서드 시그니처만 존재하고 바디가 선언되지 않음 추상 클래스 추상 메서드를 포함하는 미완성의 클래스이다. 미완성의 구조이기 때문에 객체를 생성하는 것이 불가능하다. 상속을 받는 하위 클래스에서 오버 라이딩을 통해 각각 상황에 맞는 메서드 구현이 가능하다. .. 2022. 9. 8. [JAVA] 캡슐화 캡슐화 특정 객체 안에 관련된 속성과 기능을 캡슐화하여 데이터를 외부로부터 보호하는 것 목적 - 데이터 보호 - 정보 은닉 패키지 특정한 목적을 공유하는 클래스와 인터페이스의 묶음으로, 하나의 디렉터리라고 할 수 있다. 디렉터리는 하나의 계층 구조를 가지고 있으며 구분은 점(.)으로 한다. 패키지로 클래스를 묶게 되면 클래스 간의 충돌을 방지할 수 있다. import 문 다른 패키지 내의 클래스를 사용하기 위해 작성하며, 일반적으로 패키지 구문과 클래스 문 사이에 위치한다. import 패키지명.클래스명; import 패키지명.*; // 해당 패키지의 모든 클래스를 패키지명 없이 사용 가능 접근제어자 외부로부터 데이터 보호와 불필요한 데이터 노출을 방지한다. 접근제어자 클래스 내 패키지 내 다른 패키지의.. 2022. 9. 6. [JAVA] 상속 상속 기존 클래스를 활용하여 새로운 클래스를 작성하는 것으로, 상위 클래스와 하위 클래스로 나누어 하위 클래스가 상위 클래스의 멤버(필드, 메서드, 이너클래스)를 공유받는다. 포함 클래스의 멤버로 다른 클래스 타입의 참조 변수를 선언하는 것으로, 상속처럼 클래스 재사용이 가능하다. 객체지향 프로그래밍에서는 상속보다 포함 관계를 더 빈번히 사용한다. 상속과 포함 관계 클래스 간의 관계가 '~은 ~이다(IS-A) 관계이면 상속관계 클래스 간의 관계가 '~은 ~을 가지고 있다(HAS-A) 관계이면 포함관계 메서드 오버라이딩 상위 클래스로부터 상속받은 메서드와 동일한 이름의 메서드를 재정의하여 사용하는 것 💡 조건 메서드 선언부(이름, 매개변수, 반환타입)이 상위 클래스의 메서드와 완전히 동일해야 한다. 접근제.. 2022. 9. 6. [JAVA]내부 클래스 내부 클래스(Inner Class) 클래스 내부에 선언된 클래스이다. class A { // 외부 클래스 class B { // 인스턴스 내부 클래스 } static class C { // 정적 내부 클래스 } void method() { class D { // 지역 내부 클래스 } } } 종류 선언 위치 사용 가능 변수 인스턴스 내부 클래스 외부 클래스의 멤버변수 선언 위치 외부 인스턴스 변수, 외부 전역 변수 정적 내부 클래스 외부 클래스의 멤버변수 선언 위치 외부 전역 변수 지역 내부 클래스 외부 클래스의 메서드나 초기화 블럭 안 외부 인스턴스 변수, 외부 전역 변수 익명 내부 클래스 클래스의 선언과 객체의 생성을 동시에 하는 일회용 클래스 외부 인스턴스 변수, 외부 전역 변수 2022. 9. 5. [JAVA] 생성자 생성자(Constructor) 클래스명(매개변수) { // 생성자 내용 } 클래스의 구성 요소로, (new 키워드에 의해) 인스턴스가 생성될 때 호출되는 인스턴스 초기화 메서드라고 할 수 있다. 생성자와 메서드의 차이점 생성자의 이름은 반드시 클래스의 이름과 같아야한다. 생성자는 리턴 타입이 없다. public class Main { public static void main(String[] args) { Constructor C1 = new Constructor(); Constructor C2 = new Constructor("I'm String"); Constructor C3 = new Constructor(2,3); } } class Constructor { Constructor(){ System... 2022. 9. 5. 이전 1 ··· 47 48 49 50 51 52 53 54 다음 728x90