생활코딩 - Java(예외 Exception)
·
Java & Spring/Java
□ 예외란? 예외(Exception)란 프로그램을 만든 프로그래머가 상정한 정상적인 처리에서 벗어나는 경우에 이를 처리하기 위한 방법 □ try - catch ex) 0으로는 나눌 수 없기 때문에 오류가 발생하게 되는데 try - catch를 통해 오류 내용을 출력함 ※ e.메소드 e.getMessage(); → by zero 오류에 대한 기본적인 내용을 출력해준다. 상세하지 않다. e.toString() → java.lang.ArithmeticException: / by zero e.toString()은 e.getMessage()보다 더 자세한 예외 정보를 제공한다. e.printStackTrace() 메소드 getMessage, toString과는 다르게 printStackTrace는 리턴값이 없다...
생활코딩 - Java(다형성)
·
Java & Spring/Java
□ 메소드와 다형성 다형성이란 하나의 메소드나 클래스가 있을 때 이것들이 다양한 방법으로 동작하는 것을 의미한다. 같은 메소드 명 'a'지만 매개변수 타입이 int와 String차이로 아래 o.a(1);와 o.a("one");가 오류없이 작동한다. □ 클래스와 다형성 위 코드에서 obj.y();은 오류가 발생한다. 그이유는 A obj = new B(); 에서 클래스 B를 new를 통해 인스턴스화 하여 변수 obj에 담을 때 타입을 클래스 A로 정의했기 때문이다. 클래스 A에는 메소드 y가 정의되지 않았기 때문에 오류가 발생한다. 그러나 하위 클래스에서 메소드를 오버라이딩 하게되면 해당 메소드가 호출이된다. 위 예제에서 System.out.println(obj.x()); , System.out.printl..
생활코딩 - Java(abstract,final,interface)
·
Java & Spring/Java
□ abstract(추상 메소드) 추상 클래스는 상속을 강제하기 위한 것이다. 즉 상위 클래스에는 메소드의 시그니처만 정의해놓고 그 메소드의 실제 동작 방법은 이 메소드를 상속 받은 하위 클래스의 책임으로 위임하고 있다. abstract class A{ public abstract int b(); public void d(){ System.out.println("world"); } } 메소드 b의 선언 부분에는 abstract라는 키워드가 등장하고 있다. 이 키워드는 메소드 b는 메소드의 시그니처만 정의 되어 있고 이 메소드의 구체적인 구현은 하위 클래스에서 오버라이딩 해야 한다는 의미다. 이렇게 내용이 비어있는 메소드를 추상 메소드라고 부른다. 추상 메소드를 하나라도 포함하고 있는 클래스는 추상 클래스..
생활코딩 - Java(접근 제어자)
·
Java & Spring/Java
□ 접근 제어자 1. 사용자가 객체 내부적으로 사용하는 변수나 메소드에 접근함으로서 개발자가 의도하지 못한 오동작을 일으키게 되는 문제로부터 객체의 로직을 보호하기 위해서는 맴버에 따라서 외부의 접근을 허용하거나 차단해야 할 필요가 생긴다. 2. 사용자에게 객체를 조작 할 수 있는 수단만을 제공함으로서 결과적으로 객체의 사용에 집중 할 수 있도록 돕기 위함이다. 구분 같은클래스 같은패키지 다른패키지 서브클래스 관계없음 public O O O O protected O O O X default O O X X private O X X X
생활코딩 - Java(유효범위)
·
Java & Spring/Java
□ 유효범위(Scope) public static void main(String[] args) { for (int i = 0; i < 5; i++) { a(); System.out.println(i); } 위 메소드에서 i = 0부터 시작해 i < 5 인경우 i에 +1을 하며 System.out.println(i); 을 반복하는 for문이다. 그런데 메소드 a();로 인해 i = 0 이 반복되어 문제가 발생하지않는 이유는 a()라는 메소드 안에서 int i = 0;이라는 변수가 정의되어있기때문에 a()밖으로는 영향을 못미치기 때문이다. → int i = 0;의 경우 a()라는 메소드 안이 유효범위(scope)이다. ※ 두 코드의 차이점 : i = 0; 은 변수를 할당 한 것이고 int i = 0;은 변수..
생활코딩 - Java(객체지향프로그래밍)
·
Java & Spring/Java
■ 객체지향 □ 문법 객체지향을 편하게 할 수 있도록 언어가 제공하는 기능을 익히는 것이다. 이러한 기능들은 if, for문처럼 문법적인 구성을 가지고 있다. 이 문법을 이해하고, 숙지해야 객체를 만들 수 있다. 객체를 만드는 법에 대한 학습이라고 할 수 있다. □ 설계 좋은 객체를 만드는 법이다. 이것을 다른 말로는 설계를 잘하는 법이라고 할 수 있다. 좋은 설계는 현실을 잘 반영해야 한다. 현실은 복잡하다. 하지만 그 복잡함 전체가 필요한 것은 아니다. □ 부품화 프로그래밍은 정신적인 활동이다. 정신적인 것은 실체가 없고, 무한하고, 유연하다. 정신의 이러한 특성은 때로 오해나 모순 같은 문제점을 유발한다. 소프트웨어도 이러한 문제점을 그대로 상속받는다. 이러한 문제점을 극복하기 위한 노력 중의 하나..
생활코딩 - Java(입력과 출력)
·
Java & Spring/Java
1. String[] args String[] : 문자열을 담을 수 있는 배열이다. args : 변수 (String[] args) : main메소드의 파라미터(입력값) void : main의 출력값이 존재하지 않는다. 2. 콘솔환경에서 실행방법 cmd(명령 프롬포트) 실행 cd 경로 입력(최상위 디렉토리로 이동) dir/w, dir을 통해 디렉토리 확인 java -cp bin(class가있는 디렉토리) org.opentutorials.javatutorials.io.(class파일 패키지 경로)InputDemo(실행시킬 class파일) 3. 이미 실행중인 프로그램에 입력을 받는법 □ scanner 출처 : 생활코딩 유튜브 : https://www.youtube.com/watch?v=54hrXAyYUGo&l..
생활코딩 - Java(메소드)
·
Java & Spring/Java
1. 메소드의 정의와 호출 2. main메소드 → 약속(단순암기) main 메소드는 규칙이다. 무언가를 만들려면 반드시 public static void main(String[] args)가 이끄는 중괄호 안에 실행되기를 기대하는 로직을 위치시켜야 한다. 3. 입력과 출력 □ 입력 public static void numbering(int limit) 에서(int limit)은 매개변수(parameter) numbering(5)은 인자(argument) □ 출력(return) numbering 함수를 정의하고 인자값을 받아 output을 retrun 출처 : 생활코딩 유튜브 : https://www.youtube.com/watch?v=54hrXAyYUGo&list=PLuHgQVnccGMCeAy-2-llh..
생활코딩 - Java(배열)
·
Java & Spring/Java
1. 배열(Array) String[] : String(데이터타입) [](의 그룹) classGroup : 변수 2. for-each 잦은 반복문과 배열의 조화로인해 생겨난 문법 배열 members의 모든 요소들을 반복하여 변수 e에 대입 3. 반복문의 오류 □ 배열의 범위 밖 □ 배열의 한계 배열은 초기화할 때 크기를 정한다. 따라서 해당 크기 이상의 값을 넣을 수 없다. 출처 : 생활코딩 유튜브 : https://www.youtube.com/watch?v=pegfdsD1IY4&list=PLuHgQVnccGMCeAy-2-llhw3nWoQKUvQck&index=48
생활코딩 - Java(조건문, 논리연산자, 반복문)
·
Java & Spring/Java
□ 조건문 1. if 조건문 □ 기본 □ if else, else if □ if 중첩 2. switch 조건문 □ 논리연산자 1. and( && ) &&(and)는 좌항과 우항의 값이 모두 참(true)일 때 참이 된다. 2. or( || ) ||(or)는 좌우항 중에 하나라도 true라면 전체가 true가 되는 논리 연산자다. id가 "egoing", "k8805", "sorialgi" 중 하나(or) 이면서(and) pw가 "111111"이면 true 출력 3. not( ! ) !true = false !false = true 처럼 연산된다 □ 반복문 1. while문 2. for문 for (int i = 0; i < 10; i++)에서 각 항의 의미 int i = 0 : 시작 i < 10 : 조건 ..