[JAVA] 중간점검 TEST
@욕심쟁이
·2020. 9. 28. 14:42
자바의 특징(WORA, JVM, Garbage Collector 등)
- wora(write once run anywhere)
=> JVM에 의해 프로그램을 한번 작성하고 나면 어디서든 실행가능한 특징
- jvm : JAVA virtualMachine , 자바 가상머신)
=> 1. 운영체제 위에 설치되는 가상의 CPU(자바개발에 필요 요소)
2. JVM으로 인해 운영체제에 독립적인 프로그래밍 가능(운영체제 상관없이 동작)
- JDK(Java Development kit, 자바 개발 도구)
=> 1. 자바개발에 필요한 필수프로그램
2. JVM, 실행환경을 포함하는 JRE와 컴파일 등의 개발도구를 포함하여 제공하는 프로그램
- Garbage Collector
=> 메모리 관리, 자바의 힙 공간에서 더이상 실행되지않는 객체를 자동으로 제거하여 메모리를 관리
A,a,0 아스키코드
65 97 48
이클립스같은 실행, 디버깅등의 기능을 한방에 제공해주는 도구의 이름은?
IDE
변수명 작성 규칙
1. 숫자가 첫글자로 될수없다
2. 특수기호는 $,_사용가능
3. 대소문자 구별
4. 길이제한이 없다.
5. 키워드(예약어) 사용불가
6. 공백사용불가능
-------------------------------------------
7. 각단어는 첫글자를 대문자로 작성(Camel-case표기법)
기본 자료형 변수 선언 및 초기화 방법
ex) int => int a; a=10 or int a =10;
기본 자료형의 기본값
byte short int =0; long = 0L, char ='|u0000' 또는 0 , float = 0f, double = 0.0 , boolean= false
논리연산자 종류 및 특징
- and & 또는 && : 모든조건이 true일때 true, 하나라도 false면 false
- or | 또는 || : 모든조건이 false일 때 하나라도 true true (논리합)
- NOT ! 현재상태 반전(true -> false, false -> true)(논리부정)
if문 사용법(양수&음수 판별, 홀수&짝수 판별 등)
int a = 2;
if(a >= 0){
System.out.println("양수");
}else{
System.out.println("음수");
}
if(a%2 == 0){
System.out.println("짝수");
}else{
System.out.println("음수");
}
for문 사용법(구구단)
for(int i = 2; i <=9; i++){
for(int j = 1; i <=9; i++){
System.out.println(i + "*" + j +"=" + i*j);
}
}
Switch – Case 문(기본 문법, 특징, break 문 유무에 따른 차이점)
if문과 동일하게 어떤 조건에 대한 실행 문장을 달리하는 조건문
단, if문보다 유연하지 못하며, 컴파일 시점에서 이미 실행할 문장이 결정되ㅡ로 바름
switch문을 통해 식 판별, case문을 통해 값 비교
조건식에 맞는 조건값으로 가서 break가 있으면 해당 맞는 값을 가지고 }에서 나오고 없으면 다음 case문으로 계속 진행 되어 swith-case문 종료될 때 까지 모든 case와 default 실행.
swith(1조건식){
case 0(조건의값): (값이 0일때 실행할 문장)
System.out.println(0);
break;
case 1(조건의값): (값이 1일때 실행할 문장)
System.out.println(1);
break;
default : 모든 case문과 일치하는 값이 없을때 실행할 문장..;
}
배열(배열 선언, 생성, 초기화)
int형 배열(arr) 2개짜리 생성 및 10, 20 으로 초기화
int[] arr;
arr = new int[2];
arr[0]=10;
arr[1]=20;
OR
int[] arr = {1,2,3,4}
객체지향 프로그래밍 특징(캡슐화, 다형성, 상속성, 추상화)
- 특징 : 모든 것은 객체간의 상호작용에 의해 이루어진다는 개념하에 모든 것을 객체로 정의한다.
- 캡슐화(은닉성) : 외부로 부터 내부구조를 숨기고, 메세지만으로 외부와 대화하는 것(숨김: private 공개:public)
(set과 get을 통해 접근, 제어한다.)
- 다형성 : 기본 - 업캐스팅 / 하나의 슈퍼클래스 타입으로 여러 서브클래스의 인스턴스를 참조하는것
- 상속성 : 자식클래스가 부모클래스에게 모든멤버(변수, 메서드)를 물려받아 선언없이 사용하는 것
- 추상화 : 객체의 공통된 특성을 추출하여 상위개념을 정의하는 것(대표적으로 인터페이스)(각자의 고유한 특성을 제거) ex) 초등학생, 중학생 ,고등학생 => 학생 => 학생을 인터페이스로 만들어 초등학생,중학생고등학생이 선언을안해도 학생의 특성을 가져다 사용가능
클래스(클래스 정의, 레퍼런스 변수 선언, 인스턴스 생성, 인스턴스 변수 초기화)
Test test = new Test(); //인스턴스(생성자호출)
test.a ="홍길동"; //변수초기화
test.b =1;//변수초기화
test.isTest(); // 메서드호출
class Test{
String a;
int b;
public Test(){//기본생성자
}
public void isTest(String a, int b){//메서드생성
this.a = a;
this.b = b;
}
}
상속(서브클래스 정의, 상속받은 변수 활용한 메서드 정의)
class Parents{
String a;
}
class Children extends Parents{
public void pa(){
a = 10;
}
}
접근지정자 종류 및 특징
- private : 자신이 속한(같은) 클래스내에서만 접근가능 (결혼안한자식)
- defult : 같은 패키지 내에서만 접근가능
- protected : 다른패키지에서 상속관계에 접근가능(결혼한 자식)
- public : 전체에서 접근가능
- static : 객체 생성없이 사요하고자 할 경우에 사용한다.
- final : 변경할 수 없음을 의미한다.
- abstract : 미완성임을 의미한다.
레퍼런스 형변환에 사용되는 연산자
instanceof 연산자
=> if(객체 instanceof 타입(클래스 또는 인터페이스)){}
API(Application Programming Interface)
: 프로그램 개발에 사용되는 클래스들의 모음
패키지(import 가 필요 없는 기본 패키지, import 단축키)
=> 관계가있는 클래스들으 모아놓는 공간(디렉토리 = 폴더)
=> 기본패키지 : java.lang패키지
=> 단축키 : ctr + shift + o
메서드 오버로딩 = 메서드 다중정의
=> 메서드명은 같지만 다른 메서드를 여러번 정의하는것
=> 하나의 이름으로 서로다른 매개변수를 구분하여 각각다른 동작을 수행할수 있음
메서드 오버라이딩 = 메서드 재정의
=> 부모(슈퍼클래스)로 부터 상속받은 메서드에 대해 시그니쳐(이름, 매개변수, 리턴타입)가 같은 메서드를 새롭게 정의하는 것
=> 부모의 메서드를 자식에게 맞게 커스터마이징
오버로딩 vs 오버라이딩
오버로딩 | 오버라이딩 | |
공통점 |
- method 정의시 사용되는 기법 |
|
차이점 |
- 상속을 기반 |
- 하나의 클래스나 상속받은 클래스의 내에 같거나 비슷한 기능의 메소드의 이름을 같게 정의 |
추상(Abstract)이란?
- 실체간에 공통되는 특성을 추출한것.
추상클래스
공통적인 특성을 추출해서 선언한 클래스
추상메서드
메서드 구현부(바디,{})가 없는 메서드(= 실행할 코드가 없는 메서드)
메서드란? 호출받으면 코드를 실행하는 것
추상메서드를 포함하는 클래스는 반드시 추상클래스로 선언
리턴타입 앞에 "abstract"키워드
인터페이스(interface)
- 다중 구현(implements)이 가능
=> 즉, 하나의 서브클래스가 둘 이상의 부모인터페이스를 가질 수 있다
=> 여러 부모인터페이스의 모든 추상메서드를 오버라이딩
- 인터페이스 끼리도 상속이 가능
=> 인터페이스간의 상속은 implements가아닌 extends를 사용
추상메서드를 구현하는 것이 목적이 아니기때문!
- 구현은안됨
String클래스 문자열 처리(문자열 비교 방법 등)
문자열 연결 | concat |
문자열 자르기 | substring |
문자열 길이 | length |
대문자로 만들기 | toUpperCase |
소문자로 만들기 | toLowerCase |
특정 위치 글자 뽑기 | charAt |
문자열 비교 | equals |
문자열 비교(대소문자 구별 없음) | equalsIgnoreCase |
문자열 공백 제거 | trim |
특정 문자 변경 | replace |
특정 문자열 변경 | replaceAll |
기본 데이터타입 데이터를 문자열로 변환 | valueOf |
구분자(분리자 = Delimeter)를 사용하여 문자열 분리 | split |
문자열내에 형식 지정 문자를 사용하여 전달된 데이터를 형식에 맞는 문자열로 포맷을 변화 | format |
컬렉션프레임워크
- List 계열 : 순서가 있는 데이터의 집합, 데이터 중복을 허용
대표적인 List 계열의 구현체는 ArrayList나 LinkedList, Stack, Vector가 있다
- Set 계열 : 순서를 유지하지 않는 데이터의 집합, 데이터 중복을 허용하지 않음
대표적인 Set 계열의 구현체는 HashSet, TreeSet이 있다
- Map 계열 : 키와 값의 쌍으로 데이터를 관리하는 집합, 키는 중복 불가, 값은 중복 가능
대표적인 Map 계열의 구현체는 HashMap이나 TreeMap, Hashtable, Properties가 있다.
Excption(예외)
throw - 강제 발생
throws - 위임
Thread
- 싱글쓰레드(Single Thread)환경
하나의 main 쓰레드가 main()메서드 내의 코드를 차례대로 실행
하나의 작업 수행이 끝난뒤 다음 작업이 실행되는구조
=> 특정작업이 끝나지 않으면 다음작업이 실행되지 못함
- 다중 스레드 (병럴처리)
하나의프로그램하나의 프로세스(Process) 내에서 동시에 여러가지 작업을 할수 있도록 하는 것
1. Thread 클래스를 상속받아 정의
- run() 메서드 오버라이딩
2. Runnable 인터페이스를 구현하여 정의
- 스레드를 생성하는 방법
: Thread 클래스의 객체를 생성해서 start() 메서드를 호출
=>Thread의 내부의 run()메서드가 실행됨, run()메서드 안에 작성한 코드가 병렬적으로 실행됨
난수 관련 클래스및 난수 발생코드
1. Math.random()
2. java.util.Random 클래스
nextBoolean() | true 혹은 false |
nextInt() | -2147483648 ≤ x ≤ 2147483647 (Integer) |
nextInt(int bound) | 0 ≤ x < bound (Integer) (bound 값은 포함하지 않음) |
nextLong() | -9223372036854775808L ≤ x ≤ 9223372036854775807L (Long) |
nextFloat() | 0.0 ≤ x < 1 |
nextDouble() | 0.0 ≤ x < 1 |
nextGaussian() |
평균 0.0이며 표준편차가 1.0인 정규분포(가우스 분포) 난수 생성 |
싱글톤 디자인 패턴(Singleton Design pattern)
- 프로그램에서 단 하나뿐인 유일한 객체(인스턴스)= 싱글톤 객체
→ 인스턴스가 오직 1개만 생성되어야 할때 사용
1. 객체가 생성되면 안되기 때문에 외부에서 생성자 호출을 못하도록 생성자 정의시 접근제한자를 private으로 선언
2. 자신의 클래스 내에서 직접 객체를 생성하여 참조변수에 저장
→ 참조변수의 접근제한자를 private으로 선언하여 접근제한 (생성자생성)
→ 참조변수를 static변수로 선언하여 객체생성없이 로딩(인스턴스 생성)
3. 생성된 인스턴스를 외부로 리턴하는 Getter를 정의
→ static변수를 리턴하므로 Getter메서드도 static으로 선언
'IT > JAVA' 카테고리의 다른 글
JDK 여러버전 사용 방법 (0) | 2024.02.29 |
---|---|
[JAVA] 정규표현식(Reaular Expression = Regex) (0) | 2020.10.13 |
[JAVA] Static 키워드 (0) | 2020.09.14 |
[JAVA] 프로그램 실행 과정 (0) | 2020.09.14 |
[JAVA] 디자인 패턴(Design patterns)::싱글톤(Singleton):: (0) | 2020.09.14 |