목록JAVA (13)
오늘보다 더 나은 내일의 나에게_
정렬 알고리즘 : 원소들을 일정한 순서대로 열거하는 알고리즘 버블 정렬 : 두 인접한 원소를 비교하여 정렬하는 방법 장점 - 인접한 값만 계속해서 비교하는 방식으로 구현이 쉽다. 코드가 직관적이다 단점 - 하나의 요소가 가장 왼쪽에서 가장 오른쪽으로 이동하려면 배열의 모든 요소와 교환되어야 한다. - 특정 요소가 최종 정렬 결과에 맞는 위치에 있더라도 교환되는 일이 일어날 수 있다. => 구현이 단순하지만 느림 코드 더보기 package 버블정렬; import java.util.Arrays; public class 버블정렬_오름차순 { public static void main(String[] args) { int[] arr = {7,4,5,1,3}; System.out.println("정렬 전 : " ..
추상 클래스 추상화 클래스 간의 공통점을 찾아서 공통의 조상을 만드는 작업 상속 계층도를 따라 올라갈수록 추상화는 더욱 심화 구체화 상속을 통해 클래스를 구현, 확장하는 작업 추상 메서드(abstract method) - 선언되어 있으나 구현되어 있지 않은 메서드 - abstract 키워드를 붙여 선언 => ex) public abstract int getValue( ); - 서브 클래스에서 오버라이딩하여 재 구현해주어야 함(필수!) 추상 클래스(abstract class) - 추상 메서드를 하나라도 가진 클래스 - abstract 키워드를 붙여 선언 - 혹은, 추상 메서드가 하나도 없지만 클래스 앞에 abstract 키워드가 붙은 경우 추상 클래스의 특성 - 추상 클래스 자체로 객체를 생성할 수는 없다..
상속 : 기존 클래스의 특성(필드)과 기능(메서드)을 물려받아 새로운 클래스를 구성하는 것 기존 클래스 => 부모 클래스, 슈퍼클래스 새로운 클래스 => 자식클래스, 서브클래스 마우스 - 오른쪽/왼쪽버튼 클릭하다 휠마우스 -휠, 오른쪽/왼쪽버튼 클릭하다 무선 마우스 - 휠, 오른쪽/왼쪽 버튼 클릭하다 버티컬 마우스 - 휠, 오른쪽/왼쪽 버튼 클릭하다 마우스라면 가지고 있는 공통적인 특성/기능 > 마우스의 공통/기능을 가지고 있는 클래스가 설계되어 있고 가져다가 사용만 할 수 있다면 편리할 것! class 마우스(부모클래스) class 휠마우스(자식클래스) class 인체공학마우스 (자식클래스) 좌클릭하기 메소드 우클릭하기 메소드 드래그하기 메소드 좌클릭하기 메소드 우클릭하기 메소드 드래그하기 메소드 스크..
MVC Pattern M : Model => 컨트롤러에서 수행할 내용을 받아 자바코드, SQL / 기능수행하기위해 사용될 데이터들을 정의하는 공간 VO(Value Object) - (필드, 생성자, getter) DTO(Data Transfer Object) DAO(Data Access Object)-(DB연동 메소드 필드) V : View => 사용자에게 보여질 화면(UI) C : Controller =>View에서 사용자가 요청한 사항에대해 기능을 제공 / 사용자가 요청한 데이터(Model)불러와줌 / 로직 Model Controller View MVC 패턴 필요성 Low Coupling(결합도) : 객체 혹은 시스템 간의 결합도가 낮다 High Cohesion(응집도) : 하나의 메소드는 하나의 역..
객체 배열 자료 값을 담는 기본 배열과는 다르게 서로 다른 객체(타입은 동일)의 참조값을 연속된 공간에 저장하기 위한 자료구조 public class Main{ public static void main (String[] args){ Person[] p; // 배열에 대한 레퍼런스 변수 p = new Person[2]; // 레퍼런스 배열 생성 p[0] = new Person(); p[1] = new Person(); //객체배열사용 p[0].name="홍길동"; p[0].age=25; p[1].name="김헌찬"; p[1].age=27; } } public class Person{ String name; int age; } 예제 Student 클래스 작성 Student클래스의 필드 접근 지정자 타입 변..
메소드(Method) :어떤 작업을 수행하기 위한 명령문의 집합 => 해당 작업이 필요할 때마다 호출해서 사용 -매개변수(재료) -반환 값(받은 결과) => 매개변수와 반환 값은 필수는 아님! 메서드의 구조 public static int addNumber(int num1, int num2){ int result = num1 + num2; return result; } //public 접근제한자 / int 반환타입/ addNumber 메소드이름 / (int num1, int num2) 매개변수 접근 제한자 => 접근할 수 있는 범위를 지정 : public, protected, default, private public 모든 접근 허용 protected 같은 패키지에 있는 객체와 상속관계에 있는 객체만 허..
언어의 종류 절차 지향 언어 장점 - 코드의 구조가 컴퓨터 처리구조와 유사하여 실행 속도가 빠름 단점 -유지보수가 어렵다 => 모든 구성요소가 유기적으로 연결되어 하나가 고장 나면 전체가 고장남 - 코드 순서가 바뀌면 결과가 달라질 수 있다 => 생산 효율이 떨어진다 객체지향 언어 : 독립된 객체 간 상호작용 (JAVA, C++, C#) 장점 - 재사용성 - 유지보수가 쉬워 생산성이 증가함 => 한 부분이 고장나면 문제 되는 부분만 수정하면 된다 - 개발자가 생각하는 대로 자연스럽게 모델링할 수 있다 => 객체는 세상에 존재하는 모든 것이기 때문에 우리가 사는 세상과 닮아있다 단점 - 개발 속도가 느리다 => 모든 객체의 역할과 기능을 이해해야 하므로 작성하는데 많은 시간이 소요된다 - 실행 속도가 느리..
배열 :동일한 자료형의 데이터를 연속된 공간에 저장하기 위한 자료구조(순차적으로 데이터들이 저장) > 반복문을 이용하여 처리하기에 적합한 자료구조 :인덱스에 대응하는 데이터들로 이루어진 자료구조 > 한 번에 많은 메모리 공간 선언 가능 :인덱스는 0부터 시작 > 인덱스는 배열 시작 위치로부터의 상대적인 위치 배열 생성 new int[5]; new 자료형 [배열의 크기] 배열 레퍼런스 변수 선언 레퍼런스 변수(참조 변수) => 메모리 상에 생성된 인스턴스와 메서드를 가리키는 데 사용되는 변수 Ex) int [] arr = new int [5]; 자료형 [ ] 변수 이름 배열 생성 시 값을 알고 있는 경우 int[] arr = {4, 2, 5, 7, 10}; float[] arr2 = {0.4f, 0.22f..
반복문 :어떤 조건에 만족할 때까지 또는 특정 횟수만큼 같은 처리를 반복하여 실행하는 구조 while문 :정확하게 몇 번 반복해야 할지 정해지지 않은 경우에 사용 :몇 번 반복해야 하는지 정해져 있지 않기 때문에 반복문을 수행할 조건을 지정해줘야 함(조건은 항상 논리형) while(조건식) { 실행 문장 } 다음 문장 do~while문 :while문과 동일하지만 지정된 명령 실행 후 조건 확인 시 true인 경우 다시 지정된 명령 실행 , false가 되는 순간 다음 명령 실행(조건을 확인하지 않고 먼저 실행 문장을 실행함) do { 실행 문장 } while(조건) 예제 1 키보드로부터 입력받은 수가 10보다 작은 때만 계속 숫자를 입력할 수 있는 프로그램을 작성(while문 / do-while문 모두 ..
조건문 주어진 조건을 비교/판단하여 그 조건에 만족할 경우 지정된 명령을 실행하고 만족하지 않을 경우 다음 단계의 명령을 수행 하도록 하는 구문 종류 - 단순 if문, if~else문, 다중 if~else문, switch문 단순 if문 => if문의 조건식이 참이면 if문 내부의 '실행문장'이 실행되며 거짓이면 if문을 벗어남(조건은 1개) 조건은 항상 논리형(boolean: true/false) 일반적으로 논리, 비교연산자 사용! if(조건식) { 실행문장 } 더보기 예제2 int 타입의 변수 num을 선언하고 키보드로 값을 입력받으시오. 만약 입력받은 값이 3의 배수이거나 5의 배수이면 "3또는 5의 배수입니다"를 출력하는 프로그램을 작성 더보기 if ~ else문 : if문의 조건식이 참이면 if문..