728x90
반응형

[java] 상속 (상위 클래스, 하위 클래스)

하위 클래스가 생성 되는 과정 하위 클래스를 생성하면 상위 클래스가 먼저 생성 됨new VIPCustomer()를 호출하면 Customer()가 먼저 호출 됨클래스가 상속 받은 경우 하위 클래스의 생성자에서는 반드시 상위 클래스의 생성자를 호출 함 super 키워드하위 클래스에서 가지는 상위 클래스에 대한 참조 값super()는 상위 클래스의 기본 생성자를 호출 함하위 클래스에서 명시적으로 상위 클래스의 생성자를 호출하지 않으면 super()가 호출 됨( 이때 반드시 상위 클래스의 기본 생성자가 존재 해야 함)상위 클래스의 기본 생성자가 없는 경우 ( 다른 생성자가 있는 경우 ) 하위 클래스에서는 생성자에서는 super를 이용하여 명시적으로 상위 클래스의 생성자를 호출 함super는 생성된 상위 클래스 ..

백엔드 2025.03.18 0

[java] for문 안에서 한번에 출력하기,이어붙이기 [StringBuilder, StringJoiner, String.join, stream API]

객체 리스트를 for문 돌릴때 결과값을 한번에 담아서 리턴하는 방법 4가지 public class Student { private static int baseId = 1000; private String name; private int id; ArrayList subjects = new ArrayList(); public Student(String name) { this.name = name; this.id = ++baseId; } public String getName(){ return name; } public String getSubjectName(){ 아래 4가지 방법중 선택 } ..

백엔드 2025.03.13 0

[java] 배열복사, 얕은복사, 깊은복사

배열원시데이터타입과 객체배열 사용법이다름객체배열인경우 전체 틀만 만들어지기때문에, 방마다 객체 생성해서 서랍처럼 일일이 넣어줘야함  객체 배열 복사 (얕은복사)System.arrayCopy(src, srcPos, dest, destPos, length) 자바에서 제공되는 배열 복사 메서드사용얕은 복사(주소만 복사) 즉, 두 배열이 같은 객체를 가리킴객체 주소만 복사되어 한쪽 배열의 요소를 수정하면 같이 수정 됨public class ObjectCopy { public static void main(String[] args) { Book[] library = new Book[5]; Book[] copyLibaray = new Book[5]; library[0] = new Book("태백산맥1", ..

백엔드 2025.03.03 0

[java] 배열 요소에 값이 있는 것만 추출하기

배열 선언 및 초기화 규칙int[] arr = new int[]{1,2,3,4,5}; // O 선언 및 명시적인 초기화int[] arr = new int[5]{1,2,3,4,5}; // X 오류!!!int[] arr = {1,2,3,4,5}; // O new int[] 생략, 컴파일러가 인식하고 자동으로 new int[]추가해줌int[] arr;arr = {1,2,3,4,5}; // X 오류!!! 선언후에 초기화시 반드시 new int[]추가해줘야함 컴파일러가 인식못함int[] arr;arr = new int[]{1,2,3,4,5}; // O 배열을 선언하면 개수만큼 메모리가 할당되지만, 실제 요소(데이타)가 없는 경우도 있음배열의 length 속성은 배열의 개수를 반환해주기 때문에 요소의 개수와는..

백엔드 2025.03.03 1

[패턴] 싱글톤 패턴 (Singleton pattern)

public class Company { private static Company instance = new Company(); // ① 클래스 로딩 시 객체 생성 private Company() {} // ② private 생성자 (외부에서 new 사용 불가) public static Company getInstance() { if( instance == null) { // ③ 항상 false이므로 실행될 일 없지만 방어적인 코드작성 instance = new Company(); } return instance; // ④ 항상 최초에 생성된 객체 반환 }} public class Company { private st..

백엔드 2025.03.03 0

[java] 변수의 유효 범위와 메모리

변수의 유효 범위와 메모리변수의 유효 범위(scope)와 생성과 소멸(life cycle)은 각 변수의 종류마다 다름지역변수, 멤버 변수, 클래스 변수는 유효범위와 life cycle, 사용하는 메모리도 다름 static 변수는 프로그램이 메모리에 있는 동안 계속 그 영역을 차지하므로 너무 큰 메모리를 할당하는 것은 좋지 않음 (큰배열같은건  절대X)클래스 내부의 여러 메서드에서 사용하는 변수는 멤버 변수로 선언하는 것이 좋음멤버 변수가 너무 많으면 인스턴스 생성 시 쓸데없는 메모리가 할당됨상황에 적절하게 변수를 사용해야 함 Java 메모리 구조 (낮은 주소 → 높은 주소) ┌────────────────────────── 높은 주소 (High Address) │  📌 커널(Kernel) 영역  (운영..

백엔드 2025.03.02 1

[JSP] 스크립트릿(<% %>) 과 선언(<%! %>) 차이

스크립트릿() 스크립트릿()으로 선언한 변수는 해당 블록 내에서만 유효 이 경우, 두 번째 스크립트릿 블록에서 name 변수를 사용하려고 하면 에러가 발생함변수는 첫 번째 스크립트릿 블록 내에서만 유효하기 때문임  메서드를 한번만 호출할거면 상관없음, But 여러번 호출할경우 스크립트릿으로 작성하면 첫번째 호출만 유효하고, 두번째호출부터는 오류가 발생하기때문에 선언 으로 메서드를 선언해주는게 좋음      선언() 반면에, 선언()을 사용하면 클래스의 멤버 변수로 선언되어 여러 메서드에서 접근가능이름: name 변수는 클래스 멤버로 선언되어 있기 때문에 여러 메서드에서 접근할 수 있다. 따라서 같은 JSP 페이지 내에서 어떤 블록에서도 name 변수를 사용할 수 있다 이름:

백엔드 2024.10.16 0

[java] this, heap, stack메모리

this가 하는 일인스턴스 자신의 메모리를 가리킴생성자에서 또 다른 생성자를 호출 할때 사용자신의 주소(참조값)을 반환 함 생성된 인스턴스 메모리의 주소를 가짐- 클래스 내에서 참조변수가 가지는 주소 값과 동일 한 주소 값을 가지는 키워드public void setYear(int year){ this.year = year;} - 객체생성시 힙메모리에 인스턴스가 생성됨- 함수나 메서드의 지역변수는 스택메모리에 잡힘  생성자에서 다른 생성자를 호출 하는 this - 클래스에 생성자가 여러 개 인경우, this를 이용하여 생성자에서 다른 생성자를 호출할 수 있음- 생성자에서 다른 생성자를 호출하는 경우, 인스턴스의 생성이 완전하지 않은 상태이므로 this() statement 이전에 다른 statemen..

백엔드 2024.08.03 0

[Oracle, Mysql] 오라클(Oracle), Mysql Auto Commit 오토커밋설정

오라클  1. SQL 상단메뉴에서 도구 - 환경설정창에서 데이터베이스 메뉴 옆의 '+' 버튼누르기2. '+'해서 나온 메뉴중 객체 뷰어를 더블클릭3. 데이터 편집기 옵션 - 커밋 옵션 부분의 자동 커밋 설정 체크박스를 해제하면 자동커밋 해제가능함   auto commit을 켤 경우는set autocommit on; auto commit을 끌 경우는set autocommit off; auto commit 상태확인show autocommit;    MySQL  항상 오토커밋끄기설정언제나 AutoCommit이 해제되어 시작되도록 설정할 수 있MySQL Workbench 상단 메뉴의 Edit - Preferences - SQL Editor 내의 SQL Execution - General 칸의 New connec..

SQL 2024.03.18 1
728x90
반응형