전체 글 82

this & this( ) & super (5월/13일 내용추가)

● 자바를 배우면서 한 번쯤은 누구나 헷갈릴만한 파트이다. 본 게시물에서 2 부분으로 나눠서 설명을 해보려 한다. 1) this & this( ) this를 무엇이라고 배웠는지 기억하는가? this는 바로 인스턴스 변수와 지역변수를 구분하기 위해서 쓰는 참조 변수이다. 여기서 인스턴스 변수는 클래스 내에 선언된 변수이고(Static이 붙지 않은), 지역변수는 메서드 내에 정의된 변수이다. 이 둘을 구별한다는 것인데 이게 무슨 의미인지 IPhoneTest라는 클래스를 만들어서 확인해보자 class iPhone { String model; String color; int capacity; iPhone(){ model ="iPhoneX"; color = "White"; capacity = 64; } iPhon..

Java/Java Study 2021.05.10

오버라이딩 vs 오버로딩

● 사실 코딩을 하는 과정에선 오버라이딩(Overriding)과 오버로딩(Overloading)을 헷갈릴 일은 없다. 왜냐하면 그 차이가 너무나도 명백하기 때문에 오버라이딩을 써야 하는 상황에서 오버로드를 쓰는 사람은 없을 것이기 때문이다. 하지만 굳이 이렇게 정리하는 이유는 면접에서 혹은 누군가가 물어본다면 그 차이를 명확히 설명하기 위해서이다, 또한 코딩을 처음 접하는 사람들은 각각의 개념도 잘 잡히지 않은 상태에서 이 둘을 헷갈려하면 굉장히 힘들기 때문이다(경험담). 언제나 그렇듯 간단하게 처음에 정리해보자면 오버로딩은 새로운 메서드를 형성하는 것이고 , 오버라이딩은 상속받은 메서드의 내용을 수정하는 것, 먼저 오버로딩부터 살펴보면 , 오버로딩은 한 클래스 내에서 이름이 같은 새로운 메서드를 형성하..

Java/Java Study 2021.05.08

[객체지향] 다형성, Polymorphism - Part2 (참조변수의 형변환)

● 서로 상속 관계인 부모 자식관계의 클래스 사이에서는 서로 형 변환이 가능하다 조상 타입을 자손 타입으로 형 변환을 (DOWN-CASTING) 그 반대를 (UP-CASTING)이라고 한다. class Car { String color; int door; void drive() { System.out.println("drive,Brrrr~"); } void stop() { System.out.println("멈춰!"); } } class FireEngine extends Car { void water() { System.out.println("water!!"); } } Car클래스를 상속받은 FireEngine클래스이다. ※다시한번 다형성 PART-1의 개념을 반복해보자면, Car타입(조상 타입) 참조 ..

Java/Java Study 2021.05.03

[Bac|<joon>] 백준 1712 : 손익분기점 / 사용자입장 , 관건은 처리시간!

이 코드를 보고 처음에 실수한 두가지가 있는데, 이 두가지에 유의하면서 코드를 짜보겠다. 자, 우리가 구해야 할것은 무엇인가? 바로 손익분기점이 넘어가는 시점의 판매량을 구하는것이다. 간단하게 손익분기점 구하는식을 들여다보자 손익분기점 구하는 식 A(고정비용)+B(가변비용) * i = C(판매가) * i --> 이때의 i가 바로 우리가 구하는 값이다. 이때 좌변을 변수 X로 우변을 Y로 설정하여 " if(X

Java/BackJoon 2021.04.27

[Bac|<joon>] 백준 : 2839 : 설탕배달

이 문제를 맞닥뜨리면 가장 먼저 하는 착각이 있다. 본인은 봉지의 최소 개수만을 생각한 탓에 놓친 것이 있는데 이 문제는 수학 문제이기도 하지만 가장 중요한 목적은 가능하다면 5kg와 3kg를 이용해서 배달을 하는 게 목적이다. 예를 들어서 19kg이라면 5kg 두 개 3kg세개를 해서라도 배달을 해야 하는데 우리의 목표인 것 1) 설탕의 무게 N (Scanner로 입력받는다.) 2) for문의 구조 유의해야 할 점은 정확하게 N킬로그램을 만들 수 있다면, 5kg을 최대한 많이 만들어야 한다. 3kg는 최소로 만들어야 한다. 따라서 바깥 for문의 변수를 i로, 안쪽 for문을 j로 설정하여 조건식 "설탕의 무게=(5*j + 3*i)"를 만족하는 제일 처음의 (i, j) 조합을 구하여 서로 더하면 그게 ..

Java/BackJoon 2021.04.27

[객체지향] 다형성, Polymorphism - Part1

