전체 글 263

210819_Exception(리뷰)

(예제1) String[]str= {"apple","banana","strawberry","kiwi"}; System.out.println("***차례대로 출력***"); for(int i=0;i=0;i--) { try { System.out.println(str[i]); }catch (ArrayIndexOutOfBoundsException e) { System.out.println("거꾸로 출력 중에 오류:"+e.getMessage()); } } //결과 ***차례대로 출력*** apple banana strawberry kiwi 배열요구: Index 4 out of bounds for length 4 ***거꾸로 출력*** 거꾸로 출력 중에 오류:Index 4 out of bounds for leng..

JAVA 2021.08.19

210818_Exception

Exception 가벼운 예외이거나 예상하고 있던 예외인 경우에 사용 예외처리를 해서 프로그램의 비정상적인 종료를 막자라는 취지이며 프로그램을 계속 진행할 수 있도록 함 RuntimeException: 컴파일러가 체크하진 않지만 실행상의 에러에 대비 Exception: 컴파일러가 체크해서 예외처리가 없으면 실행 안 됨. 반드시 작성해야만 컴파일 NullPointException: 생성하지 않고 클래스 메서드를 호출 NumberFormatException: 입력한 데이터의 형식 오류일 때 ArrayIndexOutofBoundsException: 문자열의 인덱스값에 관한 오류 ~~~~~~~~~~~~~~~~~~~~ ArithmeticException (예제) System.out.println("프로그램 시작"..

JAVA 2021.08.18

210818_익명내부클래스+상속

abstract class AbstEx2{ abstract public void dataAdd(); abstract public void dataList(); } class SubAbst extends AbstEx2{ //자식클래스 (상속) @Override public void dataAdd() { System.out.println("회원 추가"); } @Override public void dataList() { System.out.println("회원 목록"); } } public class AnonymousEx09 { //익명내부클래스형태 AbstEx2 abstEx2=new AbstEx2() { @Override public void dataList() { System.out.println("데이..

JAVA 2021.08.18

210818_익명내부클래스

(예제) //클래스 선언과 객체생성을 동시에 하는 이름없는 클래스(일회용) //이벤트 발생시 생성했다가 끝나면 메모리에서 제거됨(메모리 관리 효율적) abstract class AbstEx{ //추상메서드 abstract public void show(); } class OuterEx{ //외부클래스 //익명내부클래스 AbstEx ab=new AbstEx() { @Override public void show() { System.out.println("익명내부클래스"); } }; } public class AnonyInnerEx05 { public static void main(String[] args) { OuterEx ex=new OuterEx(); ex.ab.show(); //외부클래스참조변수명.익..

JAVA 2021.08.18

210818_내부클래스

내부클래스 특정 클래스 내에 또 다른 클래스가 정의되는 것을 의미. 이런 내부 클래스가 필요한 이유는 지금까지 작업해왔던 클래스들과는 다르게 독립적이기는 않지만 하나의 멤버처럼 사용할 수 있다. 내부 클래스는 외부 클래스의 모든 멤버들을 마치 자신의 멤버처러 사용 가능. static 내부 클래스는 제외하고는 다른 내부 클래스는 항상 외부 클래스를 통해야 생성 가능. (예제) class OuterObj{ //내부클래스: 아웃클래스 안에서만 사용가능 //특정클래스에서만 사용하는 클래스가 필요한 경우 //멤버내부클래스: 하나의 객체로 인식 class InnerObj{ public void write() { System.out.println("내부클래스의 메서드"); } } //외부 public void dis..

JAVA 2021.08.18

210817_스캐너+다향성+switch

interface Command{ public void write(); } class Insert implements Command{ @Override public void write() { System.out.println("게시물을 추가합니다"); } } class Erase implements Command{ @Override public void write() { System.out.println("게시물을 삭제합니다"); } } class Modify implements Command{ @Override public void write() { System.out.println("게시물을 수정합니다"); } } class Select implements Command{ @Override publi..

JAVA 2021.08.17

210817_Abstract+배열

abstract class Game{ abstract void play(); //게임시작 abstract void stop(); //게임종료 } class Tom extends Game{ @Override void play() { System.out.println("Tom이 게임을 시작합니다"); } @Override void stop() { System.out.println("Tom이 게임을 종료합니다"); } } class John extends Game{ @Override void play() { System.out.println("John이 게임을 시작합니다"); } @Override void stop() { System.out.println("John이 게임을 종료합니다"); } } class ..

JAVA 2021.08.17

210817_인터페이스+다형성

//인터페이스를 구현하는 클래스(implements는 다중구현 가능) class Food implements FoodShop{ @Override public void order() { System.out.println(SHOPNAME); //SHOPNAME="돈까스집"; final이라 변경 불가능 System.out.println("파스타를 주문합니다"); } @Override public void deliver() { System.out.println("주문한 파스타 배달완료"); } } public class FoodInterEx05 { public static void main(String[] args) { //다형성으로 생성 //foodshop부모클래스, food자식클래스 FoodShop f=ne..

JAVA 2021.08.17

210817_추상클래스+다형성

//추상클래스(abstract) //추상클래스는 new로 생성 불가 //추상메서드는 오로지 추상클래스에만 존재 가능 //추상클래스는 일반메서드와 추상메서드 둘 다 존재 가능 abstract public class Fruit { public static final String MESSAGE="오늘은 즐거운 화요일"; //상수는 가급적으면 올대문자 //일반메서드..추상클래스에는 추상메서드뿐만 아니라 일반메서드도 구현 가능 public void showTitle() { System.out.println("우리는 추상클래스 공부중~"); } //추상메서드..미완성메서드(선언부만 있고 몸통{}이 없다) //오버라이딩이 목적이므로 몸통없이 선언만 abstract public void showMessage(); } ..

JAVA 2021.08.17

210813_상속

상속 클래스의 관계 has a : 특정 객체 내에서 다른 객체를 가지고 있는 것 is a : 특정 객체가 다른 객체에게 자신의 능력을 포함시켜주는 상속 관계 상속: 부모가 보유하고 있는 재산 중 일부를 자식이 물려받는 것을 의미.자바에서는 이런 클래스들간의 다중 상속을 지원하지 않으므로 객체의 명확성을 높였다. Base class(기본클래스) Super class(슈퍼 클래스) Parent class(부모 클래스) ->이는 상속을 주기 위해 준비된 특정 클래스 의미 Derivation class(유도 클래스) Sub class(하위 클래스) Child class(자식 클래스) ->특정 클래스로부터 상속을 받아 새롭게 정의되는 클래스 의미 오버라이딩 '매서드 재정의'라고도 불리며 이는 서로 상속관계로 이루..

JAVA 2021.08.13

210813_메서드

//메서드 작성요령: 접근제한자(public등)+예약어(static)+리턴값(void,string,int)+메서드명() //리턴값: 만들 때의 자료형으로 return문을 작성해야 함(void는 리턴이 없음) //반복적인 코드를 줄여서 관리용이 위해 메서드 사용 //하나의 메서드는 한가지 기능만 수행하게 해야 함(한가지 메서드에 두개의 기능이 있으면 나머지 하나를 못 씀) public class MethodTestEx1 { //boolean리턴형의 메서드 public static boolean aaa() { return false; } //int리턴형 public static int bbb() { return 100; } //연산리턴형 public static int ccc(int x,int y) { re..

JAVA 2021.08.13

210813_오버로딩

public class MethodOverloadEx2 { //메서드 오버로딩 예제 public static int sum(int a,int b) { System.out.println("1번째 함수 호출"); return a+b; } public static double sum(int a,double b) { System.out.println("2번째 함수 호출"); return a+b; } public static double sum(double a,int b) { System.out.println("3번째 함수 호출"); return a+b; } public static double sum(double a,double b) { System.out.println("4번째 함수 호출"); return a..

JAVA 2021.08.13

210812_call by

인자전달방식 1.값 호출(call by value): 메서드를 호출시 기본자료형의 값을 인자로 전달하는 방식 2.참조 호출(call by reference): 메서드 호출시 전달하려는 인자를 참조(객체) 자료형을 사용할 경우를 의미. 여기에는 기본 자로형이 아닌 일반 객체 또는 배열들이 여기에 속함. ~~~~~~~~~~~~~~~~~~~~ //call by value: 값이 전달(int,short,double 등) //call by reference: 주소가 전달 (배열, 클래스) class Test1{ String name="lee"; String addr="Seoul"; } public class CallByEx8 { //1.call by value: 값만 전달받으며 메인의 a와 여기의 n은 주소가 다..

JAVA 2021.08.12

210812_클래스+배열

public class Student1 { private String stuName; private String hp; private int score; public Student1() { this("홍길동", "010-4444-6666", 100); } //같은 생성자끼리는 this()로 서로 호출 가능 //반드시 첫줄에 써주기 public Student1(String name, String hp) { this(name,hp,0); //아래에 쓴 거 가져오겠다는 의미 } //멤버를 모두 인자로 가진 생성자 public Student1(String name, String hp, int score) { this.stuName=name; this.hp=hp; this.score=score; } //전체출력메..

JAVA 2021.08.12

210812_클래스(예제)

(예제) public class ObjectEx1 { private String sangpum; //같은 객체내에서만 사용가능 int su; int dan; static String SHOPNAME="쌍용마트"; //static이 붙은게 클래스변수, 나머지는 인스턴스변수 public static void main(String[] args) { ObjectEx1 ex1=new ObjectEx1(); ex1.sangpum="바나나"; ex1.su=3; ex1.dan=1000; System.out.println("상점명: "+SHOPNAME); //같은 클래스내이기에 shopname은 클래스명 생략하고 그냥 사용가능 System.out.println("상품명: "+ex1.sangpum); System.out...

JAVA 2021.08.12

210812_클래스+this(예제)

class Person{ String name; int age; //디폴트생성자 //생성자에서의 this 연습 Person() { this("홍길동",5); //4번째 생성자 호출 } Person(String name) { this(name,15); } Person(int age) { this("유재석",age); } Person(String name,int age) { this.name=name; this.age=age; System.out.println("호출"); } public void write() { System.out.println("이름: "+name+"\t나이: "+age); } } public class ConstEx2 { public static void main(String[] ar..

JAVA 2021.08.12