[java]필수 개념
2022. 9. 13. 15:29
Developer/Java
자바의 필수 개념을 정리해보는 시간을 가져봅시다 일단 자바의 특징부터 알아봅시다 객체지향 반대로 절차지향 언어는 c 언어가 대표적입니다 플랫폼에 독립적 자바 프로젝트를 만들고 윈도 맥 리눅스 어느 플랫폼에서도 동작합니다 메모리 관리에 유용합니다 자바는 가비지 컬렉터가 있기때문에 사용하지 않는 메모리는 알아서 비워주기 때문에 메모리 관리를 따로 하지 않아도 됩니다 (물론 하면 좋긴 합니다 ㅎㅎ ) 멀티 쓰레드 자바는 멀티 스레드가 가능합니다 반면 c는 싱글 스레드입니다 추상화 추상적인 클래스를 생성한다 인터페이스 추상 클래스보다 더 추상적이며 클래스 작성의 틀을 제공한다 다형성 한개의 객체가 여러 가지의 타입을 가질 수 있는 것 예를 들어 그리기 클래스를 선 클래스가 상속, 그리기 클래스를 점 클래스가 상..

[java]Object클래스
2022. 9. 8. 13:45
Developer/Java
오브젝트 클래스는 우리가 모르게 이미 상속을 받아 사용하고 있는 클래스이다 선언부를 보면 이미 딱히 extends로 키워드를 쓰지 않았는데도 말입니다 써도 되고 안써도 됩니다 ㅎㅎ 이미 우리는 상속을 받고있어요 그럼 왜 상속을 받아서 써야하나 궁굼합니다 그 이유는 바로 모든 클래스의 조상인 오브젝트 클래스가 갖고있는 클래스를 사용하기 위해서 입니다 공통적으로 상요할만한 기능들이 들어가있는것이죠 기능은 즉 메서드입니다 여러분이 자바 api 문서에서 Object 클래스를 보면 아마 clone, equals 이러한 메서드 들이 보일것입니다 이게 생성하지 않더라도 사용 할 수 있는 이유가 바로 오브젝트 클래스에 이미 다 정의 되어있기 때문입니다 이중에 가장 많이 쓰이는것은 아마 제 경험으로는 quals 와 to..
[java] hashmap 오름차순, 내림차순정렬
2022. 8. 29. 14:57
Developer/Java
Map failed = new HashMap(); HashMap을 정렬해야 할 일이 생겼습니다 value기준으로 오름차순 내림차순을 해야 하는데 이걸 for 문으로 반복해서 한다고 생각하니 좀 막막하더라구요?ㅎㅎ 코드도 워낙 길어질 것 같고요 그래서 좀 찾아보니 collection클래스를 이용해서 sort 해주는 기능이 있길래 바로 써봤습니다 ㅎㅎ 먼저 데이터에 들어가있는 값은 키가 Integer고 값이 Double인 데이터 {1=0.125, 2=0.42857142857142855, 3=0.5, 4=0.5, 6=1.0} 이러한 형태로 들어가 있습니다 이 value를 이용해 내림차순 하도록 하고자 합니다 ㅎㅎ 결론적으로 필요한건 key입니다 ㅎㅎ 그럼 내림차순 한다고 하면 {1=0.125, 2=0.4285..
[java]equals
2022. 8. 26. 10:53
Developer/Java
자 이제 자바문법은 어느정도 다 알아봤습니다 근데 중요한게 이제 막 첫걸음 뗀거에요; 좌절하지 마시고 차근차근 여러가지를 알아보도록 합시다 자바에는 우리가 소스코드를 유용하게 사용할 수 있도록 도움을 주는 클래스들이 많이 아주 많이 있습니다 이 클래스들에 있는 기능들을 잘 사용하는것이 개발 잘하는 개발자 인것입니다 잘 사용한다 라는것은 적재 적소에 사용하는것 이라고 할 수 있습니다 아 이러한 업무가 있을때에 메모리를 적게 먹으며 처리속도까지 고려한다면 음 이번 업무는 이 클래스를 이용하고 이러한 로직으로 구현하면 되겠구나 이런 답이 먼저 나와야 합니다 물론 저도 아직 이렇게 나오진 않아요 그래서 아직도 공부를 하는중이죠 ㅜ 그러기 위해서는 유용한 패키지 안에 들어가있는 클래스 그안에 메서드까지 기본적인건..
[java] 제네릭
2022. 8. 25. 17:04
Developer/Java
제네릭은 아주 많이 쓰이는 문법 중 하나입니다 결론적으로 제네릭이 뭐냐하면 클래스 내부에서 사용할 타입을 내부에서 지정하지 않고 외부에서 지정하도록 하는것입니다 그렇다면 내부에서는 지정하지 않아놨겠죠?ㅎㅎ 저번에 보았던 HashMap 을 사용할때에도 굉장히 많이씁니다 거의 무조건 쓴다고 보시면 됩니다 HashMap hm = new HashMap(); 여러분들이 이클립스에서 HashMap까지 타이핑 하고 컨트롤 쉬프트를 누르면 자동완성이 되잖아요?ㅎㅎ 그럼 저런식으로 자동완성이 됩니다 ㅎㅎ 저번에 배운것 처럼 HashMap은 key val 형태로 구성 되어있어서 약어로 K , V로 자동완성이 되는겁니다 ㅎㅎ 그럼 우리 HashMap으로 한번 만들어봅시다 이 제네릭에 들어갈 수 있는 것은 기본 자료형이 아니..

[java]컬렉션즈 프레임워크
2022. 8. 22. 15:43
Developer/Java
우리가 컬렉션즈 프레임워크를 사용하는 이유는 간단해요 데이터를 자유자재로 다루기에 편하기 때문입니다 대표적인 예로 배열에 여러가지의 값을 담기에 아주 좋죠 근데 배열은 그 크기를 정해놓으면 바꿀수가 없습니다 그 크기를 넘어서면 인덱스 아웃오브 바운스 익셉션이 나올겁니다 그래서 나온것이 컬렉션즈 프레임워크에 있는 List 입니다 처음으로 알아볼것은 ArrayList입니다 public static void main(String[] args) { ArrayList data = new ArrayList(); data.add("data1"); data.add("data2"); data.add("data3"); for (int i = 0; i < data.size(); i++) { System.out.println..

[java] 예외처리
2022. 8. 18. 13:55
Developer/Java
프로그래밍을 하다보면 예기치 못하게 에러나 오류나 버그가 있을 수 있습니다 사람이라는 존재가 어디까지나 모두 다 예측 하기란 참 어려운 일이 아닐 수 없겠죠 그렇기에 예상치 못한 오류가 발생 했을 때를 위해서 사용하는 문법이 예외처리 입니다 간단한 코드를 살펴보겠습니다 public class blogTest { public static void main(String[] args) { Calcu ca = new Calcu(); //더하기 System.out.println(ca.su(10, 0)); //곱하기 System.out.println(ca.multi(10, 0)); //나누기 System.out.println(ca.div(10, 0)); } } 언뜻 보기엔 별 문제 없어보이죠 그렇지만 에러가 발생해..
[java]추상(abstract)
2022. 8. 18. 10:58
Developer/Java
추상에 대해서 알아보도록 합시다 추상 메서드라고 많이 말들을 하는데 추상 클래스도 있기 때문에 굳이 메서드라는 단어를 붙이진 않았습니다 ㅎㅎ 오늘은 처음부터 결론을 말할게요 추상 메서드를 쓰는 이유는 클래스의 상속을 강제하기 위함입니다 public class blogTest { public static void main(String[] args) { AbTest ab = new AbTest(); } } abstract class AbTest { public abstract int b(); } 이 코드는 에러가 발생하는 코드입니다 ㅎㅎ abstract 즉 추상 클래스나 메서드는 상속을 받아서 사용하는 것이므로 메인에서 처럼 인스턴스화 해서 바로 사용할 수 없습니다 자 그럼 우리가 꼭 AbTest 클래스를 ..
[java] 접근제어자
2022. 8. 16. 14:34
Developer/Java
자바 하면서 빼 놓을 수 없는 접근 제어자에 대해서 알아보도록 합시다 매서드를 선언하거나 final 키워드로 변수를 초기화 할 때 보면 앞에 public 이나 private 또는 protected 이러한 키워들 적어 주는걸 볼 수 있을겁니다 이것은 아주 중요한 접근 제어자 이므로 알고 넘어 가야합니다 우선 표로 확인해 봅시다 public protected default private 동일 패키지, 클래스 O O O O 동일 패키지, 상속 O O O X 동일 패키지, 상속 아님 O O O X 다른 패키지, 상속 O O X X 다른패키지, 상속 아님 O X X X 이 표를 기억합시다 ㅎㅎ public은 어디서나 접근 생성이 가능한 반면 private를 보면 같은 패키지와 같은 클래스 에서만 접근이 가능한걸 ..
[java]오버라이딩
2022. 8. 3. 15:52
Developer/Java
여러분 전 내용에서 상속을 하면 부모 클래스의 메서드 즉 기능을 물려받아 사용할 수 있다고 했는데 만약에 부모 클래스에 구현된 메서드의 기능 그대로만 사용해야 한다면 아마 그냥 다시만드는게 낫겠다 라는 생각이 들 겁니다 그래서 나온 기능이 오버라이딩 입니다 전 내용을 살펴보자 Calculator 클래스를 상속받아 내가 사용하고자 하는 메서드를 추가했는데 이 행위는 상위 클래스에 새로운 기능 즉 메서드를 추가했던 거였는데 이미 있는 기능 sum 메서드를 사용해야 하는데 그 동작 방법을 약간 수정해야 한다 아 이러면 어쩌지 할 텐데 그때 사용하는 게 오버 라이딩입니다 class Calculator { int num1 = 0; int num2 = 0; public void setNum(int num1, int..