본문 바로가기

JAVA

(72)
JAVA(2022.05.17)-StringBuffer String > 객체가 한번 생성되면 할당된 공간이 변하지 않는다. 문자열을 더할때 +나 concat은 사실 그 객체에 문자열이 추가되는 것이 아니라(immutable) 새로운 객체를 생성해 그 객체를 참고하는 것이다. 연산이 많아지게 되면 Heap메모리에 과부화가 와서 속도가 느려질 수도 있다. StringBuffer > String 자료형보다 무겁고 메모리 사용량도 많으며 느리다. 그러나 문자열이 길거나 변경 작업이 많을 때는 StringBuffer을 사용한다 코드예시 StringBuffer에서 자신의 메소드를 호출하여 자신의 값을 바꿔나가는 것을 메소드체이닝이라고 한다 *본 게시물은 프로그래머스강의를 복습하며 작성한 글입니다.
JAVA(2022.05.16)-java.lang패키지/오토박싱 - 기본적으로 지원하는 다양한 패키지들 중 가장 중요한 패키지이다 - 모든 클래스의 최상위 클래스인 Object도 java.lang패키지이다 - System,math,thread,Wrapper클래스 등 다양한 클래스들도 모두 java.lang패키지이다 코드예시 int i = 5; > 기본형 타입을 생성 Integer i2 = new Integer(5); > 객체타입의 값을 생성 오토박싱과 오토언박싱을 통해 객체타입의 값과 기본형 int가 자동을 변환되어 값을 할당할 수 있다 Integer 타입인 경우에는 필드와 method를 사용할 수 있다. 그러나 기본형 int인 경우 필드와 method 사용이 불가능하다 예시) *본 게시물은 프로그래머스강의를 복습하며 작성한 글입니다.
JAVA(2022.05.15)-Object와 오버라이딩 Object - 모든 클래스의 최상위 클래스 - 아무 것도 상속받지 않으면 자동으로 Object를 상속 - Object의 메소드는 모든 클래스에서 사용이 가능하다 종류 - equals(값 비교), toString(객체가 가진 값을 문자열로 반환), hashCode(해시코드를 구할 때) 등 코드예시 ex) 위 결과 값은 s1 != s2가 될 것이다. 비록 두 객체에 같은 값이 할당되어있긴 했어도 s1.equals(s2)라는 코드는 두 객체 자체를 비교하기 때문이다. 우리가 의도하는대로 결과를 도출해내기 위해선 오버라이딩을 하면 된다 결과 값 s1 == s2 *본 게시물은 프로그래머스강의를 복습하며 작성한 글입니다.
JAVA(2022.05.14)- 사용자 정의 Exception 사용자 정의 Exception - API가 제공하는 예외만으로는 모든 예외를 표현할 수 없기에 직접 정의하여 사용한다 - throw new 사용자정의예외() 코드를 통해 예외를 생성한다 코드예시) output 비지니스 로직이 시작합니다. 비지니스 로직이 종료됩니다. 비지니스 로직이 시작합니다. javaStudy.BizException: 매개변수 i는 0이상이어야 합니다. at javaStudy.BizService.bizMethod(BizService.java:7) at javaStudy.BizExam.main(BizExam.java:9) *본 게시물은 프로그래머스강의를 복습하며 작성한 글입니다.
JAVA(2022.05.14)-Exception발생시키기 throws는 이 메서드에서 예외처리를 하지 않고 호출하는 메서드에서 처리하라고 던지는 로직 throw는 강제로 예외를 발생시키는 로직 public class ExceptionExam3 { public static void main(String[] args) { int i = 10; int j = 0; try{ int k = divide(i, j); System.out.println(k); }catch(IllegalArgumentException e){ System.out.println("0으로 나누면 안됩니다."); } } public static int divide(int i, int j) throws IllegalArgumentException{ if(j == 0){ throw new Illegal..
JAVA(2022.05.13)-Throws Throws - throws도 예외처리를 하는 방법 중 하나이다 - 예외 발생 시, 예외를 호출한 쪽에서 처리하도록 던져준다 - 메소드에서 정의한다 - 여러 개의 오류를 넘겨줄 수 있다(Exception으로 모든 종류의 오류 넘길 수 있다는 것은 항상 알아두기) ex) package javaStudy; public class ExceptionExam2 { public static void main(String[] args) { int i = 10; int j = 0; try{ int k = divide(i, j); System.out.println(k); } catch(ArithmeticException e){ System.out.println(e.toString()); //예외클래스를 Exception..
JAVA(2022.05.12)-익명 클래스,Exception 익명 클래스 - 익명 중첩 클래스는 익명 클래스임과 동시에 내부 클래스이다. - 일시적으로 한번 사용되며 재사용이 불가능하다 why? - 부모 클래스를 상속받는 자식 클래스를 사용하지 않고도 객체를 생성하여 부모 클래스를 implement 할 수 있다. ex) public abstract class Action{ public abstract void exec(); } //추상클래스 Action을 상속받은 클래스 MyAction public class MyAction extends Action{ public void exec(){ System.out.println("exec"); } } //MyAction을 사용하는 클래스 ActionExam public class ActionExam{ public sta..
JAVA(2022.05.11)-내부 클래스 내부클래스 why? -외부클래스에 쉽게 접근할 수 있다. -코드가 더욱 간단해진다. -서로 관련 있는 클래스를 논리적으로 묶어서 코드의 캡슐화를 증가시킨다. 1.중첩클래스(인스턴스 클래스) - 외부클래스의 멤버변수 선언위치에 선언한다. - 외부클래스의 인스턴스 멤버들과 사용할 목적으로 선언 ex) public class InnerExam1{ class Cal{ int value = 0; public void plus(){ value++; } } public static void main(String args[]){ InnerExam1 t = new InnerExam1(); InnerExam1.Cal cal = t.new Cal(); cal.plus(); //생성된내부클래스 객체에서 레퍼런스를 통해 내부클..