전체 글 57

[JAVA] 상속&super&오버라이딩

상속이란? 자바에서 상속이란 부모클래스와 자식 클래스 간의 관계를 의미하는데 extend키워드를 사용하여 자식 클래스가 부모클래스의 자원을 이용할 수 있다. 뿐만 아니라 자바는 다중상속을 지원하지 않지만 extend선언가능한 횟수에는 제한이 없다. 위 코드처럼 Pra클래스는 부모 클래스가 되고, ExPra클래스는 Pra클래스를 상속받은 자식클래스가 된다. 또한 @Override어노테이션을 이용하여 부모클래스의 메소드를 사용할 수 있다. 물론 자바의 모든 최상위 클래스는 Object클래스이다. super vs this super키워드 상속관계에서 부모클래스의 필드나 메소드를 참조하기 위해서 사용되는 키워드 Pra클래스 부모클래스와 Pra의 자식클래스인 ExPra가 있는데 ExPra클래스는 부모클래스의 메소..

JAVA 2023.04.12

[JAVA] 메소드(method)란?

메소드(method)란? 어떠한 특정 작업을 수행하기 위한 명령문의 집합 접근제어자 반환형 메소드명(매개변수){ 몸체 구현부 } 메소드형태는 위와 같이 접근제어자(public,private), 반환형(void, String, 객체타입),메소드명,매개변수 인자, 구현부 로 구성되어 있다. 자바를 이용하는 개발자들은 메소드에 대해서 자세히 설명하지 않아도 다들 알거다. 그렇다면 많이들 궁금해하는 함수와 메소드의 차이는 뭘까? 함수 vs 메소드 사실 둘의 역할과 형태는 거의 비슷하다고 할 수 있다. 위 두 코드를 보면 자바에서 흔히 부르는 메소드는 독립적으로 존재하지 않고, 꼭 클래스 안에 속해 있어야한다. 반면에 함수는 굳이 main()함수에 존재하지 않고, 메소드와는 다르게 독립적으로 존재할 수 있다. 이..

JAVA 2023.04.04

[JAVA] this키워드

자바에서 "this" 키워드는 객체 자기자신을 의미한다. 멤버변수와 인자로 넘어온 변수의 이름이 동일한 경우에 주로 사용한다. 메소드 인자 활용 this 위 코드처럼 자바에서 this 키워드를 사용하면 인스턴스 변수인 name과 age를 가리키게 된다. 물론 위 코드처럼 this 키워드를 사용하지 않고 static을 이용하여서 인스턴스 변수에 접근이 가능하다. 생성자 활용 this 위 코드는 한 클래스에 여러 개의 생성자가 오버로딩 되어있는 경우, this키워드를 활용하여서 인자에 맞는 오버로딩된 생성자를 호출할 수 있다. 이렇게 name이라는 인자를 하나만 가지는 생성자에서 this키워드를 사용하여 name과 age인자 가진 생성자호출이 가능하다. 참조 반환this 위 코드는 Foo라는 클래스안에 Fo..

JAVA 2023.04.04

[JAVA] 객체&생성자(new 키워드,빌더 패턴)

객체(Objects)란? 물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중에서 자신과 다른 것을 식별하는 것을 의 1. 객체의 주소 정보를 담을 레퍼런스 변수를 선언한다. 2. 자바에서는 new라는 키워드로 객체를 생성한다. ex) class 타입 변수명=new 생성자(); 3. 이때 new라는 키워드는 foo라는 객체에 저장될 메모리 공간을 할당해준다. 자바 JVM구조를 살펴보면 JVM(자바 가상 머신)이 new라는 키워드를 보면 new 뒤에 있는 클래스명을 보고 해당 클래스를 메모리에 올리는 구조이다. 그렇다면 new라는 키워드는 레퍼런스 변수를 선언할 때 사용하는데 우리가 흔히 사용하는 String,Integer와 같은 Reference Type은 new 라는 키워드를 사용하지 않을까? Str..

JAVA 2023.04.03

[JAVA] 클래스정의&종류

클래스란? 만약 스마트폰이라는 클래스가 있다고 가정할 때, 스마트폰안에는 cpu, ram, 카메라 등 다양한 부품들이 들어가 있는데 이를 담고 있는게 스마트폰이라는 클래스이고 그 안에 부품들을 클래스의 데이터라고 한다. 위의 코드와 같이 클래스를 정의할 수 있다. 클래스의 구성요소 자바에서 클래스는 멤버로 속성을 표현하는 필드와 기능을 표현하는 메소드를 가진다. 뿐만 아니라 클래스는 생성된 객체의 필드를 초기화해주는 메소드인 생성자를 가진다. 내부 클래스 하나의 클래스 내부에 선언된 또 다른 클래스를 의미한다. 내부 클래스의 장점 하나의 외부클래스가 여러 클래스와 관계를 맺는 것이 아니라 특정 클래스와 관계를 갖는다면 위의 코드와 같이 내부클래스로 선언하는 것이 좋은데 이럴 때 장점은 내부클래스와 외부클..

JAVA 2023.04.03

