Java 생성자, this, super
2018-11-06 00:00:00 +0000생성자 호출 순서
C가 B를 상속하고 B가 A를 상속하고 있다
public class A {
public A(){
System.out.println("A 생성자 호출");
}
}
public class B extends A{
public B() {
System.out.println("B 생성자 호출");
}
}
public class C extends B{
public C(){
System.out.println("C 생성자 호출");
}
}
결과
A 생성자 호출
B 생성자 호출
C 생성자 호출
this, this(), super, super()
- this : 현재 클래스를 가르킴. this.멤버변수 사용 시 현재 클래스의 멤버변수를 사용
- super : 부모 클래스를 가르킴. super.멤버변수 사용 시 부모클래스의 멤버변수를 사용 만약 B클래스가 a 멤버변수가 없다면 C클래스가 super.a 하면 A의 멤버변수 a가 호출됨
public class A {
protected int a = 1;
public A(){
System.out.println("A 생성자 호출");
}
}
public class B extends A{
int a = 2;
public B() {
System.out.println("B class super.a:"+super.a+" this.a:"+this.a+" a:"+a);
}
}
public class C extends B{
int a = 3;
public C(){
System.out.println("C class super.a:"+super.a+" this.a:"+this.a+" a:"+a);
}
}
출력결과
A 생성자 호출
B class super.a:1 this.a:2 a:2
C class super.a:2 this.a:3 a:3
- this() : 자신의 생성자를 불러온다
- super() : 자신의 부모클래스의 생성자를 불러온다
- 둘 다 { 다음에 바로 써야한다. 그렇지 않으면 ‘Constructor call must be the first statement in a constructor’ 에러가 난다
- { 다음에 바로 써야 하기 때문에 this(), super() 동시에 사용하진 못한다
public class A {
protected int a;
public A(){
this(2);
System.out.println("A() 생성자 호출");
//this(2); // error must be first!
//A(1); // error
//this.A(1); // error
}
public A(int a){
System.out.println("A(int a) 생성자 호출");
this.a = a;
}
}
출력결과
A(int a) 생성자 호출
A() 생성자 호출
- 자식 클래스에서 super 호출
public class B extends A{ protected int a; public B() { System.out.println("B()"); } public B(int a){ super(1); System.out.println("B(int a)"); this.a = a; } }
출력결과
A(int a) 생성자 호출
B(int a)
roomnum
2018-11-05 00:00:00 +0000Problems
https://www.acmicpc.net/problem/1475
Problems solving
각 플라스틱 숫자 중 가장 많이 포함된 숫자 갯수 만큼 사면된다.
다만 6과 9는 합쳐서 계산해야하므로 ‘숫자 6,9 제외 각각 개수’와 ‘숫자 6,9 개수’ 를 비교한다(6,9개수/2+나머지로 비교)
예를 들어 번호판이 ‘212242699’라면
1: 1개
2: 4개
4: 1개
6, 9 : 3개
2번이 4개로 가장 많으므로 플라스틱 숫자판은 4개를 사면 된다
또 번호판이 6과 9를 합친개수가 많은 ‘34969241’ 이라면
1:1개
2:1개
3:1개
4:2개
5:3개
3/2 + 3%2 = 1 + 1 = 2개로 세트를 2개 사면 된다
Source 구현 순서
- 입력값의 자리수를 구한다
- 자리수만큼 돌면서 각 자리의 숫자 counting한 것을 배열에 저장한다
- 최고로 많이 카운팅된 값과 6, 9를 더한 값/2한 값을 비교한다
6, 9값 제외한 값 이 제일 크다면 그 값을 쓴다.
하지만 6,9 포함한 값이 크다면 6,9카운팅/2 + 나머지로 계산할 수 있다 - 만약 6과 9를 더한 값이 같거나 크다면 최고로 많이 카운팅 된 값을 수정한다
Source
import java.util.Scanner;
public class RoomNum {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[] arrIndex = new int[10];
int value = sc.nextInt();
int i = 1; // 자리수가 몇개인지 알아내기 위해서 받은 값을 나누는데 사용
int count = 1; // 자리수 개수
while(true) // 자리가 몇 개 있는지 체크
{
if(value/i < 10) // 1의 자리가 되면 종료
break;
i*=10;
++count;
}
int maxCount = arrIndex[0];
int nine = 0;
for(int k = 0; k < count; ++k)
{
int num = value/i;
if(9 == num || 6 == num)
{
++nine;
}
else
{
++arrIndex[num];
if(arrIndex[num] > maxCount)
maxCount = arrIndex[num];
}
// 값을 뺀다
value = value - (i*num);
i*=0.1f;
}
if(maxCount <= nine/2)
maxCount += ((nine%2) + (nine/2) - maxCount);
System.out.println(maxCount);
}
}
BeeHouse
2018-11-04 00:00:00 +0000문제
https://www.acmicpc.net/problem/2292
문제 풀이
- 벌집의 모양을 2차원 배열로 풀면 다음과 같다
- 0번째 배열 : [1]
- 1번째 배열 : [2][3][4][5][6][7]
- 2번째 배열 : [8][9][10][11][12][13][14][15][16][17][18][19] ….
0번째=>1번째 배열을 넘어갈 때 제외하고 6개씩 늘어난다.
벌집이 6각형인데 다음 배열로 넘어가면 3면은 기존벌집과, 3면은 새로운 벌집과 만나게 된다.
여기서 같은 배열끼리 중복해서 닿은 걸 빼면 6면이 추가로 맞닿게 된다.
이건 아무리 벌집이 많아져도 동일하다.
(계차수열 문제)
Source
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int index = sc.nextInt();
int count = index;
int i = 1;
while(count > 1)
{
count = count - (6*i);
++i;
if(0 >= count)
break;
}
System.out.println(i);
}
}
Git Reset, Revert
2018-11-03 00:00:00 +0000reset
- git reset version –option
- 특정 상황으로 되돌아가고 싶을 때 사용. version 이후 커밋은 사라진다(로그에도 reset했다는 내용이 남지 않음)
- –option은 hard, mix, soft가 있다
- reset은 내 컴퓨터에 있는 작업일 경우에만 해야한다. 원격 저장소에 올려져있는 내용을 하면 안됨
revert
- git revert version id
- revert하면 reset과 달리 새로운 version이 생긴다
- 현재version <-> 되돌아간 verison 사이에 변경 된 파일이 working copy 에 들어가는 것 같다
- revert 로그가 바로 보이지 않고 해당 파일 수정 후 커밋해야 한다
- 충돌했는지 꼭 해당 파일을 확인할
Git Log
2018-11-03 00:00:00 +0000git log 명령어
- git log
- git의 이력을 볼 수 있다
- git log -p 명령어
- 각각의 소스사이에 차이점을 알 수 있다
- git log -p 예시
- 아래로 갈수록 예전에 commit한 내용이다
- 이전 커밋 버전은 —을 나타내고, 지금 버전은 +++을 나타낸다
- f2.text doc2 로그를 보면 이전 버전이 — /dev/null 이다. 이전 버전에선 f2.text가 존재하지 않았다는 뜻이다
- +i’m happy, +modify 는 추가된 내용을 의미한다
- commit은 해당 로그의 고유한 주소를 의미한다
- git log commitid
- commitid 커밋 로그까지 볼 수 있다
doc2:
diff --git a/f2.text b/f2.text
new file mode 100644
index 0000000..8ffce26
--- /dev/null
+++ b/f2.text
@@ -0,0 +1 @@
+i'm happy
commit c2e948e301602580d08e9260ebf2bdfd9eafb073
Author: parkwonhui <parkwonhui.dev@gmail.com>
Date: Sat Nov 3 13:15:10 2018 +0900
modify!
diff --git a/text.txt b/text.txt
index 9a80b23..9281633 100644
--- a/text.txt
+++ b/text.txt
@@ -1,2 +1,3 @@
hello
first git!
+modify
git diff 명령어
- git diff
- 커밋하기 전에 변경사항을 알려준다(stage area는 사용x)
- git diff commit id..commit id
- 첫번째 commit id와 두번째 commit id 사이에 변경점을 말해준다
- git diff 9d5eb39d054fa25f297284f9314dd3e748ee6fdf..bb5bb7ced2d628b692b78fdfceb45401fff1777b
diff --git a/f2.text b/f2.text
new file mode 100644
index 0000000..8ffce26
--- /dev/null
+++ b/f2.text
@@ -0,0 +1 @@
+i'm happy
diff --git a/text.txt b/text.txt
index 9a80b23..9281633 100644
--- a/text.txt
+++ b/text.txt
@@ -1,2 +1,3 @@
hello
first git!
+modify
Posts
-
Interceptor(인터셉터)
-
Android Studio Install
-
계층형 게시판
-
VirtualBox Ubuntu 18.04.2 LTS
-
TransactionAwareDataSourceProxy Error
-
Java Coding Conventions
-
Java Long과 long의 차이
-
Mybatis 객체 안에 객체 매핑
-
JavaConfig mariadb 연결
-
DataTable
-
관리자 페이지
-
MappingJackson2JsonView
-
Spring Javaconfig
-
게시판 만들기-제품 등록
-
게시판 만들기-제품 페이지 제작
-
게시판 만들기-회원탈퇴 및 게시판 삭제 플래그 추가
-
footer 하단에 고정시키기
-
bootstrap4 사용법
-
Spring 데이터 검증 @Valid, BindingResult
-
brackets 실시간 미리보기
-
Spring 기본설정(pom.xml, web.xml, encoding)
-
Vue.js computed, methods, watch
-
javascript onkeyup
-
Maria DB Incorrect string value Error
-
javascript 암호화(md5, base64)
-
Vue.js template
-
Vue.js 소개
-
Nexacro 설명
-
ControllerAdvice
-
Batch
-
html 페이지 로딩 순서
-
소수구하기(PrimeNumber)
-
최소공배수,최대공약수
-
Stream
-
Lambda(람다식)
-
inner class(내부 클래스)
-
final 키워드
-
file upload
-
파이썬 빅 데이터 K-평균(K-means)
-
아나콘다(Anaconda), 주피터 개발환경 세팅
-
텐서플로우(TensorFlow) 아키텍쳐 및 Session
-
텐서플로우(TensorFlow)상수, 변수, 함수
-
머신러닝 기초
-
한글 리스트 오름차순, 내림차순
-
연속된 글자의 갯수 출력
-
java spring5 프로젝트 설정
-
restController
-
spring 세팅 및 기본설정
-
mybatis trim
-
jquery datepicker
-
ajax로 데이터 전달/응답 받는법
-
mybatis error
-
mybatis 게시판 만들기 순서
-
Java Jsp Mybatis Dynamic Query
-
mybatis
-
git 소개
-
node.js 개발환경 구축
-
node.js 기본 내장 모듈
-
node.js의 전역 객체
-
node.js http module
-
node.js event
-
jdbc
-
자바빈
-
jsp, servlet 정리
-
java null object pattern
-
다음지도 key 등록(kakao map)
-
공공 데이터 open api
-
facebook login api
-
sourcetree 사용법
-
JavaScript event3
-
JavaScript jquery
-
JavaScript dom
-
JavaScript ajax
-
JavaScript 이벤트2
-
JavaScript 캡슐화
-
JavaScript Array,내장객체
-
JavaScript var
-
JavaScript 객체,생성자
-
JavaScript 함수,클로저
-
JavaScript Event
-
javascript eclipse 자동완성(with tern)
-
CSS position
-
HTML5,CSS 선택자
-
자바 시간 측정
-
git,eclipse 연동
-
HTML 기초 정리
-
Eclipse Web 환경세팅
-
피보나치의 수
-
Oracle 반복문,커서,예외,저장 서브프로그램
-
Oracle PL/SQL
-
Oracle 다중쿼리(Multiple row query)
-
Oracle 인덱스, 뷰, 시퀀스, 트랜잭션, 세션 정리
-
Oracle JOIN 정리
-
Oracle DDL, DML 정리
-
Oracle 문자열 함수 정리
-
Oracle 숫자,날짜,자료형 변환 함수 정리
-
Oracle 제약조건 정리
-
Oracle 기초 쿼리 정리
-
문제2775
-
DFS
-
junit
-
json
-
algorithmus basic
-
circular queue(원형큐)
-
binary search(이진탐색)
-
port forwarding(포트포워딩)
-
kakao chatbot(카카오 챗봇)
-
java io
-
sort comparable, comparator
-
Unresolved compilation problem
-
ArrayList, HashMap
-
Regular(정규표현식)
-
Enum Class
-
String Function
-
refactoring 이란(상수,제어플래그,assert)
-
reference,abstract 정리
-
FileNotFoundException Solve
-
static
-
Thread Synchronization(스레드동기화,원자성)
-
Java Exception(예외처리)
-
Java 생성자, this, super
-
roomnum
-
BeeHouse
-
Git Reset, Revert
-
Git Log
-
Array
-
stack
-
pyramid draw
-
Star Draw(별 그리기4)
-
Star Draw(별 그리기3)
-
Star Draw(별 그리기2)
-
Star Draw(별 그리기1)
-
Loop(While, For)
-
자바 데이터 타입, 데이터 연산
-
시계방향 달팽이 그리기
-
정수값의 짝수,홀수 갯수 구하기
-
java, Scanner 정리
-
draw dog
subscribe via RSS