Java/Basic
-
[Java_Basic]자바의 기본 클래스(윤성우의 열혈 Java 프로그래밍)Java/Basic 2021. 1. 23. 23:22
래퍼 클래스 (Wrapper 클래스) string 이 아닌 int 나 double 형 실수와 같은 기본 자료형의 값들을 인스턴스로 표현을 해야 할 때 해당 자료형으로 값을 감싸서 표현할 수 있다. class UseWrapperClass { public static void showData(Object obj) { System.out.println(obj); } public static void main(String[] args) { Integer iInst = new Integer(3);//정수 3을 감싸는 래퍼 인스턴스 생성 showData(iInst); showData(new Double(7.15));//7.15를 감싸는 래퍼 인스턴스 생성 및 전달 } } 다른 때와 달리 컴파일 할때 위와같은 오류가..
-
[Java_Basic]자바의 메모리 모델과 Object 클래스(윤성우의 열혈 Java 프로그래밍)Java/Basic 2021. 1. 6. 22:34
finalize 메소드 이전에 인스턴트는 힙영역에 존재한다는 것과 가비지 컬렉션이라는 것을 알게 되었다. finalize 메소드는 이 가비지 컬렉션을 비워주는 역할을 하는 메소드이다. 자바 가상 머신에서는 굳이 이 메소드를 호출해주지 않아도 이 역할을 해주므로 굳이 사용할 필요는 없는 메소드이지만 가비지 컬렉션의 이해를 돕기 위한 개념으로 나오게 되었다. 임베디드 같이 작은 메모리 공간에서 작업할 때 사용하게 된다. class Person{ String name; public Person(String name){ this.name = name; } @Override protected void finalize() throws Throwable{ super.finalize();//상위 클래스의 finaliz..
-
[Java_Basic]자바 가상머신의 메모리 모델(윤성우의 열혈 Java 프로그래밍)Java/Basic 2021. 1. 5. 22:18
자바 가상 머신 (JVM) 은 운영체제 위에서 실행된다. 운영체제에겐 똑같은 응용프로그램이므로 운영체제에게서 메모리를 할당받는다. 운영체제가 할당해준 메모리 안에서 스스로 실행하고, JVM만이 아닌 필요한 다른 자바 응용 프로그램의 실행도 돕는다. 가상머신은 메모리를 효율적으로 사용하기 위해 구간을 나눠놨다 메소드영역, 스택영역, 힙영역이 그것이다. 메소드 영역 : 메소드의 바이트코드, static변수 바이트코드(명령문들의 모임) 메소드 영역은 프로그램이 종료될때 까지 유지된다 스택 영역 : 지역변수, 매개변수 스택 임시저장. 자신의 할당영역 벗어나면 소멸된다. 힙 영역 : 인스턴스 하나의 참조변수가 사라진다해서(스택) 인스턴스까지 지우면 안된다. 이 이유가 인스턴스를 스택 영역에서 다루지 않는 이유이다..
-
[Java_Basic]예외처리(윤성우의 열혈 Java 프로그래밍)Java/Basic 2021. 1. 2. 19:47
예외 예외적인 상황. 문법 오류가 아닌 정상적이지 않은 상황. 일반적인 예외 상황이란 사용자가 만드는 예외상황 예외 처리 예외 상황에 대한 처리를 의미. 자바는 예외처리 메커니즘을 제공한다. import java.util.Scanner; class ExceptionCase{ public static void main(String[] args){ Scanner kb = new Scanner(System.in); System.out.print("a/b...a? "); int n1 = kb.nextInt(); System.out.print("a/b...b? "); int n2 = kb.nextInt(); System.out.printf("%d / %d = %d \n", n1, n2, n1/n2); System..
-
[Java_Basic]인터페이스와 추상 클래스(윤성우의 열혈 Java 프로그래밍)Java/Basic 2021. 1. 2. 17:40
인터페이스 통신 도구, 수단. 기능을 활용하는 방법 구현할 인터페이스를 명시할 때 키워드 implements 를 사용한다 한 클래스는 둘 이상의 인터페이스를 동시에 구현할 수 있다. 상속과 구현은 동시에 가능하다. 사용자에게 쓰기쉽게 포장해 논것 (게임기의 조이스틱,버튼처럼 그 안을 사용자가 알아야 할 필요는 없다) interface Printable{ public void print(String doc); //추상 메소드 : 몸체가 없다 } 인스턴스 생성 불가 class Printer implements Printable{ //상속 아니고 구현!! public void print(String doc){ System.out.println(doc); } } 인터페이스형 참조변수 선언 가능 Printable..
-
[Java_Basic]클래스의 상속3 : 상속의 목적(윤성우의 열혈 Java 프로그래밍)Java/Basic 2021. 1. 2. 16:29
상속의 활용 class Friend{ protected String name; protected String phone; public Friend(String na, String ph){ name = na; phone = ph; } public void showInfo(){ System.out.println("이름 : " + name); System.out.println("전화 : " + phone); } } class UnivFriend extends Friend{ private String major; public UnivFriend(String na, String ph, String ma){ super(na, ph); major = ma; } public void showInfo(){ super.s..
-
[Java_Basic]클래스의 상속 2 : 오버라이딩(윤성우의 열혈 Java 프로그래밍)Java/Basic 2021. 1. 2. 15:34
상속의 특성 하위 클래스는 상위 클래스의 모든 특성을 지닌다. 하위 클래스는 자신의 특성을 더한다. Life is a journey. 인생은 여행이다. 노트북은 컴퓨터이다. IS-A 관계 : A is a B class MobilePhone{ protected String number; public MobilePhone(String num){ number = num; } public void answer(){ System.out.println("Hi~ from " + number); } } class SmartPhone extends MobilePhone{ private String androidVer; public SmartPhone(String num, String ver){ super(num); an..
-
[Java_Basic]클래스의 상속1 : 상속의 기본(윤성우의 열혈 Java 프로그래밍)Java/Basic 2021. 1. 2. 13:49
상속 연관된 일련의 클래스들에 대해 공통적인 규약을 정의할 수 있다 (단순히 재활용의 목적으로 상족이 쓰일 경우 무의미한 코드가 될 수 있다) 상속의 특성 부모 클래스 class Man{ String name; public void tellYourName(){ System.out.println("My name is " + name); } } 자식클래스 class BusinessMan extends Man{//Man 클래스를 상속하는 클래스 String company; String position; public void tellYourInfo(){ System.out.println("My company is" + company); System.out.println("My position is " + pos..