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