본문 바로가기

Java

(21)
String(문자열)의 이해 String은 문자열이다. 문자열은 상수이다. String str = "홍길동"; // string constant pool영역에 저장 String str2 = "홍길동"; String str3 = new String("홍길동"); //새로운 객체 -> heap area에 저장 이중에서 맞는것은? 1. str == str2 2. str == str3 답은 1번이다. 왜냐하면 == 연산자는 주소를 비교하기 때문에 str과 str2는 같은 메모리영역에 있어서 같다고 나오고 new String으로 새로운 객체를 만든 str3는 heap 영역에 저장되기 때문에 다르다고 나온다. 따라서 문자열을 비교할때는 == 연산자보다는 .equals()를 써준다. 단, 문자열이 자주 바뀌는 곳에는 String을 사용하지 않는..
다형성(오버로딩,오버라이딩) 오버로딩 동일한 클래스 내부에서 같은이름 메서드(생성자)가 인자의 개수나 형을 달리하면서 여러번 정의된 경우 오버라이딩 상위 클래스가 가지고 있는 멤버변수가 하위 클래스로 상속되는 것처럼 상위 클래스가 가지고 있는 메소드도 하위 클래스로 상속되어 하위 클래스에서 사용할 수 있다. 하위 클래스에서 메소드를 재정의해서 사용할 수 있다.
싱글톤(singleton)이란? 싱글톤(순차적) 변수는 여러개인데 사용하는 메모리는 하나인 기법 생성자가 여러 차례 호출되더라도 실제로 생성되는 객체는 하나고 최초 생성 이후에 호출된 생성자는 최초에 생성한 객체를 반환한다. (자바에선 생성자를 private로 선언해서 생성 불가하게 하고 getInstance()로 받아쓰기도 함) => 싱글톤 패턴은 단 하나의 인스턴스를 생성해 사용하는 디자인 패턴이다. (인스턴스가 필요 할 때 똑같은 인스턴스를 만들어 내는 것이 아니라, 동일(기존) 인스턴스를 사용하게함) 고정된 메모리 영역을 얻으면서 한번의 new로 인스턴스를 사용하기 때문에 메모리 낭비를 방지할 수 있음
자바 메모리 운영, static변수 자바 메모리 운영 Method 메소드 소스 Area 상수 static 로딩 시 곧바로 메모리 할당 실행속도↑, 클래스.멤버 heap 객체 영역 new와 생성자를 통해서 할당. 가비지 컬렉션이 관리 -> 참조 되지 않을때 지속성 stack 메소드 실행영역 LIFO 후입선출 구조. 임시적,메모리 자동반환 지역변수 Hash : 빠르게 검색, 찾을 수 있는 자바에서 컴파일 -> 바이트 코드화 static 변수, 메서드 1. 객체생성 x, 사용한다. 2. 빠른 실행 요구 3. 클래스.멤버
생성자, this 그리고 call by value, reference 생성자 객체를 생성할 때 항상 실행되는 것으로, 객체를 초기화해주기 위해 맨 처음 실행되는 메소드이다. 생성자의 특징 1. 클래스 이름과 동일 2. 반환형이 존재하지 않음. 3. 인스턴스 생성시 딱 한번 호출된다. 4. 인스턴스 변수의 초기화가 목적이다. 매개변수의 수와 타입이 다르다면 여러개의 생성자를 선언할 수 있다 기본생성자: 내용이 없어도 가능하면 기술 => 없으면 디폴트 생성자를 컴파일러가 자동으로 생성 단, 인자가 있는 생성자가 존재하면 기본생성자는 자동으로 만들어지지 않는다. public class Hong{ int a = 0; //전역변수(인스턴스 변수) int b = 0; public Hong(){ //기본 생성자 } public Hong(int a, int b){ // 지역변수 this..
클래스 구조, 선언, 객체생성 클래스 객체 생성 클래스 객체변수 = new 생성자(초기화 변수) 저장 및 처리 클래스와 실행 클래스로 분리해서 사용하는것이 좋음. class Pay(){ //저장 및 처리 클래스 String anme; int bonbong; int tex; int silsu; public void setTex(){ tex=(int)(bonbong*0.045+0.5); } } public class payClac{ // 실행클래스 public static void main(String[] args){ Pay p1 = new Pay(); //클래스 객체변수 = new 생성자(초기화 변수) } }
배열이란? 배열: 동일 크기의 메모리 공간 반복(여러 개) int a[ ] 배열첨자 (선언) = new 메모리 할당연산자 (힙 영역) - 메모리 할당 int[3] 4 x 3 = 12byte 할당 배열은 인스턴스(객체)와 같은 영역을 할당 받기 때문에 과정이 같다. a[1] = 77; 초기화 특징 1. new 이용 2. 동일한 크기가 반복된다. 3. 한 가지 이름으로 여러 개의 메모리영역을 취급한다. 4. 변수 사용량을 줄일 수 있다. 5. 반복되는 연산작업에 적합 거의 반복문과 함께 사용됨 단점 1. 크기가 정적 그래서 잘못 선언하면 메모리를 낭비 할 수 있다. -> 동적개선: vector 배열을 복사할 경우 for문을 활용하는 것보다는 system.arraycopy()를 사용하는 것이 효율적이다. System.a..
제어문 및 반복문 제어문 조건식이 참이면 다음에 오는 명령 한개를 실행한다. If문 다중조건문 다중택일 if(조건식){ 실행문; }else if(조건식){ 실행문; } 다중택다 if(조건식){ 실행문; } if(조건식){ 실행문; } 범위 주의: 작은 -> 큰 범위로 기술 switch문 switch(비교값){ ==> 비교값과 case의 값이 일치해야한다. case 값1: 실행문; break; default: //위의 case에 없을 경우 실행 실행문; } switch문의 제약조건 1. 조건식 결과는 정수 또는 문자열이어야 한다. 2. case문의 값은 정수 상수만 가능하며, 중복되지 않아야 한다. 반복문 1. 초기값 2. 범위조건식 3. 증감식 while문 초기값은 반복문 전에 while(범위조건식){ 증감식 실행문; 반..
public static void main(string args) 의미 및 함수 메서드 차이점 자바는 애플리케이션이 실행되면 제일 먼저 main메소드를 실행합니다. 자바 class를 생성하면 public static void main(String[] args)을 생성할 수 있는데 이것을 해석하자면 public은 접근제어자 중 하나로 어디서든 해당 객체를 참조 할 수 있습니다. ※ 접근제어자란 멤버 또는 클래스에 대한 접근범위를 제한하는 역할을 합니다. static으로 함수 또는 클래스를 선언했을 경우에 해당 객체는 자바가 컴파일 되는 순간 정의가 됩니다. void는 어떤 값도 반환을 하지 않는다. main에서 String[] args라고 선언을 하는 이유는 프로그램의 실행 순간 외부값을 가져와서 프로그램 안에 사용하고자 할 때 메모리에 저장할 공간을 미리 선언해 두는 것이라고 할 수 있다. (단독..
형변환 및 전,후위 연산자 형변환(캐스팅) 형변환이란 변수 또는 상수의 타입을 다른 타입으로 변환하는 것입니다. 단, 데이터 손실이 발생하면 아무런 의미가 없어집니다. int = k; flaot f = 1.45; k = (int)f; // 작은타입 = 큰타입 이 예제가 작은타입 = 큰타입의 형변환 예시입니다. int는 float보다 작은타입이기 때문에 형변환을 해주면 소수점은 전부 버리고 1이라는 값만 저장됩니다. 따라서 큰타입에 작은타입을 형변환을 하는 것이 아니면 데이터가 손실 될 수 있기 때문에 주의해서 형변환을 해줘야합니다. 위의 그림의 화살표 방향으로는 자동형변환이 되지만, 반대의 경우는 형변환 연산자를 사용해줘야합니다. 전,후위 연산자 전위연산자(prefix) 전위 증감 연산자는 변수 자체의 값을 1 증가/감소해서 반환..