● 서로 상속관계에 있는 클래스 사이에서, 조상 클래스 타입의 참조 변수로 자손 클래스의 인스턴스를 참조할 수 있도록 하는 것을 다형성이라고 부른다. 위 문장만으론 다형성에 대한 감이 오질 않으니 코드를 보면서 객체를 생성해보자 class Tv { boolean power; int channel; void power() {} void channelUp() {} void channelDown() {} } class CaptionTv extends Tv { String text; void caption() {} } 위의 코드를 참조하여 Tv와 CaptionTv의 객체를 생성하면 다음과 같다. Tv tv1 = new Tv(); CaptionTv tv2 = new CaptionTv(); 일반적인 객체 생성은 위..

Java/Java Study 2021.04.26

new 연산자 와 객체생성에 대하여

다형성 공부하던 도중 예제에서 궁금한 점이 발견되었고, 나는 객체의 선언과 생성에 관하여 약간의 오해가 있었다는 걸 알게 되었다. Computer com = new Computer(); 컴퓨터라는 클래스에서 객체를 하나 생성하였다. 이것을 하나하나 분석해보자 1) Computer com; 내가 만든 클래스인 컴퓨터라는 참조 타입의 변수를 선언하였다(참조 변수). com은 참조 변수 이므로 초기값이 자동으로 null로 설정된다.(지역변수는 꼭 초기화를 거쳐야 한다.) 이제 com은 주소 값이 담길 그릇인 것이다. 2) new Computer(); 컴퓨터 클래스의 생성자에 new를 붙여주면 연산자 new에 의해서 Computer클래스의 인스턴스가 메모리 상의 빈 공간에 생성과 함께 이 객체의 주소가 생성된다..

Java/Java Study 2021.04.24

[Bac|<joon>] 백준 :1152 : 단어의 갯수 (StringTokenizer)

이 문제를 본순간 공백을 이용한 형변환 for문 if문등이 떠올랐고 코드도 쉽게 완성했다. 쉬운데 왜 정답률이 낮을까 생각했는데.. 결정적으로 해결할 수 없던 문제가 있다. 바로 '공백'만 입력되었을때, 이를 걸러내기가 힘들다는것 걸러내기위한 코드를 작성한다쳐도 코드가 이뻐지지않는게 딜레마였다. 그치만 몇몇 클래스를 이용하면 굉장히 간단하게, 이쁘게 단어갯수를 셀 수 있는 코드를 짤 수 있었던것이다. 1) StringTokenizer - 입력 Scanner StringTokenizer class 사용법 StringTokenizer sc = new StringTokenizer("abc def ghi"," "); System.out.println(sc.countTokens()); 실행결과 : 3 (문자의 개..

Java/BackJoon 2021.04.23

[Array] 버리긴 아까운 백준 오답 (feat.MultiArray,No.4434)

● 예제의 출력 결과만 보고 코딩을 하니 이런 식으로 코딩을 해 벼렸다고 한다. 그래도 2차원 배열은 어느 정도 할 줄 아는 듯하다.. public class Main { public static void main(String[] args) { int[][] Case = { { 5 }, { 5, 50, 50, 70, 80, 100 }, { 7, 100, 95, 90, 80, 70, 60, 50 }, { 3, 70, 90, 80 }, { 3, 70, 90, 81 }, { 9, 100, 99, 98, 97, 96, 95, 94, 93, 91 } }; int[] sumArr = new int[Case[0][0]]; for (int i = 1; i < Case.length; i++) { for (int j = ..

Java/Daily-Java 2021.04.21

[Bac|<joon>]백준 : 4344 :평균은 넘겠지

예제를 보는 순간 바로 배열을 사용하자는 생각이 떠올랐지만, 무식하게 2차 배열을 쓸 생각으로 코드를 짜다 보니 예제는 풀었지만 입력값을 줘야 하는 걸 까먹었다. (2차 배열을 이용한 예제 출력은 Daily-Java에 업로드 예정) 출력을 보면 우리는 대학생 새내기들이 속한 행에서 평균점수를 넘는 학생의 수치만 출력하면 된다. 배열에 모든 숫자를 넣어 관리하면서 예제를 출력하는 방식이 아니라 그때그때 필요한 행의 점수를 입력해서 원하는 값을 출력 후 초기화하여 배열을 재사용하는 코드를 짜 보도록 하자 1) testcase 학생들의 평균점수를 넘은 수치를 구하는 건 testcase 만큼 실행한다. 즉 testcase는 총 실행 횟수 첫 번째 for문의 변수 2) 학생수 N 각 testcase마다의 학생수 ..

Java/BackJoon 2021.04.21