본문 바로가기

전체 글

(51)
이탈리아 비자 수령 드디어 이탈리아로 가는 비자를 받았다. 지난 달, 링크드인을 통해 입사지원한 어느 기업의 인사담당자가 연락을 취해왔다. 이력서와 포트폴리오를 보고 궁금한 점이 있다며 메일을 보낸 그 분께 장문의 답장을 보냈다. 아직은 이태리어가 완벽하지 않고 개발도 초보이지만 fast learner라고 우겨서 어렵게 얻어낸 기회였다. 혹시나 비자가 거절될까봐 조마조마 했는데 다행히 문제 없이 발급되었다. (원래 걱정이 많음...) 365일이면 2020년 12월23일까지인데 왜 만료날짜가 1월이냐고, 그럼 나 비자 연장 없이 1월까지 있어도 되는거냐고 대사관 직원에게 물었더니, 혹시 출국이 늦춰질까봐 비상용으로 날짜를 넉넉하게 계산하도록 시스템이 설계되었다고 답해주셨다. 어차피 체류증이 나오는 순간, 비자에 적힌 유효기간..
10_상속(Inheritance) : 클래스 상속, 메소드 재정의(@Override) 01. 상속(inheritance)이란? - 객체 지향 프로그램에서 부모 클래스(상위 클래스)의 멤버를 자식 클래스(하위 클래스)에게 물려주는 것. - 부모 클래스에서 private 접근 제한을 갖는 필드와 메소드는 상속 대상에서 제외된다. - 부모 클래스와 자식 클래스가 다른 패키지에 존재한다면 default 접근 제한을 갖는 필드와 메소드도 상속 대상에서 제외된다. - final 클래스는 상속할 수 없으며 final 메소드는 오버라이딩할 수 없다. 02. 클래스 상속 - 상속 관계를 나타내기 위해 extends 키워드를 사용한다. 1 2 3 4 5 class 자식클래스 extends 부모클래스 { //필드 //생성자 //메소드 } 예제) - 핸드폰(Cellphone) 클래스를 상속해서 스마트폰(Sma..
09_클래스 : 접근제한자(Access Modifier), static 멤버(정적 멤버), 싱글톤(singleton), final, 상수, getters and setters 00. 접근제한자(Access Modifier) - public > protected > default(생략) > private - 클래스에서는 protected와 private 접근제한자를 사용할 수 없다. public protected default(package friendly) private 아무나 접근 가능 나 + 동일한 패키지의 클래스 + 자식 클래스 동일한 패키지의 클래스 나만 접근 가능 01. static 멤버 (정적 멤버) - static멤버란 클래스에 고정된 멤버를 뜻한다. - 필드와 메소드 선언시 static 키워드를 붙여서 만든다. - 객체를 따로 생성하지 않고 클래스가 메모리로 로딩되었을 때 바로 사용할 수 있다. - 클래스이름.필드; 클래스이름.메소드; 의 형태로 도트(.) 연산..
08_클래스 : 필드, 생성자, 메소드 01. 클래스란 - 어떤 객체를 메모리에서 사용하기 위해서는 먼저 그 객체를 만들어야 한다. 객체를 만들기 위해 필요한 설계도가 클래스이다. - 모든 클래스는 반드시 하나 이상의 생성자를 가지고 있다(생성자는 오버로딩 될 수 있다). 02. 클래스의 구성 멤버 - 클래스는 필드, 생성자, 메소드로 구성되어 있다. 자세한 내용은 아래에서 살펴본다. 1) 필드 - 객체의 고유 데이터, 상태 정보를 저장하는 곳 - 블록을 벗어나면 메모리에서 제거되는 변수와 달리 생성자와 메소드 전체에서 사용되며 객체가 소멸하지 않는 한 계속 존재한다. 필드는 선언과 동시에 초기화 될 수도 있고 그렇지 않을 수도 있다. 1 2 3 4 5 6 7 8 9 10 public class Car { //필드 String company ..
07_배열 01. 참조타입 배열 앞서, String 타입의 데이터는 문자열의 내용이 같으면 최초에 생성한 객체를 재활용한다고 한 적이 있다. String 타입의 배열도 마찬가지이다. strArray[0] = "Java"; 라는 코드에 의해, "Java"라는 String 객체가 Heap 영역에 생성된다. strArray[1] = "Java"; 라는 코드는 새 문자열을 또 만드는 것이 아니라 위에서 생성된 "Java"라는 문자열을 재사용한다. 그러나 strArray[2]의 값은 new String을 사용하여 초기화시키고 있으므로 새로운 "Java"라는 문자열이 생성된다. == 연산자는 객체의 주소값 자체를 비교하며 .equals는 문자열의 내용만을 비교한다고 하였다. 따라서 아래의 코드는 순서대로 [true, fals..
06_참조형 데이터 타입 01. 참조형 데이터 타입(reference type) - 객체(object)의 번지를 참조하는 타입으로 배열, 열거, 클래스, 인터페이스 타입을 말한다. - 객체타입에서 ==, != 연산자는 같은 객체를 참조하는지 아니면 다른 객체를 참조하는지를 비교한다. 즉, 주소값을 비교한다고 보면 된다. 02. 메모리 구조 Static 영역(메소드 영역) Heap 영역 Stack 영역 System 영역 - JVM이 시작할 때 생성되며 모든 스레드가 공유하는 영역 - 객체와 배열이 생성되는 영역 - 스택영역의 변수나 다른 객체의 필드가 이 곳을 참조 - 더 이상 참조되지 않는 객체는 Garbage Collector에 의해 자동으로 제거된다 - 각 스레드마다 하나씩 존재하며 스레드가 시작될 때 할당 됨 - 변수가 초..
05_중복 없이 로또 번호 추출(조건문, Math.random()) 조건문과 Math.random() 함수를 사용하여 중복 없이 로또 번호를 추출해보았다. 자바를 공부하는 사람이면 모두 한번 쯤은 풀어봤을 것이다. 다양한 방법이 있겠지만 나는 아래와 같은 방법을 사용했다. 1. 크기가 6인 int형 배열을 만든다. 2. 배열의 크기만큼 반복문을 돌려 난수를 발생시키고, 그 난수를 배열에 넣는 과정을 반복한다. 참고: - Math.random() 함수는 0.0 이상, 1.0 미만의 난수를 발생시킨다. - 따라서 Math.random()에 45를 곱하면 0.0 이상 45.0 미만의 난수가 발생하는데 - 로또번호는 1~45이므로 마지막에 1을 더해주면 1.0이상 46.0 미만의 난수를 얻을 수 있다. - 그것을 int형으로 변환하여 최종적으로 1 이상 46 미만인 정수가 나오..
04_String 연산자 01. String 객체 비교 == 연산자나 .equals() 메소드를 사용하여 비교할 수 있다. == 연산자는 객체가 동일한가를 비교하고, equals() 연산자는 문자열의 내용만 비교한다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 public class StringEqualsExample { public static void main(String[] args) { String strVar1 = "Lyon"; String strVar2 = "Lyon"; String strVar3 = new String("Lyon"); System.out.println(strVar1 == strVar2); System.out.println(strVar1 == strVar3); System.out...