java 33

예외 처리

예외(Exception) -> 문법적으로는 맞지만 작동이 이상하거나 결과에 악영향을 미칠 수 있는 실행에서 발생한 오류를 예외라고 함. 예를 들어, 정수를 0으로 나누는 경우 int div1 = 5; int div2 = 0; System.out.println("나누기 결과: " + div1 / div2); //값을 0으로 나눌 수 없기 때문에 예외 발생. 예외 처리 코드 try { //예외가 발생할 가능성이 있는 실행문 } catch (처리할 예외 타입 e) { //예외 처리문 } finally { //예외 발생 여부와 상관없이 실행되는 문장 } //다중 catch도 가능함. try { //예외가 발생할 가능성이 있는 실행문 } catch (처리할 예외 타입 e) { //예외 처리문1 } catch (처..

JAVA 2021.07.13

[자바] Login 화면 구성하기

구성 순서 JFrame을 부모 클래스로 상속받아 Login 클래스 생성 JPanel, JLabel, JTextField, JPasswordField, JCheckBox, JButton 클래스를 사용하여 로그인을 할 때, 필요한 옵션을 추가 Login 생성자 선언, initData 메소드를 통해 객체를 생성하여 옵션 만들기, setInitLayout 메소드를 통해 창에 옵션들을 추가 메인 메소드에 Login 클래스 객체 생성 - setInitLayout 메소드에 옵션을 추가하지 않은 경우 import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JFrame; import javax.swing.JLabel; import java..

JAVA/GUI 2021.07.13

[자바] 공격 프로그램 구현해보기

Warrior, Archer, Wizard 등의 공격수를 클래스로 생성하여 서로를 공격하는 프로그램 만들기. Warrior, Archer, Wizard 클래스는 공통된 멤버 변수를 가지고 있으며, 하나의 키워드로 묶을 수 있다. Hero라는 클래스를 3개의 공격수 클래스의 부모 클래스로 선언한다. (3개의 공격수 클래스는 자식 클래스) - Warrior 공격수는 comboAttack 능력을 가지고 있음. package ex01; public class Warrior extends Hero{ public Warrior(String name, int hp) { super(name, hp); } public void comboAttack() { System.out.println("Warrior의 공격입니다."..

JAVA 2021.07.11

[자바] 상속

상속이란? -> 자식 클래스가 부모 클래스의 필드와 메소드를 물려받는 것. (자식 클래스가 부모 클래스를 선택하여 물려받음.) * '자식 클래스 extends 부모 클래스' 형식으로 extends 키워드를 사용함. * 상속을 사용하는 이유 : 서로 다른 클래스가 중복되는 타입(카테고리)의 필드를 가지고 있을 경우 상속을 사용하면 훨씬 간결해진 클래스 구조를 만들 수 있음. * 상속의 효과 부모 클래스를 재사용하여 자식 클래스를 빠르게 개발 가능 유지 보수 편리 코드 중복 줄임. * 상속 대상 제한 private, 디폴트 접근 지정자 사용시 상속이 제한됨 final 클래스는 아무한테도 상속 안 함 단일 상속 (자식 클래스 입장에서는 하나의 부모 클래스에서만 상속받을 수 있음.) Ex) '학생', '선생님'..

JAVA 2021.07.09

[자바] 업캐스팅, 다운캐스팅 / 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

[백준 - 자바] 문자열 - 11654번 / 11720번

11654번 - 아스키코드 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); char munja = sc.nextLine().charAt(0); int num = (int)munja; System.out.println(num); } } * charAt() : 해당 문자의 아스키코드를 반환해주는 메소드. 입력받은 문자를 아스키코드로 반환한 뒤, int(정수형)로 형변환을 하여 num변수에 대입한다. 11720번 - 숫자의 합 방법 1) charAt() 메소드 사용 import java.util.Scanner; public class Ma..

Baekjoon 2021.07.05

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

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

JAVA 2021.07.05