본문 바로가기

전체 글388

자바(JAVA) - String, StringBuffer, StringBuilder 각 성능차이 String 불변(immutable) 문자열을 조작하는 경우 유용하게 사용가능하다. 한번 생성되면 할당된 메모리 공간이 변하지 않는다. 문자열을 연결, 추가, 수정, 삭제 등을 하면 새로운 String 객체 생성 -> 메모리 낭비 스레드 안전함. 동기화 처리되어 있어 멀티스레드 환경에서도 안전하게 사용가능. (즉 , + 연산자 , concat 메서드를 통해 본래 문자열에 다른 문자열을 붙여도 기존 문자열에 새로운 문자열을 붙이는 것이 아니라, 새로운 String 객체를 만든 후, 새 String 객체에 연결된 문자열을 저장하고, 그 객체를 참조하도록 한다. ) 위 코드는 String 문자열을 이용하여 문자열을 추가해주었다. 이는 문자열이 변경되는 것처럼 보일 수 있으나, 또 다른 String 객체를 생성.. 2023. 7. 24.
자바(JAVA) - 직렬화(Serialization) 직렬화란? 객체 인스턴스의 데이터를 I/O스트림에 적합한 일련의 데이터로 변환하는 과정이다. 객체 인스턴스는 메모리 주소 값을 저장하고 있기 때문에, 메모리 주소 값을 그대로 송신하면 수신받는 쪽에서 아무 쓸모 없는 데이터가 된다. 따라서 객체 인스턴스의 값 형태로 변환이 필요하다. MemberClass HTML 삽입 미리보기할 수 없는 소스 클래스 객체에 직렬화를 가능하게 하려면, Serializable 이라는 인터페이스를 구현해야한다. Main메서드 HTML 삽입 미리보기할 수 없는 소스 I/O Stream을 통해 직렬화 객체를 입출력해보았다. transient : 직렬화 대상 제외 MemberClass 만약, 직렬화하려는 클래스에서 제외하고 싶은 필드가 있다면, transient를 붙여 직렬화 대상.. 2023. 7. 24.
자바(JAVA) - ByteArrayInputStream과 ByteArrayOutputStream ByteArrayInputStream이란? 바이트 배열('byte[ ]')에 저장된 데이터를 읽기 위한 입력 스트림이다. 객체가 생성될 때, 읽어올 데이터를 가리키는 바이트 배열이 전달된다. ByteArrayOutputStream이란? 바이트배열('byte[ ]')에 데이터를 쓰기 위한 출력 스트림이다. 객체가 생성될 때, 쓰여진 데이터를 저장할 바이트 배열이 생성되며 데이터를 기록할 때마다 해당 바이트 배열에 데이터가 쌓인다. HTML 삽입 미리보기할 수 없는 소스 input.read( ) 메서드는 스트림으로부터 바이트 데이터를 읽어와서 정수 형태로 반환한다. 반환된 정수 값은 실제 읽어온 바이트 데이터에 해당하며, 0부터 255 사이의 값을 갖는다. 읽을 데이터가 없을 경우 '-1'을 반환한다. ou.. 2023. 7. 24.
(Spring, java, DB) - 학사행정웹서비스 개발도구 : SpringBoot, java, OracleDB, HTML, CSS, JS https://github.com/ParkJooHong/SchoolManage/tree/dev GitHub - ParkJooHong/SchoolManage: 학사관리 학사관리. Contribute to ParkJooHong/SchoolManage development by creating an account on GitHub. github.com 2023. 7. 24.
자바(JAVA) - equals와 '==' 차이 프로젝트를 하다보면 비교를 통해 값을 정해줘야하는 순간이 매우 많다. 그럴때 ==을 써보기도하고, equals 메소드를 써보기도한다. 늘 애매했던 부분이라 확실하게 알고쓰지 못해 찝찝했다. == 연산자란? == 연산자는 기본적으로 두 객체의 참조(Reference)를 비교한다. 즉, 두 변수가 동일한 객체를 가리키고 있는지를 확인한다. 만약 두 변수가 동일한 객체를 가리키고 있다면, == 연산은 true를 반환한다. 하지만 두 변수가 서로 다른 객체를 가리키고 있더라도 객체의 내용이 동일하다면, == 연산은 false를 반환한다. equals() 메소드란? equals() 메서드는 객체의 내용(값)을 비교하기 위해 사용된다. equals() 메서드는 기본적으로 Object 클래스에 정의되어 있으며, 자식.. 2023. 7. 20.
자바(JAVA) - Iterator 개념과 사용방법 이터레이터(Interator)란? 컬렉션 프레임워크에서 List, Set, Map을 순서대로 반복해서 조회할 수 있도록 해주는 객체이다. 위와 같이 프레임워크 ArrayList에 3개의 문자열을 넣고, foreach를 통해 출력해보았다. Iterator.hasNext() - Iterator 안에 다음 값이 들어있는지 확인한다. 들어있으면 true, 안들어있으면 false를 반환한다. Iterator.next() - Iterator의 다음 값 가져온다. Iterator.remove() - Iterator에서 next() 할 때 가져온 값을 컬렉션에서 삭제한다. *반드시 next() 이후에 사용해야한다. 2023. 7. 19.
자바(JAVA) - 컴파일 타임(Compile Time) VS 런타임(Runtime) 차이 컴파일 타임이란? 작성한 코드를 바탕으로 기계가 읽을 수 있는 형태로 변환되는 과정 컴파일 에러 - 컴퓨터가 명령어를 번역하는 도중 잘못된 코드를 발견해 알려주는 것. ex) 위와 같이 화면상에서 컴퓨터가 빨간 줄로 오류를 띄워준다. 런타임이란? 컴파일 후 프로그램이 동작되어지는 때 런타임 에러 - 현재 코드에서는 알 수 없지만 프로그램을 실행했을 때 오류가 발생. 이를 위해 try ~ catch 문을 활용하여 예외처리 해준다. 2023. 7. 19.
자바(JAVA) - this , this() , super , super() 각각 차이점 this - 현재 객체를 가리키는 참조 변수로, 해당 객체의 인스턴스 멤버(필드, 메서드)에 접근할 때 사용한다. 이렇게 자바에서는 this 참조 변수를 사용해 인스턴스 변수에 접근가능하다. this 참조 변수를 사용할 수 있는 영역은 인스턴스 메소드 뿐이고, 클래스 메소드에서는 사용할 수 없다. *static 영역에서도 사용 불가 모든 인스턴스 메소드에는 this 참조 변수가 숨겨진 지역 변수로 존재하고 있다. this() - 같은 클래스의 다른 생성자를 호출하는데 사용한다. 생성자 내부에서만 사용할 수 있으며, 생성자 내에서 다른 생성자를 호출할 때, this()를 사용해 해당 클래스의 다른 생성자를 명시적으로 호출할 수 있다. 이는 생성자 오버로딩 시 코드의 중복을 피하고 재사용성을 높이는데 도움된.. 2023. 7. 18.
자바(JAVA) - Exception 다양한 예외 종류 ArrayIndexOutOfBoundsException 초기에 정해진 배열의 크기보다 더 많은 양의 데이터를 넣고자 할 때 주로 발생하는 에러이다. m의 배열은 5까지인데, 마지막 i는 6번째의 배열에 값을 넣는것이므로, 오류가 나는 것이다. 초기에 정해진 배열의 크기보다 더 많은 양의 데이터를 넣을때 발생하는 에러가 ArrayIndexOutOfBounds에러이다. *finally는 에러가 발생하든 안하든 반드시 실행시킨다. ArithmeticException 0으로 나누는 등, 잘못된 산술 연산을 시도할 때 발생하는 에러이다. (0으로 나누는경우 정수 0으로 나누는 경우 등) 왼쪽 사진에 보면 data가 0인데, 0으로 나누려고해서 발생하는 오류이고, 오른쪽 사진 또한 (int)Math.random().. 2023. 7. 18.
자바(JAVA) - 추상(Abstract) 클래스 추상클래스란? - 객체를 생성할 수 있는 클래스를 실체 클래스라고 한다면, 이 클래스들의 공통적인 필드나 메소드를 추출해서 선언한 클래스를 추상 클래스라고한다. 따라서 객체를 생성할 수 없으며, 상속을 통해 자식클래스에 의해 완성할 수 있다. 추상 클래스는 실체 클래스의 부모역할. 즉, 실체 클래스는 추상 클래스를 상속해서 공통적인 필드, 메서드를 사용가능 extends 뒤에만 옴. 메소드는 선언부와 구현부로 구성되어 있다. 선언부는 작성하고, 구현부는 작성하지 않은 채로 남겨 둔 것이 추상메소드이다. 구현부는 실제로 상속받는 클래스에서 구현 할 수 있다. ex) 위와 같이 나는 추상 클래스 AnimalAdator를 상속받는 AnimalClass를 만들어주어 오버라이딩하여 실제 내용을 구현하였다. 2023. 7. 17.
자바(JAVA) - 다형성(Polymorhpism) -1 다형성이란? 하나의 객체가 여러가지 타입을 가질 수 있는 것을 의미한다. 자바에서는 이러한 다형성을 부모클래스 타입의 참조 변수로 자식 클래스 타입의 인스턴스를 참조할 수 있도록 구현한다. 다형성은 상속, 추상화와 더불어 객체 지향 프로그래밍을 구성하는 중요한 특징 중 하나이다. How 오버라이딩 오버로딩 형변환 오버라이딩(Overriding) - 주로 클래스나 인터페이스를 상속받아 부모 클래스에 있던 함수를 재정의해서 사용하는 것이다. 오버로딩(Overloding) - 같은 함수라도 인수만 다르면 얼마든지 정의하고 사용할 수 있다. 타입변환 - 부모 클래스 변수에 자식객체 타입을 대입하면, 자동으로 타입 변환이 일어나는 것이다. Animal Class HTML 삽입 미리보기할 수 없는 소스 Dog Cl.. 2023. 7. 17.
자바(JAVA) - Inner 클래스 ( LocalInner) 보호되어 있는 글 입니다. 2023. 7. 17.