JAVA 38

[자바] 업캐스팅, 다운캐스팅 / instanceof 연산자

캐스팅 : 업캐스팅, 다운캐스팅 일단 캐스팅은 타입을 변환하는 것이며 형변환이라고도 한다. 상속관계에 있는 부모, 자식 클래스 간에 형변환이 가능하다. * 업캐스팅 (자동 타입 변환) ->자식 클래스 객체를 부모 클래스 타입으로 변환하는 것. (부모 = 자식;) public class Person { ... } public class Student extends Person { ... } public static void main(String[] args) { Student s = new Student(); Person p = s; //업캐스팅 } * 다운캐스팅 (강제 타입 변환) -> 부모 클래스의 객체를 자식 클래스의 타입으로 변환하는 것. ( 자식 = (자식)부모;) public class Pers..

JAVA 2021.07.08

this 레퍼런스

this -> 필드와 매개변수의 이름이 비슷할 경우 구분하기 위해 사용되며, 생략이 가능하다. this. 필드 형태로 사용된다. 그리고 this()를 사용하여 다른 생성자를 호출할 수 있다. Ex) - this를 생략하여 코드를 작성한 경우 public class Circle{ int radius; public Circle() { radius = 1; } public Circle(int r) { radius = r; } double getArea() { return 3.14 * radius * radius; } public static void main(String[] args) { ... } } - this를 사용하여 코드를 작성한 경우 public class Circle{ int radius; pub..

JAVA 2021.07.08

static멤버 , non - static 멤버

static 멤버와 non - static 멤버 static 멤버 (클래스 멤버, 정적 멤버) 공간적 특성 - static 멤버는 클래스 당 하나만 생성된다. 시간적 특성 - static 멤버는 클래스가 로딩될 때 공간이 할당된다. 공유의 특성 - static 멤버는 해당 클래스의 모든 객체에 의해 공유된다. public class Main { static int a; //static 필드 public static void b() { ... } //static 메소드 } - 생성자에는 static을 붙여서 사용할 수 없음. - static 멤버의 시간적 특성으로 객체가 생기기 전에 이미 static 멤버는 생성되어있고, 사용이 가능함. 또한, 객체가 사라져도 static 멤버는 사라지지 않고, 프로그램이..

JAVA 2021.07.07

힙/스택 영역 표현 (1)

* 간단한 버전 Ex 1) 간단한 객체 생성 및, 변수 초기화. public class Main { int i; } public class Example { public static void main(String[] args) { Main a = new Main(); Main b = new Main(); Main c = b; int i = 10; int j = 0; int k = 0 } } Ex 2) 사각형의 둘레와 면적을 구하는 코드. public class Main { int width, height; //필드 선언 public int getArea() { //면적 구하기 메소드 return width*height; } public int getCirc() { //둘레 구하기 메소드 return 2*..

JAVA 2021.07.06

접근지정자 / setter, getter 메소드

접근지정자 public : 모든 클래스에서 접근 가능. 디폴트 : 같은 패키지에서만 접근 가능. private : 같은 클래스에서만 접근 가능. protected : 같은 패키지와 자식 클래스에서의 접근만 가능. 연습하기1 패키지, 클래스에 따른 접근지정자 사용법. => public, 디폴트, private 접근 지정자를 사용하여 필드와 메소드 선언. => private는 같은 클래스에서만 접근이 가능하기 때문에 위의 코드처럼 다른 클래스에서는 접근 불가능. => 디폴트는 같은 패키지 내에서만 접근이 가능하기 때문에 위의 코드처럼 다른 패키지에서는 접근 불가능. 연습하기2 A, B, C 클래스를 선언하여 각각의 클래스에 멤버 변수를 선언하고, 메인 메소드에서 멤버 변수에 접근하여 값 넣기. package..

JAVA 2021.07.05

클래스와 객체생성 및 활용

Ex 1) 사각형의 밑변 길이와 높이를 입력받아 둘레와 면적을 구하는 코드를 작성하기. - 같은 클래스에 코드 작성하기. (Main 클래스) import java.util.Scanner; public class Main { int width, height; //필드 선언 public int getArea() { //면적 구하기 메소드 return width*height; } public int getCirc() { //둘레 구하기 메소드 return 2*width*height; } public static void main(String[] args) { Scanner sc = new Scanner(System.in); //객체 생성 Main m = new Main(); //객체 생성 m.width = s..

JAVA 2021.07.05

객체 지향 언어(Object-oriented programming, OOP)/클래스와 객체

JAVA 프로그래밍은 객체지향 언어이며, 객체는 모두 고유한 특성과 행동을 가짐. 또한, 다른 객체들과 정보를 주고받는 상호작용을 하면서 존재함. 객체지향의 특성 캡슐화 (= 은닉화) 상속 다향성 캡슐화 -> 객체를 캡슐로 싸서 내부를 볼 수 없게 하는 것, 외부의 접근으로부터 객체를 보호. 클래스도 객체 모양을 선언한 틀이며, 때문에 메소드와 필드는 모두 클래스 내에 구현됨. 상속 -> 자식 클래스가 부모 클래스의 속성을 모두 가지는 관계를 말 함. 부모 클래스의 속성을 자식 클래스에게 물려줌. 부모/자식 클래스 대신 슈퍼/서브 클래스라고도 부를 수 있음. * extends 키워드를 사용하여 상속 받음 * 자바에서 상속은 자식 클래스가 부모 클래스를 선택함. 다향성 ->같은 이름의 메소드가 클래스나 객..

JAVA 2021.07.03

flag 변수

flag 변수 -> flag 변수는 원래는 '깃발'이라는 의미를 가지고 있지만, 프로그래밍에서는 조건에 따라 true혹은 false값을 넣어주는 boolean형 변수입니다. 연습문제 1 백준 2753번 윤년 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int years = sc.nextInt(); sc.close(); if(years % 4 == 0) { if(years % 400 == 0) {System.out.println("1");} else if(years % 100 == 0){System.out.println("0");}..

JAVA 2021.07.02

break / continue / switch - case문

break문 -> 제어문을 빠져나오는 기능을 함. 주로 반복문에서 if 조건문을 사용하여 조건에 만족할 경우 반복문의 수행을 멈추고 외부로 수행이 이동함. Ex) i의 범위를 1부터 10까지 정한 후 7의 배수가 나왔을 때 반복문 종료. int sum = 0; for(int i = 1; i 반복문에서 if 조건문과 같이 사용하여 조건이 맞는 경우에 나머지 수행문은 수행하지 않음. 즉, 조건이 맞을 경우 해당하는 수행문만 수행하고, 나머지 수행문은 무시함. Ex) i의 범위를 1부터 100까지 설정하여 7의 배수만 출력. for(int num = 1; num

JAVA 2021.07.01