본문 바로가기

개발/Java

Object.equals()와 String.equals()의 차이점 String.equals()는 메모리 주소에 상관없이 값이 같다면 true를 리턴 해준다. 하지만 Object.equals() 메모리 주소도 동일 해야지 true를 리턴 해준다. String의 경우는 메모리 주소에 상관없이 값이 같다고 나와있지만 처음에 변수가 값을 받을 때 동일한 값이면 같은 메모리 주소에 존재하는 값을 불러 오는 것으로 알고 있다. 더보기
클래스, 인스턴스, 객체 클래스(Class): 클래스란 어떤 특정 종류의 모든 객체들에 대해 일반적으로 적용할 수 있는 변수와 메소드를 정의하고 있는 소프트웨어적인 설계도(blueprint) 또는 프로토타입(prototype)이라 할 수 있습니다. 예를 들어, 실세계에 존재하는 자동차들인 아반떼, 누비라, 그랜저, 티코, 아토스, 봉고, 또는 버스 등의 자동차들이 가질 수 있는 상태 정보와 행동에 대하여 일반화시켜 정의해 놓은 것이 자동차 클래스가 될 수 있습니다. 다시 말해서, 실세계에 존재하는 객체들이 가질 수 있는 상태와 행동들에 대해 소프트웨어적으로 추상화(abstraction) 해 놓은 것이 클래스라는 것입니다. 이러한 클래스를 청사진이라 표현하기도 하고, 벽돌을 찍기 위한 하나의 틀로써 비유되기도 합니다. 인스턴스(I.. 더보기
Integer.parseInt() String을 int로 형변환 할때 사용한다. API(Integer class 에서 parseInt를 검색) ex) int first = Integer.parseInt(args[0]); 더보기
new 생성자 instance 를 만들때 사용하는 연산자로 아래와 같이 사용한다. Dog myDog = new Dog(); 첫 번째 Dog myDog = new Dog(); JVM에 인스턴스 변수를 위한 공간을 할당하도록 지시한다. 인스턴스 변수의 유형은 한번 정해지면 바뀌지 않는다. 두 번째 Dog MyDog = new Dog(); 객체를 만든다. JVM에 가비지 컬렉션 기능이 있는 힙에 새로운 Dog 객체를 위한 공간을 할당하도록 지시한다. 세번째 Dog MyDog = new Dog(); 객체와 인스턴스를 연결한다. 새로 만들어진 Dog 객체를 MyDog라는 인스턴스 변수에 대입한다. 더보기
클래스 java.lang.Object 모든 Java 클래스의 최상위 클래스이고 lang 패키지에 있다. 따라서 import 문을 사용하지 않더라도 자바 컴파일러가 자동적으로 Object 클래스를 제공 해준다. 그러므로 이 클래스가 제공하는 메소드는 자바의 어떤 클래스에서든 사용할 수 있다. 즉, 모든 클래스는 소스 맨 앞에 다음과 같은 import문이 생략되어 있다. import java.lang.*; 메소드 - clone(): 객체 자신을 복사하여 똑같은 객체를 하나 더 생성 - equals(Object obj) : 주어진 객체와 같은 내용을 가지고 있는지를 검사. 일반적으로, 하위클래스는 equals 메소드를 재정의한다. - finalize() : null 값을 가진 객체가 가비지 콜렉터에 의해 메모리상에서 제거되기전에 호출되는 메쏘드 .. 더보기
제임스 고슬링 제임스 고슬링(James A. Gosling, 1955년 5월 19일 ~ )은 캐나다의 소프트웨어 개발자이다. 자바를 최초 개발하여 '자바의 아버지'라 불리며, 가장 영향력 있는 Programmer 중 한 사람이다. Java 이외에도 Multi-Processor용 UNIX와 Complier, Mail System, 데이터 인식 시스템 등을 개발하였다. 개발자 가운데서는 마이크로소프트의 빌 게이츠(William H. Gates)만큼이나 유명하지만, 개발자 특유의 '몰두' '은둔' 성향 때문에 세상에 널리 알려지지는 않았다. 그는 또 Java커피를 하루에도 10여 잔 씩 마시는 Java 예찬론자이기도 해서, 'Java'라는 명칭을 인도네시아 섬 이름으로 유명한 커피 재배지에서 따왔다고 한다. 역사 제임스 고.. 더보기
접근 변경자(public, protected, private)의 차이점 클래스 - public: 모든 패키지에서 접근을 허용한다. - protected: 자신을 포함하는 클래스 및 상속받은 클래스 접근 가능 - private: 같은 클래스 내에서만 접근 가능 메소드 - public: 해당 클래스 밖에서도 접근 가능 - protected: 해당 클래스 및 상속받은 클래스에서 접근 가능 - private: 해당 클래스에서만 접근 가능 더보기
[Head First Java] Chapter5 SimpleDotCom(간단한 닷컴 게임) 테스트 코드 Chpater5 에서는 닷컴 가라앉히기라는 게임을 만들게 되는에 여기에서는 바로 코드를 만드는게 아니라 준비 코드를 만들고 테스트 코드를 만든 다음에 실제 코드를 완성하라고 알려주고 있다. 테스트 코드를 먼저 만들어놓은 것은 익스트림 프로그래밍의 여러 규칙 가운데 하나라고 한다. 아래와 같이 테스트 코드를 코딩하였다. SimpleDotComTestDrive 클래스 public class SimpleDotComTestDrive { public static void main(String[] args) { SimpleDotCom dot = new SimpleDotCom(); int[] locations = {2,3,4}; dot.setLocationCells(locations); String userGuess.. 더보기
[Head First Java] Chapter4 연습문제 수영장 퍼즐 코드 조각을 한번만 사용하여 아래와 같은 출력 결과를 얻어야 한다. 출력 결과 result 543345 문제 public class Puzzle4 { public static void main(String[] args) { ________________________ int y = 1; int x = 0; int result = 0; while(x 0){ ________ result = result + ____________ } System.out.println("result " + result); } } class ________{ int ivar; ______.. 더보기
[Head First Java] Chapter4 연습문제 결과를 맞춰봅시다. 문제 소스에서 특정 부분에 코드를 대입하여 나오는 출력 결과를 알아내기. 문제 public class Mix4{ int counter = 0; public static void main(String[] args){ int count = 0; Mix4[] m4a = new Mix4[20]; int x = 0; while(_____){ m4a[x] = new Mix4(); m4a[x].counter = m4a[x].counter + 1; count = count + 1; count = count + m4a[x].maybeNew(x); x = x + 1; } System.out.println(count + " " + m4a[1].counter); } public int maybeNew(int index){ i.. 더보기
[Head First Java] Chapter4 연습문제 컴파일러가 되어봅시다. B문제 소스가 컴파일 잘 되는지 확인 원본 소스 class Clock { String time; void setTime(String t){ time = t; } void getTime(){ return time; } } class ClockTestDrive { public static void main(String[] args) { Clock c = new Clock(); c.setTime("1245"); String tod = c.getTime(); System.out.println("time: " + tod); } } 정답 class Clock { String time; void setTime(String t){ time = t; } String getTime(){ return time; } } class .. 더보기
[Head First Java] Chapter4 연습문제 컴파일러가 되어봅시다. A문제 소스가 컴파일 잘 되는지 확인 소스 public class XCopy { public static void main(String[] args){ int orig = 42; XCopy x = new XCopy(); int y = x.go(orig); System.out.println(orig + " " + y); } int go(int arg){ arg = arg * 2; return arg; } } 컴파일이 잘 된다. 출력 결과 42 84 더보기
[Head First Java] Chapter4 GoodDog 클래스 캡슐화 GoodDog 클래스 class GoodDog { private int size; public int getSize(){ return size; } public void setSize(int s){ size = s; } void bark(){ if(size > 60){ System.out.println("Wooof! Wooof!"); } else if(size > 14){ System.out.println("Ruff! Ruff!)"); } else{ System.out.println("Yip! Yip!"); } } } GoodDogTestDrive 클래스 class GoodDogTestDrive { public static void main(String[] args) { GoodDog one = new .. 더보기
[Head First Java] Chapter4 크기와 짖는 소리 Dog 클래스에는 size라는 인스턴스 변수가 있는데, bark() 메소드에서 이 값을 이용하여 짖는 소리를 결정할 수 있다.. 소스 class Dog { int size; String name; void bark(){ if(size > 60){ System.out.println("Wooof! Wooof!"); } else if(size > 14){ System.out.println("Ruff! Ruff!"); } else{ System.out.println("Yip! Yip!"); } } } public class DogTestDrive { public static void main(String[] args) { Dog one = new Dog(); one.size = 70; Dog two = new .. 더보기
[Head First Java] Chapter3 연습문제 수영장 퍼즐 코드 조각을 한번만 사용하여 아래와 같은 출력 결과를 얻어야 한다. 출력 결과 triangle 0, area = 4.0 triangle 1, area = 10.0 triangle 2, area = 18.0 triangle 3, area = 28.0 y = 4, t5 area = 343.0 코드 조각 x y area ta.area ta.x.area ta[x].area Triangel[] ta = new Triangle(4); Triangle ta = new[] Triange[4]; Triangle[] ta = new Triangle[4]; 4, t5 area = 18.0 4, t5 area = 343.0 27, t5 area = 18.0 27, t5 area = 343.0 ta[x] = setArea();.. 더보기
[Head First Java] Chapter3 연습문제 코드 자석 코드 조각을 가지고 아래와 같은 출력 결과를 가지는 코드를 만들어야 한다. 출력결과 island = Fiji island = Cozumel island = Bermuda island = Azores 코드 조각 int y = 0; ref = index[y]; islands[0] = "Bermuda"; islands[1] = "Fiji" islands[2] = "Azores"; islands[3] = "Cozumel"; int ref; while(y < 4){ system.out.println(islands[ref]); index[0] = 1; index[1] = 3; index[2] = 0; index[3] = 2; String[] islands = new String[4]; System.out.print.. 더보기
[Head First Java] Chapter3 연습문제 컴파일러가 되어봅시다. B문제 소스가 컴파일을 할 수 있는지 확인 문제 소스 public class Hobbits { String name; public static void main(String[] args) { Hobbits[] h = new Hobbits[3]; int z = 0; while(z < 4){ z = z + 1; h[z] = new Hobbits(); h[z].name = "bilbo"; if(z == 1){ h[z].name = "frodo"; } if(z == 2){ h[z].name = "sam"; } System.out.print(h[z].name + " is a "); System.out.println("good Hobbit name"); } } } 정답 public class Hobbits { String.. 더보기
[Head First Java] Chapter3 연습문제 컴파일러가 되어봅시다. A문제 소스가 컴파일을 할 수 있는지 확인 문제 소스 class Books { String title; String author; } public class BooksTestDrive { public static void main(String[] args) { Books[] myBooks = new Books[3]; int x = 0; myBooks[0].title = "The Grapes of Java"; myBooks[1].title = "The Java Gatsby"; myBooks[2].title = "The Java Cookbook"; myBooks[0].author = "bob"; myBooks[1].author = "sue"; myBooks[2].author = "ian"; while(x 더보기
[Head First Java] Chapter3 Dog를 제어해봅시다. 배열 변수 사용법을 보여준다. 소스 public class Dog { String name; public static void main(String[] args){ //Dog 객체를 만들고 접근한다. Dog dog1 = new Dog(); dog1.bark(); dog1.name = "Bart"; //Dog 배열을 만든다. Dog[] myDogs = new Dog[3]; myDogs[0] = new Dog(); myDogs[1] = new Dog(); myDogs[2] = dog1; //배열 레퍼런스를 써서 Dog 객체에 접근 myDogs[0].name = "Fred"; myDogs[1].name = "Marge"; System.out.print("마지막 개의 이름: "); System.out.print.. 더보기
가비지 컬렉션(Garbage Collection) 힙 메모리 영역에서더 이상 사용되지 않는 메모리를 정리 하는 것. 더 이상 사용되지 않는 객체나 객체에 null 값이 할당되면 가비지 컬렉션의 대상이 된다. 예시 Book b = new Book(); Book c = new Book(); Book 북 레퍼런 스 변수 두 개를 선언하고 Book 객체 두 개를 새로 생성하여 레퍼런스에 대입함. 활성 레퍼런스: 2개 접근 할 수 있는 객체: 2개 b = c; c의 값을 b에 대입. b와 c는 모두 같은 객체를 참조 하며 제일 처음 b에 대입 하였던 객체는 버림 받았기 때문에 가바지 컬렉션 대상이 된다. 더보기
상속 부모 클래스의 속성을 물려 받는 것. 사용법 class 클래스명 extends Object{} 참고 자료 Java 상속 상속(Inheritance) 개념 상속 더보기
[Head First Java] Chapter3 원시 변수 원시 변수 유형 부울과 문자 유형 비트 범위 boolean (JVM에 따라 다름) true 또는 false char 16비트 0~65535 숫자(모두 부호가 있음) 정수 유형 비트 범위 byte 8비트 -128~127 short 16비트 -32768~32767 int 32비트 -2147483648~2147483648 long 64비트 -아주 큰 값~아주 큰 값 부동소수점 소수 유형 비트 범위 float 32비트 바뀔 수 있음 double 64비트 바뀔 수 있음 큰 유형의 변수를 작은 유형의 변수에 대입은 안된다. 키워드와 변수명 - 변수를 만들때는 이름과 유형이 필요하다. - 변수 이름은 예약어를 사용해서는 안된다. 예약어 boolean byte char double float int long short.. 더보기
[Head First Java] Chapter2 연습문제 수영장 퍼즐 코드 조각을 한번만 사용하여 아래와 같은 출력 결과를 얻어야 한다. 출력 결과 helloooo.... helloooo.... helloooo.... helloooo.... 10 코드 조각 e1 = e1 + 1; e1 = count + 1; e1.count = count + 1; e1.count = e1.count + 1; x y e2 count x 0 x > 1 Echo Tester echo() count() hello() e2 = e1; Echo e2; Echo e2 = e1; Echo e2 = new Echo(); x == 3 x == 4 문제 public class EchoTestDrive { public static void main(String[] args){ Echo .. 더보기
[Head First Java] Chapter2 연습문제 코드 자석 아래와 같은 출력 결과를 가지는 코드를 만들어야 한다. bang bang ba-bang ding ding da-ding 코드 조각은 아래와 같다. d.playSnare(); DrumKit d = new DrumKit(); void playSnare(){ System.out.println("bang bang ba-bang"); } public static void main(String[] args){ if(d.snare == true){ d.playSnare(); } d.snare = false; class DrumKitTestDrive{ d.playTopHat(); class DrumKit { void playTopHat(){ System.out.println("ding ding da-ding"); } .. 더보기
[Head First Java] Chapter2 연습문제 컴파일러가 되어봅시다. B문제 소스가 컴파일을 할 수 있는지 확인 소스 class DVDPlayer { boolean canRecord = false; void recordDVD(){ System.out.println("DVD recording"); } } class DVDPlayerTestDrive{ public static void main(String[] args){ DVDPlayer d = new DVDPlayer(); d.canRecord = true; d.playDVD(); if(d.canRecord == true){ d.recordDVD(); } } } 수정된 소스 class DVDPlayer { boolean canRecord = false; void recordDVD(){ System.out.println("DVD r.. 더보기
[Head First Java] Chapter2 연습문제 컴파일러가 되어봅시다. A문제 소스가 컴파일을 할 수 있는지 확인 소스 class TapeDeck{ boolean canRecord = false; void playTape(){ System.out.println("tape playing"); } void recordTape(){ System.out.println("tape recording"); } } class TapeDeckTestDrive{ public static void main(String[] args){ t.canRecord = true; t.playTape(); if(t.canRecord == true){ t.recordTape(); } } }수정된 소스 class TapeDeck{ boolean canRecord = false; void playTape(){ Syst.. 더보기
[Head First Java] Chapter2 객체지향적 프로그래밍 핵심 정리 제작과 테스트가 끝난 코드를 건드리지 않고 프로그램을 확장할 수 있다. 모든 자바 코드는 클래스 내에서 정의 된다. 클래스는 해당 클래스 유형의 객체를 만드는 방법을 설명하는 역할을 한다. 객체는 각자 알아서 자기 할 일을 처리할 수 있다. 객체에는 알고 있는것(속성)과 할 수 있는 것(메소드)이 있다. 객체가 자기 자신에 대해 알고 있는 것은 인스턴스 변수이다. 객체가 할 수 있는 것은 메소드라고 부른다. 클래스를 새로 만들 때는 그 클래스 유형의 객체를 만들어서 테스트하는 테스트용 클래스를 따로 만들어 보는 것이 좋다. 클래스에서는 덜 구체적인 상위클래스로부터 인스턴스 변수와 메소드를 상속할 수 있다. 프로그램을 실행시킬 때 보면 자바 프로그램이란 결국 다른 객체와 대화를 하는 객체에 불과하다. 더보기
[Head First Java] Chapter2 숫자 맞추기 게임 숫자 맞추기 게임에서는 객체가 서로 다른 객체의 메소드를 호출하는 방법을 보여주고 있다. GuessGame 클래스 public class GuessGame { //인스턴스 변수 선언 Player p1; Player p2; Player p3; public void startGame(){ //메소드 선언 //Player 객체를 각 인스턴스 변수에 대입 p1 = new Player(); p2 = new Player(); p3 = new Player(); //찍을 숫자 설정 int guessp1 = 0; int guessp2 = 0; int guessp3 = 0; //찍은 숫자가 맞는지 여부를 저장하기위한 변수 선언 boolean p1isRight = false; boolean p2isRight = false;.. 더보기
[Head First Java] Chapter2 Movie 객체를 만들어 테스트해봅시다. 앞에 첫 객체를 만드는 것 이라면 이번에는 응용이었다. Movie 클래스 class Movie { String title; String genre; int rating; void playIt(){ System.out.println("영화를 상영합니다."); } } MovieTestDrive 클래스 public class MovieTestDrive { public static void main(String[] args) { Movie one = new Movie(); one.title = "주식과 함께 사라지다"; one.genre = "비극"; one.rating = -2; Movie two = new Movie(); two.title = "로스트 인 큐비클 스페이스"; two.genre = "코미디";.. 더보기
[Head First Java] Chapter2 첫 번째 객체를 만들어 봅시다. 객체를 만들고 사용려면 어떻게 해야하는지 알려주고 있다. class Dog { int size; String breed; String name; void bark(){ System.out.println("Ruff! Ruff!"); } } class DogTestDrive { public static void main(String[] arg){ Dog d = new Dog(); d.size = 40; d.bark(); } } 출력 결과 Ruff! Ruff! 처음으로 만들어 봤다. Dog 클래스를 만들고 main 메소드에서 Dog 객체를 만들어 메소드 안에서 설정하고 호출을 할 수 잇다는 것을 알게 되었다. 더보기