[JAVA] 함수형 인터페이스 & (->)람다식

우선 람다를 알아보기 전에 함수형 인터페이스에 대해서 먼저 알아야 한다. 함수형 인터페이스 함수형 인터페이스란 한 인터페이스에 단 1개의 추상메소드를 갖는 인터페이스를 의미한다. 그럼 위의 인터페이스는 함수형 인터페이스일까 아닐까? 대답은 No이다. 함수형 인터페이스 특징 1. 함수형 인터페이스는 단 1개의 추상메소드를 가져야한다. 2. 만약 2개 이상의 추상메소드를 가지면 함수형 인터페이스가 될 수 없다. 3. printName(), printAge()와 같이 몸체가 구현된 인터페이스는 갯수와 상관없이 함수형 인터페이스에는 아무런 영향이 없다. 위의 코드는 추상메소드가 하나만 존재하기 때문에 함수형 인터페이스라고 할 수 있다. 여기서 @FunctionalInterface 어노테이션이 의미하는 바가 무엇..

JAVA 2023.04.02

[JAVA] 산술연산자 & 비트연산자

산술 연산자 사칙연산을 다루는 연산자로, 가장 기본적이면서도 가장 많이 사용되는 연산자 중 하나이다. 산술 연산자 설명 + 왼쪽의 피연산자에 오른쪽의 피연산자를 더함 - 왼쪽의 피연산자에서 오른쪽의 피연산자를 뺌 * 왼쪽의 피연산자에 오른쪽의 피연산자를 곱함 / 왼쪽의 피연산자를 오른쪽의 피연산자로 나눔 % 왼쪽의 피연산자를 오른쪽의 피연산자로 나눈 후, 그 나머지를 반환 + 연산자 +연산자는 위의 코드와 같이 정수형을 더하는 데 사용하는데도 쓰일 수 있고, 문자열을 합치는데도 사용이 가능하다. - 연산자 -연산자는 정수형에서는 사용할 수 있지만 +연산자와는 다르게 문자열을 뺄 수는 없다. 만약 문자열을 빼고 싶다면 위의 코드처럼 substring()을 사용하면 된다. * 연산자 *연산자는 단순하게 x와..

JAVA 2023.03.22

[JAVA] 타입변환&타입추론 var

타입변환 타입변환이란? 하나의 타입을 다른 타입으로 바꾸는 것이다. 그렇다고 모든 타입이 다 변환이 되느냐? 그건 아니다 타입변환은 boolean형을 제외한 나머지 기본 타입간의 타입변환을 자유롭게 수행가능하다. 타입변환은 상대적으로 작은 타입에서 큰 타입으로 변환할 때 묵시적 타입 변환 발생 BUT 반대로 큰 타입에서 작은 타입으로 변환을 하면 데이터 손실이 발생한다. 타입변환에는 크게 묵시적 타입 변환(프로모션)과 명시적 타입 변환(캐스팅)이 존재한다. 묵시적 타입 변환(프로모션) 컴파일러가 자동으로 수행해주는 타입변환을 의미한다. 위의 코드 처럼 double형에 int형 데이터 값을 넣으면 double형이 int형보다 크기가 크기 때문에 컴파일러가 자동으로 형 변환을 수행해주는 것을 확인할 수 있다..

JAVA 2023.03.22

[JAVA] 리터럴변수&변수의스코프와 라이프타임

리터럴이란? 보통 리터럴과 상수의 차이에 대해 궁금해하는 사람이 있을 수도 있다. 상수란? 변하지 않는 변수를 의미 ex)클래스와 구조체 기본형에서 파생된 객체나 유도형 같은 데이터를 넣을 수 있음 final int num; 리터럴이란? 데이터 그 자체를 의미한다. int a=10; //a는 상수가 되고, 10이 리터럴 위 코드 처럼 10이라는 값이 바로 리터럴이다. 하지만 여기서 final키워드를 사용하면 상수가 된다. ※인스턴스는 리터럴이 될 수 없다. 그 이유는 인스턴스(객체)는 동적으로 사용하기 위한 용도로 작성 불변 클래스 데이터가 변하지 않도록 설계를 해놓은 클래스 String str="seok"; //"seok"이라는 문자열이 객체 리터럴이다. 리터럴 선언 방법 리터럴을 선언하는 방법은 변수..

JAVA 2023.03.21

[JAVA] Primitive Type vs Reference Type

자바에는 변수라는 것이 존재하고 타입이라는 형태가 존재한다. Primitive Type Primitive Type은 기본형 타입이라고도 부르고, 실제 데이터 값을 저장하는 타입이다. 논리형 boolean Class Main{ public static void main(String[] args){ boolean vis=true; } boolean형은 반환형이 true/false형이 존재하고 타입변환이 자유롭지 않고, 크기는 1byte이다. 문자형 char Class Main{ public static void main(String[] args){ char c='Ch'; } char형은 반환형은 문자 단위로 반환을 해주고 크기는 2byte이다. 정수형 정수형은 byte, short, int, long형이 존..

JAVA 2023.03.21