본문 바로가기

✨ Java/etc23

자바(JAVA) - 2Tier , 3Tier JDBC는 2계층(2Tier)과 3계층(3Tier)를 모두 지원한다. 2Tier (2계층) : 클라이언트가 직접 DB 서버에 접근해 데이터를 가져오는 것이다. 장점 개발이 편리하다. 개발 비용이 저렴하다. 유지보수가 쉽다. 단점 모든 비지니스 로직을 클라이언트에서 처리 (속도 저하) 비지니스 로직 변경시 클라이언트로 프로그램을 다시 배포 (업데이트 문제) -> 재사용 어려움 클라이언트에서 DB를 처리하기 때문에 보안 취약 서버에 부하가 많이 일어남 3Tier (3계층) : 클라이언트가 웹 애플리케이션 서버 (WEB Server -> WAS)를 경유해 DB에 접근하고 직접 데이터 관리 역할을 서버가 하지 않으며 DB서버를 별도로 구성한다. 장점 보안에 용이하다. 비지니스 로직을 모듈화시켜 재사용할 수 있다.. 2023. 7. 10.
자바(JAVA) - 자료의 형 변환(자료형) 업캐스팅, 다운캐스팅 형 변환 ( Type Casting ) 이란? 변수의 타입을 다른 타입으로 변환하는 것이다. ex) char int 기본자료형은 기본자료형끼리, 참조 자료형은 참조 자료형끼리 형 변환이 가능하다. boolean은 다른 기본 타입과 호환되지 않는다. 기본타입과 참조형의 형 변환을 위해 Wrapper 클래스를 사용할 수 있다. 프로모션(promotion) - 더 큰 자료형으로의 자동 변환 / 정보의 손실이 없다. 자동형변환(묵시적) 이것을 업 캐스팅(UpCasting)이라고 부른다. 자동형변환(묵시적)은 자료의 손실 걱정이 없어 JVM이 서비스 해준다. 디모션(demotion) - 더 작은 자료형으로의 변환(명시) / 정보의 손실이 발생할 가능성이 있다. 강제형변환(명시적) 이것을 다운 캐스팅(DownCas.. 2023. 7. 9.
자바(JAVA) - IS-A관계와 HAS-A 관계 객체 지향의 장점은 코드의 재사용이다. 상속의 구현 (IS-A) 또는 객체의 구성 (HAS-A)를 통해 코드 재사용을 수행할 수 있는 두가지 방법이 있다. IS-A 관계 : 일반화 관계(Generalizaion) => 상속 관계 ~은 ~다. 상속은 is-a 관계에서 사용하는 것이 효율적이다. 상속을 코드 재사용의 개념으로 이해하면 안된다. 상속을 사용하면 클래스간 결합도가 높아져 상위 클래스를 수정해야할 때 하위 클래스에 미치는 영향이 크다. 즉, 의미상 상하 관계가 분명한 객체를 연결하기 위한 수단으로 사용해야한다. 클래스 선언에서 extends 또는 implements 키워드가 있으면 이 클래스는 IS-A 관계가 있다고 한다. 예) 집은 건물이다. 그러나 건물은 집이 아니다. HAS-A관계 : 연관관.. 2023. 7. 7.
자바(JAVA) - 달력 만들기 보호되어 있는 글 입니다. 2023. 7. 7.
자바(JAVA) - 가변인자 (variable arguments) 란 무엇인가? 가변인자란? ... 이 삽입된 메소드의 매개변수 선언을 '가변 인자 선언' 이라고 한다. HTML 삽입 미리보기할 수 없는 소스 위 코드를 보면, Te 클래스 안에 vararg 메소드가 만들어져있고, 매개변수로 ... x 와 같은 방식이 있다. 이를 가변인자라고 부른다. 원래라면 main 메소드에 vararg에 변수 1,2,3,4,5,6을 던져준 것처럼 vararg에는 int x, int y, int z, int k, int j, int o.... 등 이렇게 매개변수를 6개 정의해줘야한다. 이처럼 가변인자를 선언해서 사용하게 되면 전달되는 인자의 수에 제한을 두지 않고 동적으로 사용가능하다. 가변인자를 왜써? 가변인자(...)은 호출 코드의 가독성과 사용편의성을 높일 수 있다. 단, - 가변인자를 사용할.. 2023. 7. 7.
자바(JAVA) - static(클래스)변수와 instance변수, local(지역)변수 HTML 삽입 미리보기할 수 없는 소스 클래스에 선언된 변수는 모두 멤버 변수라고 부른다. 즉, int x와 static int y는 멤버변수라고 할 수 있다. 멤버 변수 중 static이 붙은 것은 클래스 변수, 붙지 않은 변수는 인스턴스 변수이다. 📌 static(클래스)변수 인스턴스 변수 앞에 static만 붙이면 된다. 인스턴스마다 독립적인 저장공간을 갖는 인스턴스 변수와 달리, 클래스 변수는 모든 인스턴스가 공통된 변수(공간)을 공유한다. 한 클래스의 모든 인스턴스들이 공통적인 값을 유지해야 하는 속성일 경우, static변수로 선언한다. new를 하지않아도 자동으로 생성된다. 즉, 클래스에 고정된 멤버로, 객체 없이도 사용할 수 있다. ObjectEx4 클래스 HTML 삽입 미리보기할 수 없는.. 2023. 7. 6.
자바(JAVA) - 자료형 변환 (byte, int, long, char, boolean) 연산 HTML 삽입 미리보기할 수 없는 소스 byte (1byte) < short (2byte) < int (4byte) < long (8byte) < float (4byte) < double (8byte) 1. byte 형변환 byte의 크기(Byte.MAX_VALUE)는 127까지이다. 따라서 byteValue1과 byteValue2를 더했을때 128 이상이 되면 쓰레기 값으로 0이 나오게 된다. 연산을 할때도 ( ) 안에 넣어서 연산을 하게 되면 자료형이 맞지 않으므로, 형변환을 해서 연산해주어야한다. 2. 자료형 Int와 Long int는 4바이트, long은 8바이트 이므로, intValue2에서 연산을 할 때 1l 을 써준다면, 연산은 크기가 큰 long의 형태로 하기 때문에 int의 크기를 벗어나.. 2023. 7. 6.
자바(JAVA) - 제네릭(Generic) 제네릭이란? - 클래스 내부에서 사용할 데이터 타입을 외부에서 지정하는 기법을 의미한다. 그렇다면 왜 제네릭을 사용하는 것일까? HTML 삽입 미리보기할 수 없는 소스 위 코드를 줄여 하나의 클래스로 만들어보았다. 하지만, 이렇게 하면 BookTest의 Object 타입 때문에 t1에 들어가는 타입은 Object이다. 그러나, EnglishBook과 MathBook에는 Integer 타입으로 가격을 넣어주어야한다. 어떻게 할 수 있을까? 이런식으로 클래스를 줄이고, 제네릭을 사용하여 T 자리에 클래스를 넣어 코드를 줄여볼 수 있었다. 제네릭 메소드 접근제한자와 리턴값 사이에 꺾새를 주고, 매개변수의 타입을 U로 설정하면 제네릭 메소드가 완성된다. 2023. 7. 6.
자바(JAVA) - 자바의 특징 JAVA(객체지향)는 class 기반으로 이루어진다. class 안에는 속성, 기능(메소드)이 있다. 자바의 특징 🚩객체지향(OOP, Object Oriented Programming language) 상속, 캡슐화(은닉), 다형성, 추상화가 적용된 객체지향 언어. 위 4가지 특징을 활용해 코드의 재사용성을 증가하고, 유지보수를 용이하게 만들 수 있다. OOP : 객체들을 하나씩 조립해서 완성된 프로그램을 만드는 기법 1) 상속 (Inheritance) : 부모 클래스의 변수와 메서드를 자식 클래스가 전부 물려받는 것. 2) 캡슐화 (Encapsulation, Information Hiding) : 객체의 변수 및 메서드를 외부 객체가 함부로 건드리지 못하게 감쌈. 클래스의 getter / setter .. 2023. 7. 6.
자바(JAVA) - 상수(final)의 의미 final 이란? - 무언가를 제한한다는 의미를 가지는 것으로, 변수(variable), 메서드(method), 클래스(class)에 사용가능하다. 이 final 키워드는 어떤 곳에 사용되냐에 따라 다른 의미를 가진다. 메소드를 선언할 때 final 키워드를 붙이면 이 메소드는 최종적인 메소드이므로 오버라이딩할 수 없다. 즉, 부모 클래스를 상속해서 자식 클래스를 선언할 때, 부모 클래스에 선언된 final 메소드는 자식 클래스에서 재정의 불가. 변수(variable) - 변수에 final을 붙이면 이 변수는 수정할 수 없다는 의미이다. 따라서 초기화 값을 필수적으로 기입해야한다. 만약 객체 안의 변수라면 생성자, static 블럭을 통해 초기화까지는 가능하다. 단, 수정할 수 없다는 의미의 범위는 변수.. 2023. 7. 5.
자바(JAVA) - Static의 의미 정적(Static)이란 - 고정된 의미를 갖고 있다. Static이란 키워드를 사용해 Static 변수, Static 메소드를 만들 수 있다. 이를 정적 필드와 정적 메소드라고 하며 이 둘을 합쳐 정적 멤버(클래스 멤버)라고 부른다. 정적 필드와 정적 메소드는 객체에 소속된 멤버가 아니라 클래스에 고정된 멤버이다. 클래스 로더가 클래스를 로딩해서 메소드 메모리 영역에 적재할 때 클래스별로 관리된다. 그렇기 때문에 클래스의 로딩이 끝나는 즉시 바로 사용가능하다. 즉, Java에서 Static 키워드를 사용한다는 것은 메모리에 한번 할당되어 프로그램이 종료될 때 해제되는 것을 의미한다. 일반적으로 우리가 만든 Class는 Static 영역에 생성되고, new 연산을 통해 생성한 객체는 Heap영역에 생성된다.. 2023. 7. 5.