목록BackEnd/Java (19)
여행을 개발하다

안녕하세요! 오늘 포스팅 할 내용은 'Diamond of Death 현상'입니다. 사실 본론부터 이야기하자면, Java에서는 일어날 수 없는 현상입니다. 왜냐하면 Java는 다중 상속을 허용하지 않기 때문입니다. 여기서 다중 상속이란, 여러 개의 서브 클래스가 하나의 동일한 슈퍼 클래스를 상속받는 것을 의미하는데요. 하나의 클래스의 활용도를 엄청 높일 수 있을 것만 같은데, Java는 왜 C++로부터 물려받지 않았을까요? 그 이유를 지금부터 풀어갑니다. * Diamond of Death (데스 다이아몬드 현상) * B와 C클래스는 A라는 부모 클래스를 상속 받은 자식 클래스이다. * 그런데 D라는 클래스는 B와 C클래스를 동시에 상속받았다. * 결국 D는 B와 C클래스를 상속 받기는 했지만, A클래스를 ..

안녕하세요! 오늘 포스팅 할 내용은 "클래스(Class)의 상속(Inheritance)"입니다. Java가 C++과 가장 다르다고 느낀 부분은, class가 가장 기본이 된다는 것이었어요. Java는 C계열의 언어와는 달리 다양한 class와 method가 정의되어 있습니다. 그만큼 C계열의 언어에 비해 코딩이 편하다(?)고 생각하는데요. 문제는 package와 project 등을 생성할 때마다 새로운 class를 만들다보면 , 동일한 이름과 기능을 갖게 되는 class들 때문에 많은 미스커뮤니케이션과 혼란이 발생할꺼에요. 이것이 바로 클래스의 상속이 적시적소에 이루어져야 하는 이유입니다. 그럼 Java의 기본이 되는 class의 상속(Inheritance)에 대해 알아볼까요? 1. 클래스의 상속이란? ..

안녕하세요!! 오늘 포스팅 할 내용은 "StringTokenizer"라는 클래스입니다. 우리는 컴퓨터에 영문자, 한글 등 여러 가지 언어와 형태로 문자를 입력합니다. 그리고 필요에 따라 쉼표(,), 마침표(.), equal(=)을 쓰기도 하구요. 그런데 쉼표, 마침표, equal은 의미 단위를 구분해주는 '구분자'로도 사용됩니다. "StringTokenizer"라는 클래스는 이러한 구분자와 밀접한 연관이 있습니다. 지금부터 "StringTokenizer"이라는 클래스와 세부적으로 함께 쓰일 수 있는 "hasMoreTokens()", "nextToken()" 이라는 메소드에 대해서도 살펴보도록 하겠습니다. 들어가기 전에 토큰(Token)의 개념부터 정리하고 가요! 네이버 사전의 힘을 빌리겠습니다 : ) 토..

안녕하세요 : ) 오늘은 random 클래스를 활용하여 lotto 번호를 추출하는 프로그램을 코딩해보겠습니다. 1. Algorithm 구상 ① 1 ~ 45의 숫자를 저장할 수 있는 lotto_array이라는 이름의 배열을 선언한다. ② lotto_test 배열에 1부터 45의 숫자를 저장한다. ③ random 클래스 자료형의 random 객체를 형성한다. ④ 정수형 변수 r을 선언하고, 1부터 44 이하의 숫자에서 무작위 1개를 선택하여 r에 저장한다. ⑤ lotto_test의 0번째 인수와 r번째 인수를 100000번 섞는다. ⑥ 섞기가 완료되면 0번째부터 6번째 인수를 시간차를 두고 호출한다. 참고로 0번째부터 5번째 인수는 당첨번호이며, 6번째 인수는 보너스 번호이다. 2. Coding ① 1 ~ ..

안녕하세요! 오늘 포스팅 할 내용은 'Random 메소드'입니다. 프로그래밍을 할 때, 가끔 정해지지 않은 임의의 숫자가 필요할 때가 있습니다. 게임, 복권 추첨 프로그램을 짤 때가 그 예가 되겠죠? 우리의 다재다능한 Java가 어떻게 이러한 난수를 발생켜주는지 한 번 살펴보도록 하겠습니다. * Random 메소드란? - 한 번 호출할 때마다 0에서 1사이의 난수를 발생시켜 리턴해주는 메소드. - 소속은 math 클래스이다. - 기본 리턴 타입은 double(실수)이다. - 형식 : Math.random() random 메소드를 한 번 호출해보겠습니다. 0.81951429514... 긴 숫자가 출력되네요! 이번엔 한 개가 아니라 여러 개를 출력해보겠습니다. 엄청난 숫자들이 나오네요...ㅎㅎ 그런데 0부터..

안녕하세요!! 이번 포스팅에서는 Date, SimpleDateFormate 클래스에 대해 알아보겠습니다. 1. Date - 컴퓨터 시스템의 날짜와 시간을 얻어오는 Class. - 1900년을 기준으로 날짜를 처리한다. - Date Class에서 년, 월, 일, 시, 분, 초를 얻어오려면 get으로 시작하는 메소드를 사용하고, 수정하려면 set으로 시작하는 메소드를 사용하면 된다. - 년을 얻어올 때는 1900을 더해서 얻어와야 하고, 넣어줄 때는 1900을 빼서 넣어줘야 한다. - 월을 얻어올 때는 1을 더해서 얻어와야 하고, 넣어줄 때는 1을 빼서 넣어줘야 한다. Date Class 자료형의 'date'라는 새로운 객체를 생성하여 출력해보았습니다. 그 결과, 컴퓨터 시스템에 있는 시간이 나타나는데요. ..

안녕하세요!! 이번에는 String 자료형에 관련된 메소드(Method)에 대해 알아보고자 합니다. 세부적으로 Length(), toUpperCase(), toLowerCase(), charAt(index), substring(a), substring(a,b), indexOf(), lastIndexOf(), trim() 으로 나누어 설명하겠습니다. * 준비 사항 ① 자료를 입력 받는 Scanner Class의 객체 'sc'를 생성하고, 줄 단위의 문자열을 입력 받습니다. ② 줄 단위의 문자열은 str이라는 변수에 저장합니다. 1. length() - 변수에 저장된 문자의 개수를 센다. 2. toUpperCase() - 변수에 저장된 값을 무조건 대문자로 바꾼다. 3. toLowerCase() - 변수에 ..

안녕하세요! 오늘은 String class의 객체로 생성된 String 자료형을 비교하는 알고리즘에 대해 포스팅하겠습니다. 먼저 String이라는 class로 str1과 str2를 선언하고, 동일하게 "AAA"라는 값을 넣어줍니다. 그리고 str1과 str2가 같으면, "같다"라고 출력하고, 다르면 "다르다"라고 출력시켜보겠습니다. 결과 값은 당연히 '같다'가 나옵니다. "AAA"와 "AAA"는 누가 봐도 같기 때문입니다. 하지만 컴퓨터는 사람과 조금 다르게 인식합니다. 왜냐하면 class로 선언된 변수들의 값은, 변수의 값이 생성되어 있는 주소로 비교를 하기 때문입니다. 결국 위의 예제에서 str1과 str2의 "AAA"는 동일한 메모리에 저장된 것이고, 컴퓨터는 메모리의 주소가 같다는 이유로 "같다"..