Stack 스택으로 reverseString 구현 package adt; // Stack 클래스 public class Stack { private char [] myStack; private int maxSize; private int top = -1; Stack(int s) { this.maxSize = s; myStack = new char [maxSize]; } public void push(char i) { top++; myStack[top] = i; } public char pop() { int old_top = top; top--; return myStack[old_top]; } public boolean isEmpty() { if(top == -1) { return true; } retur..
Instanceof 참조변수의 인스턴스타입을 확인하며 boolean값을 반환. void work (Car c) { if(c instanceof FireEngine) { FireEngine fe = (FireEngine)c; fe.water(); ... } else if(c instanceof Ambulance) { Ambulance a = (Ambulance)c; a.siren(); ... } } Car 클래스의 참조변수 c가 어떤 인스턴스타입인지 확인하여 작업을 수행한다. 조상타입의 참조변수로는 실제 인스턴스 멤버들을 모두 사용할 수 없기 때문에 실제 인스턴스와 같은 타입의 참조변수로 형변환해야만 인스턴스의 모든 멤버를 사용할 수 있다. instanceof의 결과가 true면 그 타입으로 형변환해도 문..
다형성(polymorphism) def: 조상클래스 타입의 참조변수로, 자손클래스의 인스턴스를 참조할 수 있도록 한 것. // 예시 class TV { /* 내용 생략 */ } class captionTV extends TV { /* 내용 생략 */ } TV t = new CaptionTV(); // 조상 타입의 참조변수로 자손 인스턴스를 참조 captionTV ct = new TV(); // ERR!! 이 경우, t는 CaptionTV의 인스턴스이지만 TV타입의 참조변수이기 때문에 상속된 TV클래스에만 접근할 수 있다. 즉 TV클래스에서 정의되지 않고 captionTV에서만 정의된 인스턴스 멤버에는 접근할 수 없다. 그렇다면, captionTV타입의 참조변수로 정의하면 모든 멤버를 사용할 수 있을텐데 ..
클래스 간의 관계 상속(Inheritance) class Parent { } class Child extends Parent { } 포함(Composite) class Circle { int x; // 원점 x좌표 int y; // 원점 y좌표 int r; } class Point { int x; int y; } // Point 클래스를 재사용하여 클래스 내에 포함시키는 경우 class Circle { Point c = new Point(); // 원점 int r; } 클래스 간 관계 중 어느 것이 적절할 지 판단하는 기준 상속관계 => ~은 ~이다. (eg. 스포츠카는 자동차이다.) 포함관계 => ~은 ~을 가지고 있다. (eg. 원은 원점을 가지고 있다.) 상속 및 포함 예시 class DrawSha..
메서드의 호출 다른 타입으로 호출했을 경우 class MyMathTest { public static void main(String args[]) { MyMath mm = new MyMath(); double result = mm.divide(5L, 3L); System.our.println(result); // prints 1.6666666666666667 } } class MyMath { double divide(double a, double b) P return a / b; } divide 메서드 선언 시에 패러미터는 double형으로 선언했는데, 실제 아규먼트는 long형으로 대입한 경우, double a = 5L;과 같아서, long형 값을 double형 변수에 저장하는 것과 같다. 이 경우 d..
기본형, 참조형 parameter 참조형 예시1 class Data { int x; } class ReferenceParamEx { public static void main(String[] args) { Data d = new Data(); d.x = 10; System.out.println(d.x); // prints 10 change(d); // pass d System.out.println(d.x); // After change, prints 1000 } static void change(Data d) { d.x = 1000; } } change메서드의 매개변수가 참조형이라서 값이 아니라 값이 d가 저장된 주소를 change메서드에게 넘겨주기 때문에, 메서드를 호출한 뒤 d.x값이 변경된다. 참조..
선언위치에 따른 변수의 종류 변수 종류는 세 가지이다. 클래스변수(class variable) 인스턴스변수(instance variable) 지역변수(local variable) 변수의 종류 선언위치 생성시기 클래스 변수 클래스 영역 클래스가 메모리에 올라갈 때 인스턴스 변수 클래스 영역 인스턴스가 생성될 때 지역 변수 메서드 영역 변수 선언문이 수행될 때 클래스 변수는 모든 인스턴스가 공통된 저장공간을 공유한다. 한 클래스의 모든 인스턴스들이 같은 값을 가진다. (자바스크립트의 프로토타입 같다.) 앞에 static이 붙는다. 클래스 변수는 객체생성 없이 클래스이름.클래스변수로 직접 사용가능하다. 인스턴스 변수는 독립적인 저장공간을 가지므로 서로 다른 값을 가진다. 인스턴스마다 고유한 상태를 가질 수 있..
Getter and Setter 예시 1 class Member4 { int i; String name; String account; String passwd; private int birthyear; void setBirthyear(int birthyear) { if(birthyear < 0) { return; } this.birthyear = birthyear; } int getBirthyear() { return birthyear; } } 예시 2 public class Time { private int hour; private int minute; private float second; // Getter public int getHour() { return hour; } public int get..
자바언어의 특징 자바 응용프로그램은 운영체제나 하드웨어가 아닌 JVM(Java Virtual Machine)과 통신하고, JVM이 자바 응용프로그램으로부터 전달받은 명령을 운영체제가 이해할 수 있도록 변환한다. 따라서 자바로 작성된 프로그램은 운영체제와 관계없이 실행 가능하다. (Write once, run anywhere) 단 JVM은 운영체제에 종속적이므로 해당 OS에서 실행가능한 JVM이 필요하다. 컴파일 언어(eg. C)와 인터프리터 언어(eg. JS)의 특징을 모두 가지고 있다. 컴파일 언어는 OS가 바로 명령을 수행하므로 OS 의존적일 수밖에 없으나 그만큼 빠르다는 장점이 있다. 반면 인터프리터 언어는 OS와 관계없이 인터프리터만 있으면 실행이 가능하다. 자바는 .java파일을 컴파일하여 .c..
Switch package com.Hazel; public class Main { public static void main(String[] args) { int value = 1; // if(value == 1) { // System.out.println("Value is 1"); // } else if(value== 2) { // System.out.println("Value is 2"); // } else { // System.out.println("Was not 1 or 2"); // } int switchValue = 4; switch (switchValue) { case 1: System.out.println("Value was 1"); break; case 2: System.out.print..
Method Overloading Same named method and different number of parameters. 예제1 - 숫자들의 sum 구하기 안 좋은 예 public static int sumTwoNum(int a, int b) { return a + b; } public static int sumThreeNum(int a, int b, int c) { return a + b + c; } public static int sumFourNum(int a, int b, int c, int d) { return a + b + c + d; } 메소드 이름이 다 다르기 때문에 복잡하고 기억하기 어렵다. Overloading public static int sum(int a, int b) { ..
Code Exercise package com.Hazel; public class Main { public static void main(String[] args) { int score = 1500; int scorePosition = calculateHighScorePosition(score); displayHighScorePosition("Hazel", scorePosition); score = 900; scorePosition = calculateHighScorePosition(score); displayHighScorePosition("Ryan", scorePosition); score = 400; scorePosition = calculateHighScorePosition(score); disp..
Expressions package com.Hazel; public class Main { public static void main(String[] args) { int score = 100; // score에서 100까지가 exp if(score > 99) { System.out.println("You got the high score!"); score = 0; } } } data type과 ;을 제외한 부분이 expression이다. brace와 bracket 안은 expression이다. if, brace와 bracket은 expression이 아니다. score = 0는 expression이다. package com.Hazel; public class Main { public static voi..
Int, Byte, Short, Long package com.Hazel; public class Main { public static void main(String[] args) { // int has a width of 32 int myMinValue = -2_147_483_648; int myMaxValue = 2_147_483_647; // byte has a width of 8 byte myMinByteValue = -128; byte myMaxByteValue = 127; // short has a width of 16 short myMinShortValue = -32_768; short myMaxShortValue = 32_767; // long has a width of 64 long my..
- Total
- Today
- Yesterday
- getter
- Prefix Sums
- youtube data api
- SQL
- 리덕스
- oracle
- Redux
- c언어
- 인스턴스
- package.json
- GIT
- til
- react
- 자바
- this
- Java
- Data Structure
- JavaScript
- 개발 공부
- useEffect
- 알고리즘
- CSS
- rxjs
- 제네릭스
- Conflict
- 깃
- Session
- jQuery
- 포인터 변수
- linkedlist
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |