자바기반응용프로그래밍 - 주요 패키지와 클래스
·
Language/JAVA
자바의 주요 패키지 java.lang: 스트링, 수학 함수, 입출력 등, 기본적인 거라 import 문 필요 없음! java.util: 날짜, 시간, 벡터, 해시맵 등 java.io: 키보드, 모니터, 프린터 등의 입출력 관련 java.awt: 자바 GUI 프로그래밍 관련 Object 클래스 java.lang 패키지에 포함, 모든 클래스의 슈퍼 클래스이므로 강제로 상속됨 주요 메소드 boolean equals(Object obj) obj가 가리키는 객체와 현재 객체를 비교. t / f 객체의 내용만 비교함. (레퍼런스까지 비교하기 위해서는 == 연산자를 사용해야!) Class getClass() 현 객체의 클래스를 리턴 int hashCode() 현 객체의 해시코드 값 리턴 String toString(..
자바기반응용프로그래밍 - 모듈과 패키지 기초
·
Language/JAVA
패키지란? 관련있는 클래스/인터페이스들의 컴파일된 .class 파일들을 하나의 디렉토리에 묶어놓은 것 이렇게 패키지 별로 분류하면, 같은 이름을 사용해도 다른 파일로 취급하기 때문에 협업에 유리함 모듈이란? 여러 패키지와 이미지 등의 자원을 모아놓은 컨테이너 응용프로그램의 실행에 적합한 모듈들로만 실행 모듈 사용하기 // import를 이용하지 않은 경우 java.util.Scanner scanner = new java.util.Scanner(System.in); // import를 이용한 경우 import java,util.Scanner; // 특정 클래스의 경로명만 포함 import java,util.*; // 패키지 내의 모든 클래스 포함 Scanner scanner = new Scanner(Sys..
자바기반응용프로그래밍 - 추상메소드, 추상클래스, 인터페이스
·
Language/JAVA
추상 메소드 선언되어 있으나 아직 구현되지 않은 메소드, abstract로 선언 이후 반드시 서브클래스에서 오버라이딩 하여 구현 필요! 추상 클래스 추상 메소드를 하나라도 가졌다면 반드시 추상 클래스로 선언해야 함(없어도 추상 클래스로 선언 가능) 객체 생성 불가 슈퍼 클래스에서는 개념 정의, 서브 클래스마다 목적에 맞게 추상 메소드 다르게 구현 추상 클래스를 상속 받는 서브 클래스: 추상 메소드를 구현하지 않으면 abstract으로 선언해야 함 추상 메소드를 구현하면 추상 클래스 x => @Override로 검사하기 (코드) 인터페이스 클래스가 구현해야 할 메소드들이 선언되는 추상형, interface 키워드로 선언 상수와 추상메소드, default/private/static 메소드 선언 가능 일반 필..
자바기반응용프로그래밍 - 캐스팅, 오버라이딩
·
Language/JAVA
업캐스팅 서브 클래스 객체 타입 => 슈퍼 클래스 타입으로 변환 동일한 슈퍼 클래스를 상속받은 서브 클래스 객체들을 배열로 관리 가능 업캐스팅된 레퍼런스는 객체 내의 슈퍼 클래스 멤버만 접근 가능 class Person { … } class Student extends Person { … } Student s = new Student(); Person p = s; // 업캐스팅, 자동타입변환 다운캐스팅 슈퍼 클래스 객체 타입 => 서브 클래스 타입으로 변환 괄호 안에 변환할 타입 명시 class Person { … } class Student extends Person { … } ... Person p = new Student("이재문"); // 업캐스팅 … Student s = (Student)p; /..
자바기반응용프로그래밍 - 배열
·
Language/JAVA
일차원 배열 선언 및 생성 // 배열 선언 int intArray []; int [] intArray2; // 배열 생성 : new 키워드 + 자료형 + [배열의 크기] intArray = new int[10] intArray2 =new int[20] 배열 선언과 생성 동시에 가능 선언할 때는 배열의 크기 지정하면 안됨!! 생성할 때 지정해주어야함 ex. int intWrongArray[10]; 배열 접근 인덱스 통해 가능. 반드시 생성 후 접근해야 함. 0 < 배열 인덱스 < 배열 크기 - 1 import java.util.Scanner; public class ArrayLength { public static void main(String[] args) { int intArray [] = new in..
자바기반응용프로그래밍 - 상속
·
Language/JAVA
자바의 상속 부모 클래스에 만들어진 필드, 메소드를 자식 클래스가 물려받음 => 코드의 간결화 부모 클래스 : super 클래스 자식 클래스 : sub 클래스 extends 키워드 사용 생성자 호출과 실행 서브 클래스 객체가 생성될 때, 슈퍼 / 서브 생성자 모두 실행됨 호출 순서: 서브 클래스 생성자 => 슈퍼 클래스 생성자 실행 순서: 슈퍼 클래스 생성자 => 서브 클래스 생성자 서브 클래스 생성자 작성원칙 서브 클래스 생성자에서 슈퍼 클래스 생성자를 하나 선택 => super() 만약 선택하지 않았다면, 슈퍼클래스의 기본 생성자를 자동 선택 (실습 코드 연습하고 추가 하거라..)
자바기반응용프로그래밍 - 반복문
·
Language/JAVA
for문 구성 형식: 초기문, 조건식, 반복 후 작업, 작업문 while문 구성형식: 조건식, 작업문 // -1이 입력될때까지 반복 import java.util.Scanner; public class WhileSample { public static void main(String[] args) { int n; int cnt = 0; int sum = 0; Scanner scanner = new Scanner(System.in); System.out.println("정수를 입력하고 마지막에 -1을 입력하세요."); n = scanner.nextInt(); while( n != -1) { sum += n; cnt++; n = scanner.nextInt(); } if(cnt == 0) { System.ou..
자바기반응용프로그래밍 - main() 메소드로 인자 전달
·
Language/JAVA
main() 메소드로 인자 전달 사용자가 입력한 argu 값으로 프로그램을 실행하게 함. Run => Run Configurations => Arguments 탭에서 입력 가능 반드시 한 번 이상 실행해야 탭에 표시됨!! 실습코드 연습 import java.util.Scanner; public class ArgsArrayEx { public static void main(String[] args) { int argsArray [] = new int[args.length]; for(int i = 0; i < args.length; i++) { argsArray[i] = Integer.parseInt(args[i]); } // Integer.parseInt() 정수형으로 형변환 Scanner scanner ..
자바기반응용프로그래밍 - 패키지, 접근 지정자, static, final
·
Language/JAVA
패키지란? 관련있는 클래스 파일들끼리 묶어 놓은 디렉토리 자바의 접근 지정자 클래스나 일부 멤버를 공개하여 다른 클래스에서 접근하도록 허용 클래스 접근 지정 public: 다른 모든 클래스에 접근 허용 ex. public class Class1 default: 같은 패키지의 클래스에만 접근 허용 ex. class Class2 멤버 접근 지정 public: 모든 클래스에 허용 protected: 동일 패키지, 다른 패키지에서 상속받은 서브클래스도 허용 default: 동일 패키지만 허용 private: 동일 클래스만 허용 static 멤버와 non-static 멤버 non-static 멤버 static 멤버 선언 class Sample1 { int n; void g() {...} } class Sample..
자바기반응용프로그래밍 - 메소드, 레퍼런스, 오버로딩, 가비지 컬렉션
·
Language/JAVA
자바의 메소드 구성 접근 지정자 리턴 타입(리턴이 없으면 void) 메소드 이름 메소드 인자 (없다면 비우기, 있다면 자료형까지) 메소드 코드 자바의 인자 전달 call by value: 매개변수가 기본 타입 값일 때 call by reference: 매개변수가 객체나 배열일 때 메소드 오버로딩 메소드 이름만 동일하고, 매개변수의 개수나 타입을 서로 다르게 작성 리턴 타입과 무관. class MethodOverloading { public int getSum(int i, int j) { return i + j; } public int getSum(int i, int j, int k) { return i + j + k; } } 객체 소멸과 가비지 컬렉션 가리키는 레퍼런스가 하나도 없게 된 객체 => JVM..
자바기반응용프로그래밍 - 객체 지향을 위한 클래스와 객체
·
Language/JAVA
캡슐화 객체를 캡슐로 싸서 내부를 볼 수 없게 하는 것. 외부의 접근으로부터 안전하게 보호하기 위해 필요 외부와의 접속을 위한 일부분은 공개 노출 가능 => 인터페이스 클래스 객체 모양을 선언 한 틀(캡슐) 필드(멤버 변수)와 메소드(멤버 함수)로 구성 객체 클래스 모양대로 생성된 실체(인스턴스) 치환 시 객체 자체가 아닌, 객체의 레퍼런스(포인터)가 복사됨 ex. 붕어빵 만드는 틀 - 클래스 팥붕 / 슈붕 / 치즈붕 - 객체 1,2,3.... 상속 서브 클래스(자식)가 슈퍼 클래스(부모)의 속성을 물려받고, 기능 확장 가능 다중상속 불가 (대신, 인터페이스 다중 상속 허용) 코드의 재사용 다형성 같은 이름의 메소드가 클래스나 객체에 따라 다르게 동작하도록 구현 메소드 오버로딩 : 클래스 내에서 같은 이..
자바기반응용프로그래밍 - 연산자, 조건문
·
Language/JAVA
자바 수식 연산자 증감: ++ -- 산술: + - * / % 시프트: >> >> 비교: > >= 자바 연산자 우선순위 () [] : 괄호 / 대괄호 ! ~ ++ -- : 부정, 증감연산자 * / % : 곱셈 / 나눗셈(몫, 나머지) 연산자 + - : 덧셈 / 뺄셈 연산자 > >>> : 비트 단위의 시프트 연산자 = : 관계 연산자 == != & : 비트 단위의 논리 연산자 ^ | && : 논리곱 연산자 || : 논리합 연산자 ? : : 조건연산자 = += -= *= /= %= true 따라서 논리합 연산자(둘 중 하나라도 true라면 true반환) => true => a = 3 비트 논리 연산 & : 논리곱(AND), 두 비트 모두 1일 경우에만 1 | : 논리합(OR), 두 비트 중 ..