본문 바로가기
반응형

Language & Framework & GIT/JAVA15

[JAVA] Call by reference & value 한창 Java를 공부하다보니, 함수 호출에 있어서 값을 불러오는 것과 주소를 참조하는 것 두가지가 있는 것을 알게 됐다. 2종류가 있는 것은 알겠는데 그럼 차이가 무엇일까? 함수 호출 방법 Call by value(값에 의한 호출) Call by reference(참조에 의한 호출) Call by value는 인자로 받은 값을 복사해 처리한다. Call by reference는 인자로 받은 값의 주소를 직접 참조해 값에 영향을 준다. Call by value는 프로그래밍 구조상 복사를 하기 때문에 메모리량이 늘어난다. 이 방식에서 계산량이 많다면 과부하가 일어나게 된다. 값을 복사해서 처리하는 것이기 때문에 원래의 값에는 영향이 가지 않아 안전하다. Call by value(값에 의한 호출) 장점 : 복.. 2022. 12. 27.
[JAVA] List ? ArrayList? #2 List list = new ArrayList(); ArrayList list = new ArrayList(); List와 ArrayList의 차이를 알아보자 - List = 인터페이스 - ArrayList = List에 상속된 클래스 ✅List? 위에 언급한 것처럼 List는 인터페이스이다. 처음 코드블럭처럼 List 자료형으로 선언 시에, 그 구현체를 ArrayList나 LinkedList로 구현 할수도 있다. 그러나 처음부터 ArrayList로 선언시, 데이터의 용도가 바뀌어 삽입/삭제가 유리한 LinkedList 구조로 변경 시 ArrayList로 선언된 모든 부분을 LinkedList로 변경해줘야 하기 때문이다. 즉, 다형성 지원을 위해 추후 변경에 대해 유연한 구조로 미리 설계하는 방식인 것이.. 2022. 12. 20.
[JAVA] List ? ArrayList? #1 메모리를 사용하는 양이 다르다는 말고는 아무것도 몰랐기 때문에, 문득 List와 ArrayList의 차이점이 궁금해졌다. List는 Array 비슷하며 Java의 자료형으로 Array보다 편리한 기능을 가진다 우선 리스트/배열의 차이를 짧게 알아보자 리스트와 배열의 제일 큰 차이는 인덱스의 유무이다. 배열에서는 인덱스를 통해 빠른 조회가 가능하나, 데이터가 삭제되어도 인덱스 유지를 위해 메모리를 유지해야하는 단점이 존재한다.이 때문에 적절한 배열 선언이 되지 않으면 메모리 낭비를 초래하게 된다. 리스트는 메모리 낭비를 줄이기 위해 인덱스를 포기하고 노드를 연결해 데이터를 적재하는 형태의 선형 자료구조이다. 이와 같이 리스트는 머리와 꼬리로 이뤄져있어 각 노드의 꼬리에는 다음 노드의 주소 정보가 있어 데이.. 2022. 12. 14.
[언어공부] 코테를 위한 JAVA 뽀개기 #4 #끝 본 게시물은 4개 중 마지막 게시물 Finish 1️⃣날짜와 시간 1) Java에서의 날짜와 시간 - 날짜/시간을 사용할 때 자주 쓰는 java.time 패키지 패키지(package)? : 클래스의 묶음. 패키지에는 클래스 혹은 인터페이스를 포함가능하며, 관련 클래스끼리 묶어두어 클래스를 효율적으로 관리 가능하다. 더보기 public class Main { public static void main(String[] args) { System.out.println("now()를 활용하여 생성"); LocalDate date = LocalDate.now(); LocalTime time = LocalTime.now(); LocalDateTime dateTime = LocalDateTime.now(); Syst.. 2022. 10. 29.
[언어공부] 코테를 위한 JAVA 뽀개기 #3 3개로 나누기로 했으나, 관련성을 고려해 4분할로 하기로 했다. ✅객체지향언어 5️⃣추상클래스, 인터페이스 ✔ 추상클래스란? : 추상메소드를 선언할 수 없는 클래스 추상클래스는 일반 클래스와 다르게 상속받는 클래스 없이 그 자체로 인스턴스를 생성할 수 없다 일단 추상메소드를 먼저 알아보자. ✔ 추상메소드란? : 추상 메소드는 설계만 되어있으며 수행되는 코드에 대해서는 작성이 안된 메소드 의문이 든다. 왜 수행되는 코드에는 작성을 안했을까? 미완성으로 남겨두는 이유는 추상 메소드가 포함된 클래스를 상속받는 자식 클래스가 반드시 추상 메소드를 구현하도록 하기 위함이다. 예로 모듈같이 중복되는 부분이나 공통되는 부분은 다 만들어진 것을 사용하고, 받아 사용하는 쪽은 자신에게 필요한 부분만을 재정의해서 사용함으.. 2022. 10. 28.
[JAVA] this / super 현재 교재는 명품 자바 에센셜과 스파르타 코딩클럽의 강의를 병행해서 보고 있다. 스파르타 강의 자체가 저어어어어어어엉말로 알아야 하는 부분만 나와있어서, 그래서 왜 라고 물었을 때 기억이 안나서 추가적으로 정리하게 됐다. 강의가 안좋다기보단 압축 성장엔 탁월하나 깊이에 있어서는 아쉽다.안좋을수도?하핳 ✅this 1️⃣this. 특징 - 객체 자신에 대한 레퍼런스 - 컴파일러에 의해 자동 관리된다 - static 메소드에서는 사용 불가 - 인스턴스 메소드(생성자 포함)에서 사용가능 - this.멤버 형태로 멤버 접근할 때 사용 - 참조 변수를 사용할 수 있는 대상은 인스턴스 메소드뿐이며, 클래스 메소드에서는 사용할 수 없다 - 같은 클래스 내에서는 this 생략 가능 RGB(String A,String B.. 2022. 10. 22.
[JAVA] 오버로딩과 오버라이딩 ✅ 오버로딩이란? : 한 클래스 내에 동일한 이름의 메소드를 여러개 정의하는 것 *동일한 이름의 메소드를 정의한다 해서 무조건 오버로딩은 아니다 ✔ 오버로딩의 조건 메소드 이름이 동일 매개변수의 개수 or 타입이 달라야함 class OverloadingTest { public static void main(String[] args) { OverloadingMethods om = new OverloadingMethods(); om.print(); System.out.println(om.print(3)); om.print("Hello!"); System.out.println(om.print(4, 5)); } } class OverloadingMethods { public void print() { Syste.. 2022. 10. 22.
반응형