본문 바로가기

Study for Backend/Programming language - Java

(33)
[Java기초] 내부 클래스 내부 클래스 - 클래스나 인터페이스 내에서 선언된 클래스로서 내부클래스에서 외부클래스 멤버에 접근 가능 - 외부에서는 내부 클래스에 접근 불가하다. - 외부에 불필요한 클래스를 감추어서 코드의 복잡성을 줄일 수 있다. (캡슐화) 1. 멤버 이너 클래스 (member inner class) 클래스 내부에서 멤버 변수처럼 선언된 이너 클래스다. 인스턴스 멤버 클래스와 정적 멤버 클래스가 존재한다. ( 이너 클래스에서 필드나 메서드의 이름이 동일한 아우터 클래스 멤버를 참조하고 싶으면 "아우터 클래스명.this.멤버"처럼 사용할 수 있다. ) 2. 정적 이너 클래스 (static inner class) 정적 메서드와 동일하게 아우터 클래스의 정적 멤버에만 접근할 수 있다. 정적 이너 클래스도 정적 멤버이므로 ..
[Java기초] 인터페이스 인터페이스 다중 상속처럼 사용할 수 있는 기능 추상 메소드와 상수만으로 이루어짐 // Java 프로그래밍 - 인터페이스 // School 인터페이스 interface School { public static final int MAX_CLASS = 20; public static final int MAX_PERSON_PER_CLASS = 40; public abstract void printSchool(); } // Student 클래스 - School 인터페이스 이용 class Student implements School { public void printSchool() { System.out.println("00 University"); } } // Person 클래스 class Person { pu..
[Java기초] Random 클래스 관련 Java.util.Random() - Random 클래스는 난수를 생성하는 클래스로 객체를 생성하여 사용한다. - 매번 다른 시드 값을 사용하여 의사 난수를 생성. - 메서드를 호출할 때 인자로 최대값을 전달하면 0부터 최대값 -1까지의 범위 내에서 난수를 생성. - 난수 생성 알고리즘은 선형 합동 생성기(Linear Congruential Generator, LCG). Math.random과 Random의 차이점 - Random 클래스는 객체를 생성 하고 난수를 발생 계산하는 방식이지만 Math.random()은 Math클래스의 static 메소드여서 객체의 생성없이 바로 호출할 수 있다. - Random클래스는 정수,실수 타입의 난수를 생성 할 수 있다.(int,long,float,double) Ma..
[Java기초] StringBuilder와 StringBuffer StringBuilder - Java에서 StringBuilder는 가변(mutable)한 문자열을 처리하기 위한 클래스. - StringBuffer와 마찬가지로 새로운 문자열을 추가하거나 변경하게 되면 “기존의 객체”로 추가 및 변경이 된다. - StringBuffer와 다르게 멀티쓰레드 환경에서 안정적이지 않으며, StringBuilder는 싱글쓰레드 환경에서 StringBuffer보다 더 빠른 성능을 가진다. StringBuffer - Java에서 StringBuffer는 가변(mutable)한 문자열을 처리하기 위한 클래스. 즉, 새로운 문자열을 추가하거나 변경하게 되면 “기존의 객체”로 추가 및 변경이 된다. String, StringBuffer, StringBuilder 차이점 link htt..
[Java기초] 다형성 한 객체가 여러가지 타입을 가질 수 있는 것 부모클래스 타입의 참조 변수로 자식클래스 인스턴스 참조 instanceof 실제 참조하고 있는 인스턴스의 타입확인 // Java 프로그래밍 - 다형성 class Person { public void print() { System.out.println("Person.print"); } } class Student extends Person { public void print() { System.out.println("Student.print"); } public void print2() { System.out.println("Student.print2"); } } class CollegeStudent extends Person { public void print..
[Java기초] 상속 기존 클래스에 기능을 추가하고 재정의하여 새로운 클래스를 정의 다중상속은 불가능 private, default 멤버는 자식클래스에서 접근 불가 super 부모클래스와 자식클래스의 멤버이름이 같을 때 구분하는 키워드 오버라이딩 부모클래스의 메소드를 자식 클래스에서 재정의하는 것(메소드의 선언부는 부모클래스의 메소드와 동일해야 함) -반환 타입에 한해, 부모클래스의 반환타입으로 변환할 수 있는 타입으로 변경가능 -부모클래스의 메소드보다 접근제어자를 더 좁은 범위로 변경불가 -부모클래스의 메소드보다 더 큰 범위의 예외 선언불가 // Java 프로그래밍 - 상속 class Person { String name; int age; public int a1; private int a2; Person() {} Pers..
[Java기초] Class와 객체2 1. 오버라이딩(overriding) - 오버라이딩이란 상속받은 메소드를 자식 클래스에서 재정의하여 사용하는 것이다. - 자식 클래스에서 부모의 메소드를 수정해야 할 때 사용된다. 일반 클래스의 상속 관계에서는 많이 사용되지는 않고 추상 클래스나 인터페이스에서 필수적으로 사용되는 개념이다. - 자식 클래스에서 부모 클래스의 메소드와 동일한 시그니쳐(메소드 이름, 리턴 타입, 매개변수의 개수/ 자료형/순서)를 적용하여야 한다. - 오버라이딩 결과 부모 메소드는 은닉되고 자식 클래스에서 재정의된 메소드만 기본적으로 호출된다. 필요시 super. 으로 부모 메소드를 호출할 수 있다. 참고 링크 https://blog.naver.com/heartflow89/220961515893 https://yeomboyeo..
[Java기초] Class와 객체1 1. 클래스 객체를 정의해 놓은 것 객체의 설계도 또는 틀 객체를 생성하는데 사용됨 2. 객체 실제로 존재하는 것. 사물 또는 개념 객체의 용도는 객체가 가지고 있는 기능과 속성에 따라 다름 클래스에 정의된 내용대로 메모리에 생성된 것 3. 객체 만드는 방법 인스턴스화클래스로부터 객체를 만드는 과정 어떤 클래스로부터 만들어진 객체를 그 클래스의 인스턴스라고 한다. 객체 : 모든 인스턴스를 대표하는 포괄적인 의미 인스턴스 : 어떤 클래스로부터 만들어진 것인지를 강조하는 보다 구체적인 의미 객체의 구성 요소 속성(property) 멤버변수(member variable), 특성(attribute), 필드(field), 상태(state) 기능(function ) 메서드(method), 함수(function), ..
[Java기초] 조건문과 반복문 및 배열 //20240203 // 1. 조건문 - if System.out.println("== if =="); int waterTempeerature = 99; if(waterTempeerature >= 100){ System.out.println( "물이 끓습니다."); }else{ System.out.println( "물을 끓이는 중입니다."); } System.out.println(); int score = 90; char grade = 0; if(score >= 90){ grade = 'A'; }else if(score >= 80){ grade = 'B'; }else if(score >= 70){ grade = 'C'; }else { grade = 'F'; } System.out.println( "gra..
[Java기초] 여러가지 연산자 //20240203 // 1. 대입 연산, 부호 연산자 int num = 100; num =+10; num = 10; num = -10; // 2. 산술 연산자, 증가/감소 연산자 System.out.println("== 산술 연산자, 증가/감소 연산자 =="); int numX = 10; int numY = 3; int result = 0; result = numX + numY; result = numX - numY; result = numX * numY; result = numX / numY; result = numX % numY; System.out.println("result = " + result); int numZ = 1; System.out.println("numZ++ = " + numZ++..