글 전체보기
-
java 예외 처리대학/객체지향프로그래밍 2022. 10. 9. 17:45
예외가 발생하면, 프로그램은 더이상 동작의 의미가 없어지므로 kernel에서 프로세스를 종료시켜 버린다. 그런 예외의 타입은 크게 Error, Exception 두 개로 나뉜다. 1. Error 개발자가 처리할 수 없는 오류로 Stack Overflow, JVM 자원 부족 등이 이에 해당한다. 2. Exception 개발자가 처리할 수 있는 오류로 0으로 나누기, 배열 밖 인덱스 접근 등이 이에 해당한다. Exception는 또 검사형 예외, 비검사형 예외로 나뉜다. 1. 검사형 예외(일반 예외) 예외처리를 하지 않으면 컴파일 오류가 발생하는 예외로 예외처리 코드를 반드시 추가해 줘야 하고, 그렇지 않으면 컴파일 조차 되지 않는다. 일반 예외 발생 이유 ClassNotFoundException 존재하지 ..
-
java 인터페이스대학/객체지향프로그래밍 2022. 10. 9. 16:54
interface Car { int wheels = 4; void start(); void stop(); default void newFeature(int n) { print(n); } private void print(int n) { for (int i = 0; i < n; i++) { System.out.println("This is new feature"); } } } interface Color { void setColor(String s); String getColor(); static void info() { System.out.println("Color interface info"); } } class Bmw implements Car, Color { private String color; ..
-
java 패키지대학/객체지향프로그래밍 2022. 10. 9. 14:26
파일 트리 소스코드 // inPack.java package outerPackage.innerPackage; public class inPack { String s; protected String ps; public inPack() { s = "inPack"; } public void print() { System.out.println("inPack: " + s); } protected void protPrint() { System.out.println(ps); } } // outPack1.java package outerPackage; public class outPack1 { String s; outPack1() { s = "outPack1"; } void print() { System.out.pri..
-
java 클래스대학/객체지향프로그래밍 2022. 10. 9. 12:02
- 메서드 오버로딩(method overloading) class OverloadDemo { void test() { System.out.println("No parameters"); } void test(int a, int b) { System.out.println("a: " + a + "b: " + b); } double test(double a) { System.out.println("double a: " + a); return a*a; } } 같은 이름의 메서드를 사용해도 호출하는 인자값에 따라 다른 메서드를 호출하게 된다. - 인자 전달 방식 1. Call by Value (값에 의한 호출) 인자가 기초타입인 경우 값에 의한 호출을 사용하게 된다. (byte, int, float ...) 이 호..
-
java 연산 및 제어대학/객체지향프로그래밍 2022. 10. 7. 17:02
- 복합 대입 연산자 산술과 대입 연산자를 조합한 것. 언급한 이유는 성능상의 이점이 있기 때문. - 비트 연산자 and(&), or(|), xor(^), not(~) 연산자를 지원한다. 2의 보수 계산법 음의 이진수는 2의 보수로 나타내는데 이를 계산하는 방법은 다음과 같다. 1. 양수의 이진수를 구한다. 2. 각 자리의 모든 비트를 반전시키고 1을 더한다. int a = 0b0101; int b = 0b0011; a & b // 1 (0b0001) a | b // 7 (0b0111) a & b // 6 (0b0110) ~b // -4 (0b1100) - 비트 시프트 연산자 정수, 실수 타입에 연산자로서 사용할 수 있다. 왼쪽 시프트()를 지원하며, 대입 연산자도 지원한다. (=) 왼쪽 시프트 시 오른..
-
java 기본 문법대학/객체지향프로그래밍 2022. 10. 7. 16:01
- 변수(식별자) ; 으로 선언할 수 있으며, 선언과 동시에 초기화도 가능하다 (정적 초기화). 단, 키워드와 식별자 사이에는 whitespace(스페이스, 탭, 개행문자)가 들어와야 하고, 식별자는 다음의 규칙을 만족해야 한다. 1. 문자, _, $ 로 시작 2. 대소문자 구분됨 3. 연산자 포함 금지 4. java 예약어(키워드) 사용 금지 5. 길이는 무제한 또한 실행 도중에 연산의 결과로 초기화도 가능하다 (동적 초기화) double twelve = Math.sqrt(12 * 12); - 타입(type) java는 컴파일 타임에 타입검사를 엄격히 검사한다. 크게 기초타입과 오브젝트로 구분되는데, 오브젝트의 경우 리소스를 많이 잡아먹기 때문에, 기초타입으로 나타낼 수 있는 경우에는 기초타입으로 선언..
-
java 특징대학/객체지향프로그래밍 2022. 10. 7. 14:32
- java의 특징 이식성(portability)과 보안성(security)이 좋다는 점이다. 즉, 네트워크 어느 플랫폼이던 상관없이동작 가능하고, 악성 코드의 실행으로부터 비교적 안전하다는 뜻. 이 것이 가능하게 된 이유는 자바는 JVM 위에서 동작하기 때문! .java는 컴파일러에 의해 JVM이 이해할 수 있는 bytecode로 변환되고, JVM에서 이 bytecode를 읽고 각 운영체제에 맞는 기계어로 번역하게된다. 즉, 자바 코드는 JVM 위에서 동작하기 때문에 JVM만 설치되어 있다면 플랫폼에 구애받지 않고 구동할 수 있고, JVM 내에 sandboxing 되기 때문에 악성 코드가 JVM 밖에서는 실행되지 않게 된다. 컴파일 -> 해석 두 단계를 거치기에 성능에 이슈가 있을거 같지만, JVM ..
-
도커로 파이썬 개발환경 구축 (feat. VSCode)서비스 공부/Docker 2022. 8. 5. 18:01
이전글을 읽고 오시면 더욱 간절하게 도커를 원하시게 될 수도 있습니다.. (본인 경험담) 도커의 필요성을 느끼게 된 계기 ** 주의: 서론이 깁니다. ** 학교 프로젝트의 일환으로 판타스틱5 팀에서 활동하며 음성인식 키오스크: "말하는 사이에 주문 완료"를 개발하고 있었다. 프론트는 react.js, 백엔드는 node.js로 개발이 with611.tistory.com 서론은 짧게 하고 바로 시작합니다. 1. 우선 VSCode에서 도커 익스텐션을 설치해줍니다. 2. 파일이름: DockerFile (확장자 없음)으로 파일을 하나 만들어줍니다. 그럼 VSC에서 제공하는 dockerfile 자동완성 기능을 이용할 수 있습니다. [Docker] 도커 입문하기 4 - 도커 이미지 만들기 도커 이미지 만들기 도커 컨..