Language/JAVA 7

[Effective JAVA] 이펙티브 자바 item12.toString을 항상 재정의하라

[Item 12] toString을 항상 재정의하라 # 왜? * println(), printf(), + 연산자 등 toString() 메서드는 알게 모르게 많이 불려진다. * System.out.println(phoneNumber)와 같이 작성하면 내부 내용을 볼 수 있으므로 디버깅하기 쉽다. * 만약 사용자에게 값을 보여줘야 할 일이 있을 때도 간단하게 print(phoneNumber)와 같이 넘기기만 하면 toString()은 자동으로 불려진다. 즉, 개발 시 편리하다. # 규약 1) toString은 '간결하면서 사람이 읽기 쉬운 형태의 유익한 정보'를 반환해야 한다. ``` object.toString -> PhoneNumber@adbbd VS Jenney=707-867-5309 ``` 2) 객..

Language/JAVA 2023.01.15

[Effective JAVA] 이펙티브 자바 item11.equals를 재정의하려거든 hashCode도 재정의하라

[Item 11] equals를 재정의하려거든 hashCode도 재정의하라 - equals를 구현할 때 hashCode도 함께 만들어야한다. 롬복은 @EqualsAndHashCode 하나의 어노테이션으로 동작한다. hashCode 규약 - equals에 사용되는 정보가 변경되지 않았다면 hashCode는 매번 같은 값을 리턴해야한다. (변경되거나, 애플리케이션을 다시 실행했다면 달라질 수 있다.) - 객체에 대한 equals가 같다면, hashCode의 값도 같아야한다. - 두 객체의 equals가 다르더라도 hashCode의 값을 같을 수 있지만 해시테이블 성능을 고려해 다른 값을 리턴하는 것이 좋다. ``` @Override public int hashCode() { int result = Short..

Language/JAVA 2023.01.15

[Effective JAVA] 이펙티브 자바 item10.equals는 일반 규약을 지켜 재정의하라

이펙티브 자바 스터디에서 아이템 10-12 파트를 발표하게 되었다. 해당 부분을 두번 읽었는데, 처음 읽을 때는 무슨소리지? 싶던 내용이 두번째 읽을 땐 '아, 이말이었구나.' 싶은 순간이 생기더라. 물론, 다른이에게 설명할 정도로는 부족하여 이 포스팅을 쓰며 차근차근 정리 후 내 것으로 만드는 시간이 필요하다 (이 책은 어색한 번역체와 불친절하게 느껴지는 예시들이 개선되면 더 좋은 평을 얻을 것 같다ㅎ) 해당 포스팅의 내용은 이펙티브 자바 책과 백기선 개발자의 강의, 그리고 구글링을 통해 구성되었다. 일부 사견을 포함한다. 아이템 10은 '3장 모든 객체의 공통 메서드'의 첫 아이템이다. Object 클래스에서 final이 아닌 메서드 equals, hashcode, toString은 모두 재정의(ov..

Language/JAVA 2023.01.15

[JAVA] 자료구조_클래스, 객체, 참조변수 (1)

✔ 권오흠 교수님의 강의를 보고 정리했습니다. 클래스를 설계도라 부른다면 객체야 말로 그 안에 있는 집이다. 집은 늘 new 명령어로 생성될 수 있다. new 명령어로 객체를 만들면, 그 객체는 고유한 이름을 가질 수 없다. 그래서 우리에겐 참조변수가 필요하다. 그 객체에 접근할 수 있는 주소가 필요하다. (참조한다, 가리킨다라고 표현한다.) 만들어진 객체는 이름이 없어서 참조변수를 하나 만들고 참조변수에 이름을 붙임으로서 만들어진 객체를 사용할 수 있게 된다. 🔻 Example1: Index Maker import java.io.File; import java.io.FileNotFoundException; import java.io.FileWriter; import java.io.IOException;..

Language/JAVA 2022.07.02

[JAVA] 메소드 호출과 프로그램의 기능적 분할-call by reference, call by value, actual prameter, formal parameter

권오흠 교수님의 자료구조 강의를 듣고 정리했습니다. 🔺What I learn from this lecture 코드를 작성할 때 어떻게 함수를 호출하고 매개변수를 전달할지를 생각하자 어떻게 전체 프로그램이 할 일을 작고 명료하게 기능적으로 분할하여 구조화할 수 있을지 고민하자 구조화된, structured program의 핵심은 함수를 잘게 쪼개는 것이다. 기능적 분할이 어떻게 이뤄지는지 학습하는 것이 재미있었다. 이는 결국 call by value, call by reference에 대한 이야기로 연결된다 and it also connected to actual parameter, formal parameter return 의 역할은 2개, 함수의 종료와 값의 반환이다. 프로그래밍, 알고리즘을 짤 때 교..

Language/JAVA 2022.06.06

[JAVA] n개의 연속된 숫자 나열을 정수로 환산하여 소수인지 판별 후 최대값 구하는 프로그램

Q/ n개의 음이 아닌 한자리 정수를 입력받아 배열에 저장한다. 이들 중에서 1개 이상의 연속된 정수들을 합하여 얻을 수 있는 소수들 중에서 최대값을 구하여 출력하는 프로그램을 작성하라. A/ package chapter1; import java.util.Scanner; public class code13 { public static void main(String args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[] data = new int[n]; for (int i = 0; i < n; i++) data[i] = sc.nextInt(); sc.close(); int max = 0; for (int i = 0; i < n; i..

Language/JAVA 2022.03.05