티스토리 뷰
<-- -->
객체지향언어(OOP : Object Oriented Programing)의 4대 특징
추상화 | 추상적 개체 > 구체적 개체 : 추상적 개체의 구체화 |
캡슐화 | 데이터의 보호와 은닉, 안정성(데이터를 확인하기 위해서 데이터를 갖고 있는 객체를 통해서 확인해야하며, 데이터가 변경되는 것을 객체가 확인할 수 있음.) |
상속 | 코드의 확장 및 재사용이 용이해짐 |
다형성 | 오버라이딩, 동적바인딩 등등.. |
이를 통해서 얻을 수 있는 장점은 유지보수, 데이터의 은닉이 용이하며 디버깅이 쉽다.
<-- -->
객체지향언어의 역사
C -> C++ > Win32API -> MFC -> C# : MS 계열
ㄴ> Java --> web : Jsp -> Spring Framework
ㄴ> mobile : Android
ㄴ> Object C -> Swift : Mac계열
<-- -->
프로그래머의 스타일에 따라서 3가지로 분류해볼 수 있음.
1. server -> BackEnd
2. client(UI/UX) -> FrontEnd
3. server & client -> FullSteak
<-- -->
우리가 공부해야할 것
1. languege : Java etc
2. OS : Linux, Unix -> 하지만 Unix는 어렵다고 함.
3. DB : Oracle DB etc
<-- -->
자바의 탄생 배경
SUN사(현재 Oracle에 인수합병됨)에서 Embedded(소형 프로그래밍)을 목적으로 만들었지만 Embedded로 각광받지 못하였으나 Applet(PC게임 등..)이라는 기능이 각광받으며 특유의 안정성과 보안으로 인해 확장되면서 업계를 잠식함.
<-- -->
JVM : Java Virtual Machine
Java는 OS에 독립적이기에 이를 위해서 각각의 OS에 맞는 가상환경을 설정해주는 것이 JVM임.
<-- -->
환경변수 설정하기
classpath, JAVA_HOME, Path를 설정하려한다.
첨부한 3장의 사진과 같은 순서로 경로를 설정할 수 있으며 Path변수만 편집을 통해서 추가를 한다.
1. classpath : .;
2. JAVA_HOME : Java를 받은 경로에 있는 폴더의 bin폴더를 지정
3. Path : %JAVA_HOME%\bin 추가
<-- -->
기본문법은 아래와 같으며, 실행단계는 4단계를 거친다.
class Hello { public static void main(String[] args) { System.out.println("Hello, World"); } } |
1. 메모장에 위와 같이 적고 클래스명과 동일한 java확장자로 저장을 함.
2. cmd에서 저장된 경로로 디렉토리를 변경함
3. javac 클래스.java : 컴파일함 > 생략가능
4. java 클래스.java : 실행
<-- -->
접근지정자는 4개가 있다.
private, default, protected, public
접근지정자 | 접근 범위 | 동일 클래스 | 동일 패키지 | 다른 패키지의 자식 클래스 | 다른 패키지 |
private | 동일 클래스 내에서만 | O | |||
default | 동일 패키지 내에서만 | O | O | ||
protected | 동일 패키지와 상속 받은 클래스 내부 | O | O | O | |
public | 접근 제한 없음 | O | O | O | O |
<-- -->
Java 언어의 특징
1. OS에 독립적임 : JVM을 통해서 서로 다른 OS에서도 적용가능
2. 객체지향언어 : 추상화, 캡슐화, 상속, 다형성이 잘 적용됨
3. 자동 메모리 관리 : Garbage Colloector가 자동적으로 메모리를 관리해줌
4. 네트워크와 분산처리를 지원 : API를 통해 비교적 단시간에 네트워크와 관련된 프로그램을 개발할 수 있도록 지원
5. 멀티쓰레드 지원 : Java의 멀티쓰레드 프로그램은 시스템과 관계없이 구현가능하며, API가 제공되므로 구현이 쉬움.
6. 동적 로딩을 지원 : 클래스를 따로 로딩되지 않고 필요한 시점에 클래스를 로딩하여 사용가능
<-- -->
상수 : 변하지 않는 값
변수 : 상수를 할당하는 메모리 공간(수학적 의미의 변수와는 다름.)
<-- -->
변수의 형태 : 기본형, 참조형
1. 기본형 : boolean(논리), char(문자), byte, short, int, long, float, double
1 byte | 2 byte | 4 byte | 8 byte | |
논리 | boolean | |||
문자 | char | |||
정수 | byte | short | int | long |
실수 | float | double |
자료형 | 저장 가능한 값의 범위 | 크기 | |
boolean | false, true | 8 bit | 1 byte |
char | \u0000 ~ \uffff : 0 ~ (2^16)-1 > 0 ~ 65535 | 16 bit | 2 byte |
byte | (-2^7) ~ (2^7)-1 | 8 bit | 1 |
short | (-2^15) ~ (2^15)-1 | 16 bit | 2 |
int | (-2^31) ~ (2^31)-1 | 32 bit | 4 |
long | (-2^63) ~ (2^63)-1 | 64 bit | 8 |
float | 1.4e-45 ~ 3.4028235e38 | 32 bit | 4 |
double | 4.9e-324 ~ 1.7976931348623157e308 | 64 bit | 8 |
2. 참조형 : 8개의 기본형을 제외한 나머지 타입이나 객체의 주소를 저장함. (예 : 문자열 변수의 String)
<-- -->
기본형 변수의 선언
int a; boolean b; char c; double d; final int e = 5; a = 3; b = true; c = 'q'; d = 5; |
이때 final로 선언된 것은 선언과 동시에 변수의 값을 할당한 이유는 final로 선언되면 나중에 변경하는 것이 불가능하기 때문에 변수의 값을 할당하지 않으면 오류가 생긴다.
<-- -->
참조형 변수의 선언
예를 들어서 스캐너 객체를 참조하는 sc라는 변수를 선언하려 한다면 아래와 같이 선언하여 사용하면 된다.
System.in이 의미하는 것은 키보드에서 입력받을 준비가 됐음을 의미함.
import java.util.Scanner; Scanner sc; sc = new Scanner(System.in); |
아래와 같이 변수의 선언과 동시에 할당을 하는 것 또한 가능하다.
(java.util.* 은 util에 있는 모든 것을 사용하겠다는 것을 의미함.)
import java.util.*; Scanner sc = new Scanner(System.in); |
<-- -->
naming rule
1. class명의 첫자는 대문자
2. field(변수)는 소문자
3. 합성어를 사용할 때는 합쳐지는 단어의 첫글자는 무조건 대문자
4. 기능에 맞는 이름을 찾음
<-- -->
import java.lang.*
java.lang 패키지는 자바프로그래밍에 가장 기본이 되는 클래스들을 포함하고 있음.
그렇기 때문에 java.lang 패키지의 클래스들은 import문 없이도 사용할 수 있게 되어 있음.
그동안 String 클래스나 System 클래스를 import문 없이 사용할 수 있었던 이유가 바로 java.lang 패키지에 속한 클래스들이기 때문이었던 것임.
<-- -->
형변환(casting) : 자동형변환, 강제형변환
1. 자동형변환 : 작은 메모리 크기의 데이터 타입을 큰 메모리 크기의 데이터 타입으로 변환하는 것을 의미함.
int a = 200;
a : 200 b : 200.0 |
2. 강제형변환 : 데이터 타입을 원하는 형태로 지정하여 변환하는 것을 의미함.
String a = "20"; |
<-- -->
연산은 초기화하는 행위가 발생하지 않는 이상 해당 변수 자체가 바뀌는 일은 없음
a = 3;
b = 3; b = b<<1; : 이때 b의 값은 6이됨. |
<-- -->
if 조건문 : 조건문이 여러개인 경우에 사용된다.
if (조건식1) { (조건식1이 참인 경우에 수행될 문장) } else if (조건식1) { (조건식2이 참인 경우에 수행될 문장) } else { (위의 조건식 중 만족하는 것이 없을 때 수행되는 문장) } |
아래는 조건문을 활용한 단순 사칙연산을 위한 계산기를 만들어보았다.
스캐너를 만들어서 숫자1, 연산자, 숫자2를 받도록 만들었으며 연산자의 경우에 따라서 계산을 달리하게 만들었다.
<-- charAt --> import java.util.*;
class Cal2 { public static void main(String[] args) { Scanner sc = new Scanner(System.in);
System.out.println("숫자1 입력"); int a = sc.nextInt();
System.out.println("연산자 입력"); String cc = sc.next();
System.out.println("숫자2 입력"); int b = sc.nextInt();
double c;
char oper = cc.charAt(0);
// 연산자 확인 if (oper == '+') { c = a + b; System.out.println(c); } else if (oper == '-') { c = a - b; System.out.println(c); } else if (oper == '*') { c = a*b; System.out.println(c); } else if (oper == '/') { c = a/b; System.out.println(c); } else { System.out.println("not operand"); }
} }
<-- equals --> import java.util.*;
class Cal { public static void main(String[] args) { Scanner sc = new Scanner(System.in);
System.out.println("숫자1 입력"); int a = sc.nextInt();
System.out.println("연산자 입력"); String oper = sc.next();
System.out.println("숫자2 입력"); int b = sc.nextInt(); double c;
// 연산자 확인 if (oper.equals("+")) { c = a + b; System.out.println(a + oper + b +"= "+ c ); } else if (oper.equals("-")) { c = a - b; System.out.println(a + oper + b +"= "+ c ); } else if (oper.equals("*")) { c = a * b; System.out.println(a + oper + b +"= "+ c ); } else if (oper.equals("/")) { c = a / b; System.out.println(a + oper + b +"= "+ c ); } else { System.out.println("not operand"); }
} } |
<-- -->
switch 조건문 : switch조건문은 하나의 조건식에 여러개의 결과값이 나올때 주로 사용된다.
switch (조건식) { case 값1 : (조건식의 결과가 값1과 같은 경우 수행될 문장들) break; case 값2: (조건식의 결과가 값2와 같은 경우 수행될 문장들) break; default : (조건식의 결과와 일치하는 case문이 없을 경우에 수행될 문장들) } |
아래는 위의 if 조건문으로 작성된 계산기를 switch문으로 수정하는 것이다.
스캐너를 만들어서 숫자1, 연산자, 숫자2를 받도록 만들었으며 연산자의 경우에 따라서 계산을 달리하게 만들었다.
<-- 문자열에서 charAt()을 사용하여 연산자를 추출한 후에 연산 --> import java.util.*;
class Cal2 { public static void main(String[] args) { Scanner sc = new Scanner(System.in);
System.out.println("숫자1 입력"); int a = sc.nextInt();
System.out.println("연산자 입력"); String cc = sc.next();
System.out.println("숫자2 입력"); int b = sc.nextInt();
double c;
char oper = cc.charAt(0);
// 연산자 확인 switch (oper) { case '+': c = a + b; System.out.println(c); break; case '-': c = a - b; System.out.println(c); break; case '*': c = a * b; System.out.println(c); break; case '/': c = a / b; System.out.println(c); break; default : System.out.println("not operand"); }
} }
<-- --> import java.util.*;
class Cal { public static void main(String[] args) { Scanner sc = new Scanner(System.in);
System.out.println("숫자1 입력"); int a = sc.nextInt();
System.out.println("연산자 입력"); String oper = sc.next();
System.out.println("숫자2 입력"); int b = sc.nextInt(); double c;
// 연산자 확인 switch (oper) { case "+" : c = a + b; System.out.println(a + oper + b +"= "+ c ); break; case "-" : c = a - b; System.out.println(a + oper + b +"= "+ c ); break; case "*" : c = a * b; System.out.println(a + oper + b +"= "+ c ); break; case "/" : c = a / b; System.out.println(a + oper + b +"= "+ c ); break; default : System.out.println("not operand"); }
} } |
<-- -->
for 반복문 : 하나의 작업을 반복적으로 수행할 때 사용된다.
for( 초기화; 조건식; 증감식) { (조건식이 참일 경우 수행될 문장) } |
아래는 for 반복문을 사용하여 종이를 접은 횟수에 비례하여 늘어나는 사각형의 갯수를 프린트하도록 만든 코드이다.
class For { public static void main(String[] args) { int j = 0; for(int i=1; i<500; i*=2) { j += 1; System.out.println("접은 횟수 :" + (j-1)); System.out.println("사각형 갯수 :" + i); } } } |
for 반복문 내부에 for 반복문을 다시 사용할 수 있다. 이를 이중for문이라고 한다.
for( 초기화; 조건식; 증감식) { for( 초기화2; 조건식2; 증감식) { (조건식이 참일 경우 수행될 문장) } } |
아래는 이중for문을 사용하여 구구단을 출력하도록 만든 코드이다.
class For2 { public static void main(String[] args) {
for(int i=1; i<=9; i++) { for( int j=2; j<=9; j++) { System.out.print(j + "*" + i + "="+ i*j + "\t"); } System.out.println(""); }
} } |
'it분야의 끄적끄적 > Java 계열의 프로젝트 및 글' 카테고리의 다른 글
Java 강의 6일차 (0) | 2020.01.20 |
---|---|
Java 강의 4~5일차 (0) | 2020.01.16 |
Java 강의 3일차 (0) | 2020.01.15 |
JAVA 강의 2일차 (0) | 2020.01.14 |
- Total
- Today
- Yesterday
- ML
- PCA
- 머신러닝
- 군집분석
- 서포트벡터머신
- Partitioning Around Medoids
- java
- dimension reduce
- SVM
- 이상치처리
- PAM
- Clustering Analysis
- CA
- K-means clustering
- 주성분분석
- 차원축소
- EDA
- 데이터전처리
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |