Stack LIFO(Last In First Out) 후입선출 구조 ex) jvm call stack, browser 뒤로가기/앞으로가기 Queue FIFO(First In First Out) 선입선출 ex) 대기리스트 관리 Set Collection 내부에 set. set내부에 HashSet이 존재. 중복 요소를 추가하지 않는다. Set setName = new Set(); 일 때 *Set은 인덱스 관련 메소드가 없다. 요소 개수 : setName.size() 요소의 포함 여부 : setName.contains("abc") //abc가 setName에 존재하는지 확인 요소 제거 : setName.remove("abc") //abc를 제거 요소 열람하기 - for문은 인덱스가 없어서 사용불가. - for..
오늘 배운 것은 드디어 리스트 ! 파이썬때는 리스트를 엄청많이 썼기때문에 왜 리스트같은게 자바에는 없을까? 라고 생각했는데 역시나 없을리가... 배열에비해 20000000배 편리한 리스트에 대해 알아본다. 배열의 문제점 - 배열은 크기 변경이 불가능 - 넉넉하게 크기를 할당하면 메모리낭비, 적게 할당하면 다시 할당해야하는 번거로움. - 중간요소 삭제시, 뒤 요소들을 하나씩 당겨서 빈 공간이 없도록 직접 배열을 수정하는 코드 작성해야 함. - 중간요소 추가시, 기존데이터를 하나씩 뒤로 밀어서 공간이 생기도록 수정하는 코드를 작성해야 함. * 참고로 ArrayList compared 정렬기준메소드를 오버라이드 intList = [5,3,2,4,1] 일 때, 오름차순(기본정렬) 과 내림차순(역순정렬)을 해보겠..
예외처리 Error / Exception 오류의 종류에는 다음과 같은 것이 있다. - 컴파일 에러 : 소스상의 문법 에러 - 런타임 에러 : 입력값이 틀렸거나, 배열의 입력 범위를 벗어났거나 계산식의 오류 등으로 인해 발생 - 논리 에러 : 문법상 문제가 없고, 런타임에러도 발생하지 않지만, 개발자 의도대로 작동하지 않는 에러 - 시스템 에러 : 컴퓨터 오작동으로 인한 에러 . => 소스 구문으로 해결 불가능 Error와 Exception에는 차이가있는데, 이를 알아보자 Error - 프로그램 진행시 치명적 상황이 발생한 것. 소스상 해결 불가. ex) OutOfMemoryError, StackOverflowError 등 1. OutOfMemoryError - jvm이 할당한 heap영역을 모두 소진한 ..
API란, Application Programming Interface를 의미한다. String & StringBuilder String : 불변성. immutable 한 특성. -,+ 연산시 해당 리터럴을 변경하는 것이 아닌 새로운 리터럴 생성 StringBuilder : mutable 한 특성. 멀티쓰레드 동기화 미지원. 속도 빠름 StringBuffer : mutable 한 특성. 멀티쓰레드 동기화 지원. 속도 느림 이 개념은 실제로 저번 테스트에서 나왔었다. String s1="java"; String s2="java"; String s3=new String("java"); String s4=new String("java"); System.out.println(s1==s2);//true Syste..
Ctrl + F11 컴파일 + 디버그. 코드가 제대로 돌아가는지 확인 Ctrl+W / Ctrl+Shift+W 창닫기 / 열린 창 전부 닫기 Ctrl + / 그 줄 주석처리 Ctrl + 메소드 클릭 메소드 코드로 이동 Ctrl + Shift + O 자동 import Ctrl + Alt + ↑↓ 선택한 줄을 화살표 방향으로 복사 Alt + ↑↓ 해당 줄을 그대로 옮김 Ctrl + D 해당 줄 삭제 home / end 블럭단위의 처음 / 끝 으로 이동 Shift + home / end 그 줄 처음부터 커서까지 / 커서부터 그 줄 끝까지 Ctrl + Space 자동완성 Alt+ Shift + Y 페이지 자동 줄맞춤 형식으로 변환 / 아닌것으로 변환 Alt + Shift + R 클래스나 메소드 이름 바꿀때 사용 ..
추상클래스 메소드 오버라이드 강제화 public void test6() { Animal[] animals = new Animal[5]; for(int i=0;i 자식클래스를 객체화해서 사용 차이점 추상클래스는 일반클래스 성격을 가지고 있다. field와 method를 가지고, 자식클래스에 물려줄 수 있다. 인터페이스는 일반 field와 method를 가질 수 없다. Java 1.8부터 default/static 메소드를 사용할 수는 있다. 특징 [추상클래스] - 0개이상의 추상메소드를 가질 수 있다. (추상메소드가 0개인 경우 객체화를 막기위한 목적이라고 보면 됨) - 자식클래스는 반드시 부모의 추상메소드를 구현해야 한다. [추상메소드] - abstract 키워드 - 몸통부가 없음. 몸통부는 자식클래스에..
==와 equals 의 차이 == ) 동일성 비교 (identity) : 같은 주소값을 가진 객체인가 비교. (주소값 비교) equals ) 동등성 비교(equality) : 같은 내용을 가진 객체인가. (내용 비교) equals & hashCode 현재객체.equals(다른객체) - 현재객체.필드명 이 다른객체.필드명 과 같은지 (다르면 return false) equals를 제대로 사용하기 위해서는 Override가 필요하고, Override를 안했을 경우 obj의 equals를 쓰기 때문에 false가 나온다. equals의 비교결과가 true라면, hashCode 값도 같아야 한다. 이 역시 오버라이딩이 필요하다. 특정 필드값(동등성 비교에 사용)기준으로 hashCode를 재생성한다. 보통 equ..
지난 수업에서 VO class 를 배웠다. 오늘은 이를 응용하고 더 확장해보는 수업이었다. VO class - 다른말로는 DTO (Data Transfer Object) , DO(Domain Object), Entity, bean 이라고도 한다. vo class 작성방법 1. private field 2. public getter/setter (위치 생성자 아래도 가능) 3. 기본 / 모든 파라미터 생성자 4. 필드정보 확인용 메소드 보통 getter/setter를 제외하고는 순서도 이 순서대로 쓴다. 다음과 같은 구조에서, 먼저 Person.java 클래스를 작성해본다. public class Person { //field private String name; private int age; ..
Static / non-static 메소드 1. nonstatic 메소드 (멤버 / 인스턴스 메소드) - 객체를 생성 후 호출해야 한다. - 멤버변수 , 클래스변수 모두 접근할 수 있다. 2. static 메소드 (클래스 메소드 ) - 객체 생성 없이, 클래스명으로 직접 호출하는 메소드 - 클래스 변수에만 접근할 수 있다. int a=100; static int s=99; public static void main(String[] args) { MethodStudy study = new MethodStudy(); study.test1(); MethodStudy.test2(); } /** * 멤버메소드 */ public void test1() { System.out.println(a); System..
13일차 수업에 이어서 UML 다이어그램을 진행한다. 이를 보고 클래스 작성하기를 과제로 주셨다. Member class package net.kh.member.model; public class Member { private String memberId; private String memberPwd; private String memberName; private int age; private char gender; private String phone; private String email; public Member() { } //getter + setter public String getMemberId() { return memberId; } public void setMemberId(String..