예외처리(2)
·
자바/기본적인 개념
1. 예외 처리의 두 가지 방법 : main과 method()가 호출 스택에 있다고 가정하자. (1) main에서 호출한 method()에서 try-catch문으로 예외 처리하기. (2) main에서 호출한 method()에서 예외가 발생되어, main으로 넘겨서 try-cathc문으로 처리하기. 2. finally 블럭 - finally 블럭은 try-catch문과 함께 예외의 발생여부에 상관없이 실행되어야 할 코드를 포함시킬 목적으로 사용된다. - 순서는 다음과 같다 (1) try -> catch -> finally (2) try -> finally - finally는 try에서도 꼭 실행되어야 되는 구문과 catch에서도 꼭 실행되어야 되는 구문을 넣어야 할 때 활용된다. 3. 이해를 돕기 위한 예..
예외처리(1)
·
자바/기본적인 개념
1. 자바에서의 에러 종류 3가지 (1) 컴파일 에러 : 컴파일러가 빨간줄로 표시해주며 자바 문법에 어긋날 경우 발생하는 에러이다. ( 예) 명시적 형변환이 없을 경우 등 ) (2) 런타임 에러 : 컴파일 에러는 발생하지 않지만 프로그램 실행 후 발생하는 에러이다. ( 예) 범위에 벗어나는 인덱스 참조 등 ) (3) 논리적 에러 : 실행은 잘 되지만, 의도와 다르게 동작하는 것을 말한다. 2. 에러 vs 예외 (1) 에러: 메모리 부족(OutOfMemoryError)와 스택오버플로우(StackOverflowError) 같은 복구할 수 없는 심각한 오류 (2) 예외: 발생하더라도 수습될 수 있는 덜 심각한 예외 3. 예외 클래스의 계층 구조 ( Exception 클래스들은 주로 외부의 영향으로 발생하는 것..
익명 클래스(anonymous class)
·
자바/기본적인 개념
1. 익명 클래스란? - 클래스의 선언과 객체의 생성을 동시에 하기 때문에, 단 한번만 사용될 수 있고 오직 하나의 객체만을 생성할 수 있는 일회용 클래스이다. - 특이하게도 다른 내부 클래스들과는 달리 이름이 없어서 ①생성자도 가질 수 없고, ②하나의 클래스로 상속받는 동시에 인터페이스를 구현하거나, ③둘 이상의 인터페이스를 구현할 수 없다. - 오로지 하나의 클래스를 상속받거나 단 하나의 인터페이스만을 구현할 수 있다. 2. 이해를 돕기 위한 예제(1) (위 코드를 컴파일 한다면, 아래처럼 4개의 클래스 파일이 생성된다.) (a) (a$1.class) (a$2.class) (a$3.class) 3. 이해를 돕기 위한 예제(2) : 왜 익명 클래스를 사용하는 지를 설명하는 예제이다. ( 위의 코드를 가..
내부 클래스(inner class)
·
자바/기본적인 개념
1. 내부 클래스란? - 클래스 내에 선언된 클래스를 말한다. - 선언하는 이유는 두 클래스 사이에 서로 긴밀한 관계에 있기 때문이다. - 그러나, 내부 클래스는 주로 AWT 또는 Swing과 같은 GUI 어플리케이션의 이벤트 처리 외에는 잘 사용되지 않는다. 2. 내부 클래스의 장점 - 내부 클래스에서 외부 클래스의 멤버들을 쉽게 접근할 수 있다. - 코드의 복잡성을 줄일 수 있다.(캡슐화) 3. 내부 클래스의 종류와 특징 - 변수 선언하는 것과 같은 위치에 선언할 수 있으며, 총 4가지가 있다. (1) 인스턴스 클래스 : 외부 클래스의 인스턴스 멤버들과 관련된 작업에 사용될 목적으로 선언된다. (2) 스태틱 클래스 : 외부 클래스의 static 멤버, 특히 static 메서드에서 사용될 목적으로 선언..
인터페이스의 default & static 메서드
·
자바/기본적인 개념
1. static 메서드는 원래 인터페이스에서 사용 불가였다? - JDK 1.8 전에는 불가능했지만, 이제는 default와 static 메서드를 사용할 수 있게 되었다. - 옛날에는 java.util.Collection이라는 인터터페이스에 static 메서드가 있었는데 추상 메서드만 선언이 가능하다는 이유로 같이 넣지 못해서 Collections라는 클래스가 생성되게 되었다. - static 메서드 역시 앞에 public 접근 제어자가 있고, 생략 또한 가능하다. 2. 디폴트 메서드가 등장하게 된 배경 - 인터페이스에 새로운 메서드를 추가한다는 것은 엄청나게 까다롭다. 그 이유는 인터페이스로 구현한 클래스들이 전부 다시 구현해야 하기 때문이다. - 그러한 이유 때문에, default 메서드를 고안하여 ..
인터페이스 다형성
·
자바/기본적인 개념
1. 인터페이스 다형성 - 상속에서 다형성을 공부할 때, 자손 클래스의 인스턴스를 조상 타입의 참조변수로 참조하는 것이 가능하다는 것을 배웠다. 인터페이스 또한 그렇다. ( 단, c 참조 변수로는 c 인터페이스에서 정의한 것만 참조 가능하다. ) 2. 인터페이스 타입의 활용 ( 위의 인터페이스 타입의 method() 함수를 지정할 수 있는데, 리턴 타입이 인터페이스 라는 것은 메서드가 해당 인터페이스를 구현한 클래스의 인스턴스를 반환한다는 것을 의미한다. ) ( 또한 아래의 그림처럼 매개변수를 인터페이스의 타입으로 지정할 수 있는데, 이는 인터페이스를 구현한 클래스의 인스턴스를 전달하라는 소리와 마찬가지이다. ) 3. 이해를 돕기 위한 예제(1) Q) 19번째 줄에서 왜 오류가 날까? A) 리턴 타입이 ..
인터페이스
·
자바/기본적인 개념
1. 인터페이스란? - 추상 클래스처럼 추상 메서드를 갖지만, 추상 클래스보다 추상화 정도가 높아서 추상 클래스와 달리 몸통을 갖춘 일반 메서드 또는 멤버변수를 구성원으로 가질 수 없다. - 오직 추상 메서드와 상수만을 맴버로 가지고, 어떤 다른 요소도 가지지 않는다. - 추상 클래스를 부분적으로만 완성된 '미완성 설계도' 라고 한다면, 인터페이스는 구현된 것은 아무것도 없고 밑 그림만 그려져 있는 '기본 설계도'라 할 수 있다. - 인터페이스는 인터페이스로부터만 상속 받으며, 하나의 클래스가 다중 인터페이스로부터 상속 받는 것이 가능하다. - 인터페이스 또한 추상 클래스처럼 인스턴스를 생성할 수 없다. - 문법 interface 인터페이스이름{ public static final 상수이름 = 값; pu..
추상 클래스(abstract class)
·
자바/기본적인 개념
1. 추상 클래스란? - 단어의 뜻 그대로 완성되지 못한 채로 남겨진 설계도를 말한다. - 미완성 클래스는 인스턴스를 생성할 수 없다. ( 단, 생성자는 생성 가능하다. ) - 미완성 클래스는 상속을 통해서 자손 클래스에 의해서만 완성될 수 있다. 2. 추상 클래스가 필요한 이유는? - 예를 들자면, 컴퓨터가 여러 대 있고, 여러 종류가 있으며 각기 다른 기능을 수행하지만, 이 들의 설계도는 90%는 동일할 것이다. 그래서 공통적인 부분을 먼저 설계한 다음 각각의 서로 다른 설계도를 작성하는 것이 효율적이기 때문에, 사용하는 것이다. 3. 추상 메서드란? - 추상 클래스와 개념이 같으며, 추상 메서드는 구현부와 선언부 중에 선언부만 작성한다. - 문법: abstract 리턴타입 메서드이름(); 4. 추상..
다형성(3)
·
자바/기본적인 개념
1. 매개변수의 다형성 ( 위와 같은 클래스들이 있다고 가정해보자. ) ( Product는 Tv, Computer, Audio의 조상이다. ) ( Buyer 클래스는 Tv, Computer, Audio를 구입하는 사람을 표현한 것이다. ) ( 그런 다음, 위와 같이 Buyer 클래스에 buy 메서드를 오버로딩을 해주었다. ) ( 하지만 제품의 종류가 늘어날 때마다 buy 메서드를 계속 오버로딩을 해주어야 된다. ) ( 그래서 위와 같이 매개변수에 다형성을 추가해주면 코드가 간결해진다. ) 2. 예제(1) - 매개변수에 다형성을 활용 3. 예제(2) - 매개변수에 다형성을 여러 종류의 객체 배열로 다루어 보기. ( 예제(1)과 Buyer 클래스와 main 클래스에서 수정이 되었다. ) ( 수정한 결과 Pr..
다형성(2)
·
자바/기본적인 개념
1. 예제(1) - 중복된 인스턴스 변수 ( 오버라이딩 된 메서드만 자손 인스턴스를 참조할 수 있지만, 중복된 인스턴스 변수는 자손 인스턴스에서 참조할 수 없다. ) 2. 예제(2) - 중복된 메서드와 인스턴스 변수 그리고 지역변수, this, super의 차이점 ( 인스턴스 변수를 이 예제처럼 직접 접근을 한다면, 참조 변수의 타입에 따라 사용되는 인스턴스 변수가 달라지므로, private로 접근을 제한하는 것이 좋다 .)
instanceof 연산자
·
자바/기본적인 개념
1. 사용 방법 - 주로 조건문에서 사용한다. - instanceof의 왼쪽에는 참조변수를 오른쪽에는 타입이 피연산자로 위치한다. - 결과값은 boolean 값인 true 또는 false가 반환된다. - 만약 값이 null인 참조변수에 대해 instanceof 연산을 수행하면 false를 결과로 얻는다. 2. 예제(1) - 업-다운 캐스팅 public class Exercise001 { public static void main(String[] args) { car c1 = new car(); car c2 = new sportCar(); sportCar c3 = new sportCar(); if(c1 instanceof car) { System.out.println("1"); } if(c1 instanc..
다형성(1)
·
자바/기본적인 개념
1. 객체지향에서의 다형성이란? (1) '여러 가지 형태를 가질 수 있는 능력'을 의미한다. (2) 자바에서는 한 타입의 참조변수로 여러 타입의 객체를 참조할 수 있도록 한다. (3) 즉, 조상 클래스 타입의 참조변수로 자손 클래스의 인스턴스를 참조할 수 있도록 하였다. 2. 예제(1) - 다형성 구현해보기. ( 여기서 7번째 줄에서 주석으로 달린 것을 사용하면 에러가 발생한다. ) ( 그 이유는 인스턴스인 A의 멤버 개수보다 참조변수 b가 사용할 수 있는 멤버 개수가 많기 때문이다.) --> 자손 타입의 참조변수가 조상 타입의 인스턴스를 참조하는 것은 존재하지 않는 멤버를 사용하고자 할 가능성이 있기에 막아놓은 것이다. ( 예를 들자면, B b = new B()가 있다고 생각해보자. 그러면 b는 자신의..
제어자
·
자바/기본적인 개념
1. 제어자란 - 클래스, 변수 또는 메서드의 선언부에 함께 사용되어 부가적인 의미를 부여하는 것을 말한다. - 제어자의 종류는 접근 제어자와 그 외의 제어자로 나눌 수 있다. (1) 접근 제어자: public, protected, default, private (2) 그 외: static, final, abstract, native, transient, synchronized, volatile, strictfp 2. final - 클래스 앞에 붙으면: 변경될 수 없는 클래스, 확장될 수 없는 클래스가 된다. (*조상이 되지 못함) - 메서드 앞에 붙으면: 변경될 수 없는 메서드 또한 오버라이딩을 통해 재정의가 불가하다. (*오버로딩은 가능하다.) 3. 생성자를 이용한 final멤버 변수의 초기화 - 일..
import 문
·
자바/기본적인 개념
1. import 문이란? - 컴파일러에게 소스파일에 사용된 클래스의 패키지에 대한 정보를 제공하는 것을 말한다. - 이클립스에서 'ctrl + shift + o'를 누르면, 자동으로 import 문을 추가해준다. 2. java.lang.*; - import 선언할 때 사용되는 문장이다. - System과 String 같은 클래스들이 있는 패키지인데, 선언 없이 사용할 수 있었던 것은 매우 빈번히 사용되는 중요한 클래스이기 때문에 따로 지정하지 않았던 것이다. 3. static import - static 멤버를 호출할 때 클래스 이름을 생략할 수 있다. - 특정 클래스의 static 멤버를 자주 사용할 때 편리하고, 코드가 간결해진다. 4. 예제 - static import 활용해보기. ( 앞에 Sys..
패키지
·
자바/기본적인 개념
1. 패키지란? - 패키지에는 클래스 또는 인터페이스를 포함시킬 수 있으며, 서로 관련된 클래스들끼리 그룹 단위로 묶어 놓음으로써 클래스를 효율적으로 관리할 수 있다. - 같은 이름의 클래스 일지라도 서로 다른 패키지에 존재하는 것이 가능하므로, 이름이 충돌하는 것을 피할 수 있다. 2. 패키지의 규칙 (1) 하나의 소스 파일에는 첫 번째 문장으로 단 한 번의 패키지 선언만을 허용한다. (*첫 번째 문장은 반드시 주석과 공백을 제외한 곳이여야 한다.) (2) 모든 클래스는 반드시 하나의 패키지에 속해야 한다. (3) 패키지는 점(.)을 구분자로 하여 계층 구조를 구성할 수 있다. (4) 패키지는 물리적으로 클래스 파일(.class)을 포함하는 하나의 디렉토리이다. (5) 이름은 대소문자로 이용하지만, 소..
super
·
자바/기본적인 개념
1. super란? (1) 자손 클래스에서 조상 클래스로부터 상속받은 멤버를 참조하는데 사용되는 참조 변수이다. (2) 멤버 변수와 지역 변수가 이름이 같을 때 this를 사용하는 것처럼, super 또한 조상 클래스에서의 멤버 변수와 자손 클래스의 멤버 변수와 이름이 같을 때 사용된다. (3) 모든 인스턴스 메서드에는 자신이 속한 인스턴스의 주소가 지역 변수로 저장되는데, 이것이 참조변수 this와 super의 값이 된다. (4) this와 마찬가지로 super는 static 메서드에서 사용할 수 없다. 즉, 인스턴스 메서드에서만 사용이 가능하다. 2. super() (1) this()와 마찬가지로 super() 역시 생성자이다. (2) this()는 자신의 클래스에서 다른 생성자를 부르지만, supe..
오버라이딩
·
자바/기본적인 개념
1. 오버라이딩이란? - 조상 클래스로부터 상속받은 메서드의 내용을 변경하는 것을 말한다. - override는 사전적 의미로 '~위에 덮어쓰다'로 해석된다. 2. 오버라이딩 조건 (1) 조상 클래스의 메소드와 이름이 같아야 한다. (2) 조상 클래스의 메소드와 매개변수가 같아야 한다. (3) 조상 클래스의 메소드와 반환타입이 같아야 한다. (4) 조상 클래스의 메소드의 접근 제어자의 범위보다 같거나 커야 한다. ( *접근 제어자 범위 순서: public > protected > (default) > private ) (5) 조상 클래스의 메서드의 예외의 수보다 같거나 적어야 한다. (6) 조상의 인스턴스 메서드를 자손에서 static 메서드로 또는 그 반대로 변경할 수 없다. Q) 만약 조상 stati..
상속
·
자바/기본적인 개념
1. 상속을 씀으로써 얻을 수 있는 기대효과 (1) 코드의 재사용성을 높이고 코드의 중복성을 제거할 수 있다. (2) 프로그램의 생산성과 유지보수에 크게 기여된다. 2. 부모와 아이 - 부모는 조상, 상위, 기반 클래스라고도 불리어진다. - 아이는 자손, 하위, 파생된 클래스라고도 불리어진다. ( age는 부모에서 생성된 age이다. ) ( 이처럼 age는 아이에게 포함되므로 부모에서 정의한 것을 같이 사용할 수 있다. ) 3. 상속될 때 규칙 (1) 생성자와 초기화 블럭은 상속되지 않는다. 맴버만 상속될 수 있다. (2) 항상 상위 클래스보다 하위클래스는 같거나 많은 맴버를 갖는다. 4. 간접적인 상속 관계 ( GrandChild와 Parent 관계가 있을 때, 우리는 간접적인 상속 관계라고 부른다. ..
초기화 블럭
·
자바/기본적인 개념
1. 클래스 초기화 블럭 - 클래스 변수의 복잡한 초기화에 사용된다. - 보통 "static { ... }" 형식으로 사용된다. - 클래스 초기화 블럭은 클래스가 메모리에 처음 로딩될 때 한번만 수행된다. - 앞서 배운 내용이지만, 클래스 초기화이므로 인스턴스 변수를 초기화하지 못한다. 2. 인스턴스 초기화 블럭 - 인스턴스 변수의 복잡한 초기화에 사용된다. - 보통 "{ ... }" 형식으로 사용된다. - 인스턴스 초기화 블럭은 생성자와 같이 인스턴스를 생성할 때 마다 수행된다. - 인스턴스 변수의 초기화는 주로 생성자를 사용하고, 인스턴스 초기화 블럭은 모든 생성자에서 공통으로 수행돼야 하는 코드를 넣는데 사용한다. - 아래의 예제를 통해 이해하자. ( 위 예제에서 두 생성자는 "this.x++"을 ..
생성자
·
자바/기본적인 개념
1. 하나의 클래스의 인스턴스가 생성되는 코드의 단계 (1) 연산자 new에 의해서 메모리(heap)에 클래스의 인스턴스가 생성된다. (2) 생성자가 호출되어 수행된다. (3) 연산자 new의 결과로, 생성된 클래스의 인스턴스의 주소가 반환되어 참조변수에 저장된다. ( 주의할 점은 연산자 new가 인스턴스를 생성하는 것이지 생성자가 인스턴스를 생성하는 것이 아니다. ) 2. 생성자에서 다른 생성자 호출하기 - this(), this - this는 참조변수로 인스턴스 자신을 가리킨다. - 사실 생성자를 포함한 모든 인스턴스 메서드에는 자신이 관련된 인스턴스를 가리키는 참조변수 'this'가 지역변수로 숨겨진 채로 존재한다. - 같은 클래스의 멤버들 간에 서로 호출할 수 있는 것처럼 생성자 간에도 서로 호출..
가변 인자(varargs)
·
자바/기본적인 개념
1. 가변 인자 (1) 아래와 같은 "타입... 변수명"과 같은 형식으로 선언하며, PrintStream 클래스의 printf()가 대표적인 예이다. public PrintStream printf(String format, Object... args) { ... } (2) 가변 인자 외에도 더 추가할 매개변수가 있다고 한다면, 맨 뒤에 가변 인자를 두어야 한다. (3) 아래의 함수와 같이 앞에 가변인자를 두게 되면 컴파일 에러가 발생한다. public PrintStream printf(Object... args, String format) { ... } 2. 예제 - 가변 인자를 활용하여 오버로딩 구현 ( 위 예제는 오버로딩을 구현했는데, 계속 해서 매개변수를 String으로 늘린다면, 차라리 Strin..
오버 로딩
·
자바/기본적인 개념
1. 오버 로딩 - 한 클래스 내에서 같은 이름을 가진 2개 이상의 메서드를 아래의 조건이 만족한다면, 정의할 수 있다. (1) 메서드 이름이 같아야 한다. ( 단, 반환 타입은 달라도 괜찮다. ) (2) 매개변수의 개수 또는 매개변수의 타입이 달라야 한다. ( 또는 이라는 말은 둘 중 하나의 조건만 맞다면, 오버로딩을 적용할 수 있다는 것이다. ) 2. 잘못된 예제(1) ( 매개변수의 이름이 다르더라도 갯수가 똑같기 때문에 에러가 발생한다. ) 3. 잘못된 예제(2) ( 위의 반환 타입 int와 long은 오버 로딩에 아무런 영향을 주지 않기 때문에, 오버 로딩을 할 때 오직 매개변수에만 고려해야 한다. ) 4. 올바른 예제(1) ( 이렇게 매개변수에 개수를 다르게 함으로써 오버로딩을 가능케 한다. )..
클래스 맴버와 인스턴스 맴버간의 참조와 호출
·
자바/기본적인 개념
# 같은 클래스에 속한 맴버들 간에는 별도의 인스턴스를 생성하지 않고도 서로 참조 또는 호출이 가능하다. # 단, 클래스 맴버가 인스턴스 맴버를 참조 또는 호출하고자 하는 경우에는 인스턴스를 생성해야 한다. -> 그 이유는 인스턴스 맴버가 존재하는 시점에는 클래스 맴버는 항상 존재하지만, 클래스 맴버가 존재하는 시점에 인스턴스 맴버가 존재하지 않을 수 있기 때문에 컴파일러가 에러를 발생하게 한다. 1. 예제 - 클래스 변수가 인스턴스 변수를 참조할 때 에러발생 int a; static int b = a; 에러 발생 // 에러발생 static int b = new Exercise001().a; // 컴파일 가능 2. 예제 - 참조변수를 사용하지 않고 인스턴스 메서드 참조하기.
클래스 메서드(static 메서드)와 인스턴스 메서드
·
자바/기본적인 개념
1. 클래스 메서드(static 메서드) (1) 인스턴스와 관계없는 메서드를 클래스 메서드이다. ( 인스턴스 멤버는 객체 생성시 메모리에 올라가지만 클래스 멤버는 클래스와 동시에 로딩된다. ) (2) 인스턴스를 사용하지 않는다고 해서 반드시 클래스 메서드를 정의하는 것은 아니지만, 특별한 이유가 없는 한 그렇게 하는 것이 일반적이다. 2. 인스턴스 메서드 - 인스턴스 변수와 관련된 작업을 하며, 메서드의 작업을 수행하는데 인스턴스 변수를 필요로 하는 메서드 이다. 3. 메서드 내에서 인스턴스 변수를 사용하지 않는다면, static을 붙이는 것을 고려해본다. - 그 이유는 메서드 호출 시간이 짧아지므로 성능이 향상된다. 4. 이름이 동일한 클래스 메서드와 인스턴스 메서드를 동시에 사용하면? ( 에러가 발생..
기본형 매개변수와 참조형 매개변수
·
자바/기본적인 개념
1. 기본형 매개변수 - 변수의 값만 읽기만 할 수 있다. 그 이유는 단순히 값만 전달 받기 때문이다. 2. 참조형 매개변수 - 변수의 값을 읽고 변경할 수 있다. 그 이유는 저장되는 곳의 주소를 전달 받기 때문이다. 3. 배열을 이용한 참조형 매개변수 4. 참조형 반환타입 ( 인스턴스화를 하지 않아서 클래스 변수를 사용할 수 없다. ) ( 그래서 new를 해주는데 메소드를 통해서 받아보자. )
JVM의 메모리 구조
·
자바/기본적인 개념
# 응용 프로그램이 실행되면, JVM은 시스템으로부터 프로그램을 수행하는데 필요한 메모리를 할당받고 JVM은 이 메모리를 용도에 따라 여러 영역으로 나누어 관리한다. 그 중 3가지 영역에 대해서 알아보자. 1. 메서드 영역 - 프로그램 실행 중 어떤 클래스가 사용되면, JVM은 해당 클래스의 클래스 파일을 읽어서 분석하여 클래스에 대한 정보(클래스 데이터)를 이곳에 저장한다. - 이 때, 그 클래스의 클래스 변수(CV)도 이 영역에 함께 생성된다. 2. Call Stack - 호출 스택은 메서드의 작업에 필요한 메모리 공간을 제공한다. - 메서드가 호출되면 호출 스택에 호출된 메서드를 위한 메모리가 할당되며, 이 메모리는 메서드가 작업을 수행하는 동안 지역 변수(매개변수 포함)들과 연산의 중간결과 등을 ..
메서드
·
자바/기본적인 개념
1. 메서드의 호출 - 같은 클래스 내의 메서드끼리는 참조변수를 사용하지 않고도 서로 호출이 가능하지만, static 메서드는 같은 클래스 내의 인스턴스 메서드를 호출할 수 없다. ( 그 대신 static 메서드끼리는 호출이 가능하다. ) 2. return문 - 반환 타입이 void인 경우, 컴파일러가 마지막 부분에 "return ;"을 자동으로 넣어준다.
객체 배열
·
자바/기본적인 개념
# 객체 배열은 일반 배열과 같이 선언하는 것은 동일하다. 그러나 아주 중요한 차이점이 있다. 그것은 바로 선언한 후, 바로 객체가 생성되지 않는다는 점이다. 즉, 객체를 다루기 위한 참조 변수들이 만들어진 것일 뿐, 아직 객체가 저장되지 않았다. 그래서 무조건 배열을 만들었다고 객체가 저장된 것이 아니라는 점을 주의하자. 1. 객체 배열 선언 for문을 통해서 선언해보기. 2. 비객체지향적 코드 vs 객체지향적 코드 - 비객체지향적 코드는 보통 아래와 같은 코드들이다. - 객체지향적 코드는 아래와 같은 코드들이다.
가변 배열
·
자바/기본적인 개념
# 2차원 이상의 다차원 배열을 전체 배열 차수 중 마지막 차수의 길이를 지정하지 않고, 추후에 각기 다른 길이의 배열을 생성함으로써 고정된 형태가 아닌 유동적인 가변 배열을 구성할 수 있다. # 가변 배열 역시 중괄호를 이용해서 아래의 그림처럼 구현할 수 있다.
다차원 배열
·
자바/기본적인 개념
1. 2차원 배열의 초기화 2. 2차원 배열에서의 length? - 2차원 배열 변수가 참조하고 있는 곳이 행이기에, 행의 갯수가 나오게 된다. (ex: arr.length) - 열의 갯수는 해당 행의 길이를 가지고 쓰면 된다. (ex: arr[0].length) 3. 2차원 배열의 길이를 이용하여 초기화하는 방법 4. 2차원 배열들을 향상된 for문을 통해서 합계 구하기. 5. 예제(1) - 좌표에 X 표하기. import java.util.Scanner; public class Exercise001 { public static void main(String[] args) { final int SIZE = 10; int x = 0, y = 0; char[][] board = new char[SIZE][..