본문 바로가기
반응형

java8

[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? #1 메모리를 사용하는 양이 다르다는 말고는 아무것도 몰랐기 때문에, 문득 List와 ArrayList의 차이점이 궁금해졌다. List는 Array 비슷하며 Java의 자료형으로 Array보다 편리한 기능을 가진다 우선 리스트/배열의 차이를 짧게 알아보자 리스트와 배열의 제일 큰 차이는 인덱스의 유무이다. 배열에서는 인덱스를 통해 빠른 조회가 가능하나, 데이터가 삭제되어도 인덱스 유지를 위해 메모리를 유지해야하는 단점이 존재한다.이 때문에 적절한 배열 선언이 되지 않으면 메모리 낭비를 초래하게 된다. 리스트는 메모리 낭비를 줄이기 위해 인덱스를 포기하고 노드를 연결해 데이터를 적재하는 형태의 선형 자료구조이다. 이와 같이 리스트는 머리와 꼬리로 이뤄져있어 각 노드의 꼬리에는 다음 노드의 주소 정보가 있어 데이.. 2022. 12. 14.
[언어공부] 코테를 위한 JAVA 뽀개기 #3 3개로 나누기로 했으나, 관련성을 고려해 4분할로 하기로 했다. ✅객체지향언어 5️⃣추상클래스, 인터페이스 ✔ 추상클래스란? : 추상메소드를 선언할 수 없는 클래스 추상클래스는 일반 클래스와 다르게 상속받는 클래스 없이 그 자체로 인스턴스를 생성할 수 없다 일단 추상메소드를 먼저 알아보자. ✔ 추상메소드란? : 추상 메소드는 설계만 되어있으며 수행되는 코드에 대해서는 작성이 안된 메소드 의문이 든다. 왜 수행되는 코드에는 작성을 안했을까? 미완성으로 남겨두는 이유는 추상 메소드가 포함된 클래스를 상속받는 자식 클래스가 반드시 추상 메소드를 구현하도록 하기 위함이다. 예로 모듈같이 중복되는 부분이나 공통되는 부분은 다 만들어진 것을 사용하고, 받아 사용하는 쪽은 자신에게 필요한 부분만을 재정의해서 사용함으.. 2022. 10. 28.
Java_Optional<T> isPresent(), ifPresent() 사용하기 Optional을 사용하면 예상치 못한 NullPointerException 예외를 제공되는 메소드로 간단히 회피할 수 있다. 즉, 복잡한 조건문 없이도 널(null) 값으로 인해 발생하는 예외를 처리할 수 있게 된다. 1. isPresent() 메소드 - Boolean 타입 - Optional 객체가 값을 가지고 있다면 true, 값이 없다면 false 리턴 > 예시 코드(좋아요를 처음누르면 좋아요가 되지만,해당 게시물에 같은 유저가 한번더 누를시 좋아요 취소) Optional likes리스트인 click에서 레퍼지토리에 있는 로그인한 유저(user)와 해당 게시물에 대한 Id를 받아온후 click.isPresent() 메소드 사용 값을 가지고 있으면 true로 ,좋아요가 눌린상태로 판단하여 if문을 .. 2022. 8. 21.
[JAVA] 접근 지정자 불가능은 약간의 시간이 주어지면 사라진다 멤버 접근 지정 static 멤버 : 클래스의 멤버들 중 static 지시어로 선언된 멤버 static멤버는 클래스당 하나만 생성되는 멤버로,동일한 클래스의 모든 객체들이 공유하므로 클래스 멤버라 부른다 non-static멤버는 각 객체마다 생기므로 인스턴스 멤버라고 부른다.non static은 독립적인 공간을 할당받는다 static 멤버 사용 non-static 멤버가 객체 이름으로만 활용할 수 있는 것과 달리 static은 객체 이름이나 클래스 이름 모두 활용 가능 static의 활용 - 전역 변수와 전역 함수를 만들 때 사용 : 응용프로그램 작성 시 모든 클래스에서 공유하는 전역 변수(global variable)나 모든 클래스에서 호출할 수 있는 전역함수(.. 2022. 8. 11.
오늘은 짧은 언어_06 객체 배열 : 자바에 대한 레퍼런스를 원소로 갖는 배열 배열 선언 및 생성 1.배열에 대한 레퍼런스 선언 Circle [ ] c; //배열에 대한 레퍼런스 변수 c를 선언한 것 Circle[5] c; //배열의 크기를 지정하면 컴파일 오류 발생 2.레퍼런스 배열 생성 C = new Circle[5]; //Circle 객체에 대한 레퍼런스 5개 생성 3. 객체 생성 Circle 객체를 하나씩 생성하여 배열 c[ ] 의 각 레퍼런스에 대입 for(int i=0; i매개변수가 복사되어 전달 객체가 전달되는 경우 => 객체의 레퍼런스 값이 전달 배열이 전달되는 경우 => 배열에 대한 레퍼런스만 전달 메소드 오버로딩(메소드 중복) : 클래스 내 이름이 같지만 매개 변수의 타입이나 개수가 서로 다른 여거 개의 메소.. 2022. 8. 9.
오늘은 안 짧은 언어_05 자바의 객체 지향 특성 - 캡슐화 자바에서 클래스는 객체의 모양을 선언한 틀이며, 클래스 모양 그대로 생성된 실체가 객체이다. 자바는 필드와 메소드를 클래스 내에 모두 구현한다.캡슐화를 통해 객체 내 필드에 대한 외부로부터의 접근을 제한 - 상속 : 상위 개체 속성이 하위 개체에 물려져 하위 개체가 상위 개체의 속성을 모두 가지는 것 자바의 상속은 자식 클래스가 부모 클래스의 속성을 물려받아 부모 클래스에 기능을 확장(extends)하는 개념이다 자바에서 슈퍼 클래스(super class)라고 부르며 자식 클래스를 서브 클래스(sub class)라고 부른다 - 다형성 : 같은 이름의 메소드가 클래스 혹은 객체에 따라 다르게 구현되는 것 >메소드 오버라이딩 : 슈퍼 클래스에 구현된 메소드를, 서브 클래스에.. 2022. 8. 6.
반응형