백앤드 36

[C#] 알아보기

기존의 절차적 프로그래밍 언어(C언어)와 달리 객체지향 프로그래밍 언어(Java,Python,C++,C#)은 코드의 재사용성에 무게를 두었다.그만큼 오늘날 프로그램의 규모가 커졌다는 것을 의미한다. 여러 사람이 같은 프로그램을 만들더라도 전체의 영향을 최소화하면서 반복적으로 작업해야할 부분과 그렇지 않은 부분을 분리해 관리하도록 만든것임C# 프로그래밍 언어  마이크로소프트에서 개발된 언어로 초기에는 자바와 비슷한 구조로 MS종속적인 환경으로 주목받지 못했지만 .NET Core를 오픈소스로 공개해서 게임, 모바일 등 여러 플랫폼에서 응용가능해짐장점: 사소한 실수도 컴파일오류를 띄워 에러가 적음, 가비지 컬렉터로 메모리 정리해줌단점: 다중 상속 안됨,윈도우에서만(Core말고 프레임워크는) 개발 가능,C와 C..

백앤드/C# 2024.11.20

[JAVA] 추상 클래스와 인터페이스의 차이

1. [추상 클래스]개념: abstract 키워드로 선언된 클래스*추상 메서드를 최소 한 개 이상 가지고 abstract로 선언된 클래스최소 한 개의 추상 메서드를 포함하는 경우 반드시 추상 클래스로 선언하여야 한다.*추상 메서드가 없어도 abstract로 선언한 클래스그러나 추상 메서드가 하나도 없는 경우라도 추상 클래스로 선언할 수 있다.*추상 클래스의 구현서브 클래스에서 슈퍼 클래스의 모든 추상 메서드를 오버라이딩하여 실행가능한 코드로 구현한다.추상 클래스의 목적객체(인스턴스)를 생성하기 위함이 아니며, 상속을 위한 부모 클래스로 활용하기 위한 것이다.여러 클래스들의 공통된 부분을 추상화(추상 메서드) 하여 상속받는 클래스에게 구현을 강제화하기 위한 것이다. (메서드의 동작을 구현하는 자식 클래스로..

백앤드/JAVA 2024.10.18

[JAVA] final, finally, finalize()

1. [final 키워드는 변경 불가능하게 한다]적용 대상효과기본형 변수(Primitive)해당 변수 값 변경 불가참조형 변수(Reference)*참조 변수가 힙 내 다른 객체를 가르키도록 변경 불가메서드해당 메서드 오버라이드 불가클래스해당 클래스 상속 불가 *참조 변수가 힙 내 다른 객체를 가르키도록 변경 불가public class FinalExample { public static void main(String[] args) { final StringBuilder sb = new StringBuilder("Hello"); sb.append(" World"); // 객체의 상태는 변경 가능 (문자열 추가) // sb = new StringBui..

백앤드/JAVA 2024.10.18

[JAVA] Wrapper Class는 기본 자료형을 객체로 변환한다

1. [Wrapper Class 사용 용도]*기본 자료형을 객체 타입으로 변환해야하는 경우 기본 타입(Primitive Type)Wrapper ClassbyteByteshortShortintIntegerlongLongfloatFloatdoubleDoublecharCharacterbooleanBoolean*박싱 방향: ->*언박싱 방향: *기본 자료형을 객체 타입으로 변환해야하는 경우 ▪️ 객체로 저장해야할 경우 ▪️ 매개변수로 객체가 요구될 경우 (ex. *제네릭, Collecion 타입) ▪️ 객체간 비교가 필요할 경우 *제네릭 : 모든 종류의 타입을 다룰 수 있도록 일반화된 타입 매개변수로 클래스나 메서드를 선언하는 기법* 오토 박싱, 오토 언박싱: JDK 1.5부터는 자바 컴파일러가 알아서 자동 처..

백앤드/JAVA 2024.10.18

[JAVA] 객체지향 프로그래밍 (OOP,Object Oriented Programming)

1. [객체 지향 프로그래밍이란 프로그램을 객체 단위로 구성하고, 각 객체  간 관계 및 상호작용을 프로그램으로 나타낸 것 이다]장점코드의 재사용성이 높다. - 누군가의 코드를 갖다쓰기도, 상속하기도, 확장하기도 쉽다.유지 보수가 쉽다. - 해당 부분만 수정하면 된다.대형 프로젝트에 적합하다. - 업무 분담이 쉽다.즉, 강한 응집력(단일 책임)과 약한 결합력(약한 의존)을 가진다.단점처리 속도가 느리다. - 객체 간 정보 교환이 모두 메시지 교환을 통해 일어나므로 많은 오버헤드가 발생한다. 하지만 하드웨어의 발전으로 어느 정도 해소된 단점이다.객체가 많으면 용량이 커진다.설계시 많은 노력과 시간이 든다.2. [객체 지향의 특징 (APIE)- 4가지 ]Abstraction(추상화) : 필요한 정보만 표현함..

백앤드/JAVA 2024.10.18

[JAVA] String, StringBuilder, StringBuffer 차이

1. [String은 불변 객체다]불변 객체(immutable)하기 때문에 +같은 concat연산을 수행하면 원본을 변경하지 않고, 새로운 String 객체를 생성한다. 이로 인해 메모리 공간의 낭비가 발생하고, 성능이 떨어진다.JDK 1.5부터는 String 객체를 +연산자로 연결할 때, 컴파일 타임에서 StringBuilder로 변경된다고 한다.불변 객체이기 때문에 멀티 쓰레드 환경에서 동기화를 신경쓰지 않아도 됨다.문자열 연산이 적고, 조회가 많은 상황에서 쓰기 좋다.2. [StringBuilder와 StringBuffer는 변경 가능 객체라는 공통점이 있지만 멀티쓰레드 지원 유무의 차이가 있다]공통점변경 가능 객체(Mutable)한 객체이다. 따라서 문자열 연산시 처음 만든 객체를 이용해 문자열을..

백앤드/JAVA 2024.10.18

[JAVA] 자바는 Call by Value방식이다

1. [Call by Value와 Call by Reference의 차이]Call by Value: 함수 호출 시 값을 복사해서 전달. 값을 복사해야하므로 생성한 변수마다 스택에 메모리 할당.Call by Reference: 함수 호출 시 참조하고있는 주소를 전달. 원본데이터에 접근해서 수정 가능함.2. [자바는 Call by Value방식이다]Primitive Type(원시 자료형) (int,short,long,float,double,char,boolean) 에서는 값 자체를 복사하고 함수에 전달된다.Reference Type(참조 타입) (Array, Class Instance) 에서는 주소 값을 복사하고 함수에 전달. 값을 복사하고 전달하는 방식이기 때문에 Call by Value 방식이지만 주소 ..

백앤드/JAVA 2024.10.18