본문 바로가기

JAVA 기초

Call by Value & Call by Reference 실제 데이터로 메소드를 호출 할때 복사된 데이터로 메소드 실행된다.메소드에서 재료로 받은 값을 수정해도 메인에서는 변경되지 X 실제 데이터가 아닌 데이터의 주소 값으로 호출 할 때 -->기본형 변수!주소 값으로 파라미터를 사용하여 메소드에서 데이터를 수정하면 메인에서도 그 값이 수정된다. --->레퍼런스 타입 변수! public class CallByExam {public static void add(int n){n += 10;}public static void addArr(int[] arr){for(int i = 0; i 더보기
자바 에서 예외 처리 try { 예외(에러가 발생하면 아래의 명령을 수행 하지 않고 catch 로 이동)}catch (예외 클래스) 발생하는 예외에 해당하는 예외 클래스를 정의 해주어야 한다. catch는 예외가 발생했을 경우에만 실행 예외 발생 유무나 예외 catch 유무와 상관 없이 무조건 수행된다. throw 는 필요에 의해서 인위적으로 예외를 발생 시킨다. 자신이 예외 처리를 하지 않고, 자신을 호출하는 메소드 에게 throws 를 통해서 던져줌예외를 회피 한다고 보면 된다. public static void print(int[] arr) throws Exception{int num = 10;int sum = num/arr.length; } public static void main(String[] args){int .. 더보기
프로세스와 스레드 process : 실행 중인 프로그램 모든 프로세스는 하나 이상의 thread 를 가지고 있다. thread : 프로세스 내에서 프로그램의 실행 흐름을 말한다 single thread : thread 가 하나 뿐인 프로그램 multi threade : thread 가 둘 이상인 프로그램 프로세스는 각각의 독립된 메모리 공간을 가진다. 따라서 마음대로 수정할 수 없다. 반면 스레드는 메모리를 공유(객체 공유)한다. 따라서 복수의 스레드가 그 객체를 읽고 쓸 수 있다. class ThreadExam extends Thread{} 과 같이 thread 클래스 선언 run 메소드 안에 thread의 기능을 명령문으로 입력 Thread thread = new ThreadExam();Runnable 인터페이스를 이.. 더보기
내부 class 안쪽에 있는 클래스를 객체 변수처럼 사용하기 위해서 사용 외부 클래스에서 내부 클래스를 사용하려면 안쪽 클래스 객체를 생성하여 호출. -익명 내부 클래스클래스 내에서 한번 쓰고 버리는 클래스 class NestedClassExample9 { public static void main(String args[]) { MessageSender obj = new MessageSender() { void send(String message) { System.out.println("발신: 마이다스"); System.out.println("수신: 빌 게이츠"); System.out.println("메시지: " + message); System.out.println(); } }; obj.send("굿 모닝"); } } 더보기
equals 메소드 두 개의 String 의 값을 비교하여 같으면 true 다르면 false 를 반환한다. 예시 코드 String str1 = "김두두";String str2 = "김두루";if((str1).equals(str2)){System.out.println("같아요!");}else{System.out.println("달라요!");}결과 값 : 달라요! 더보기
instanceof 연산자 왼쪽에는 참조 변수 오른쪽에는 타입(클래스 명 등)이 위치한다.예를 들면 kim instanceof Dudu 라면 kim 라는 참조 변수가 Dudu 라는 객체 타입으로 형 변환이 가능한 가를 묻는 것이다. 만약 가능하다면 true 를 반환하고 불가능 하면 false 를 반환한다. 더보기
Arraylist 와 Linkedlist 배열과 똑같은 내용인데 배열에 있는 내용을 좀 더 보강 시켜 만듦.데이터의 구조가 순서가 있는 자료 구조이다. 데이터가 중복이 되어도 상관이 없다. 배열 순서를 쭉 한번에 출력하고 싶을 때 (연속적으로 출력 할 때 좋다)데이터를 가져오는 방법 : get 메소드를 사용한다. ex) String str = list.get(2) (괄호 안에는 인덱스) 주소 값을 메모리로 연결을 하기 때문에 새로운 자료가 과다하게 추가되거나 삭제가 반복되어질 때 좋다. 더보기
인터페이스와 추상클래스 인스턴스 화를 금지한다 = 객체 생성을 금지한다.왜 만들어졌을까..? --> abstract 라는 이름을 가진 추상 메소드가 있는데 메소드의 내용이 없다, 결국 이 메소드는 호출하기 위한 목적이 아니다. 자식에게 반드시 추상메소드를 오버라이딩 하도록 하기 위한 목적 abstract class이름 의 자식 class 들은 반드시 부모의 메소드를 가지고 있어야 한다.적어도 한개의 abstract 메소드를 가지고 있으면 자식 클래스도 abstract 가 가지고 있는 추상 메소드를 반드시 가져야 한다. 인터페이스는 추상 메소드 만으로 이루어진 class 이다. 자바는 다중 상속을 지원하지 않는다. 따라서 부모의 기능을 상속 받은 class는 다른 class를 상속 받을 수 없다는 것이다. 그러나 인터페이스를 i.. 더보기
상속과 생성자 extends 를 통해서 하위 class 가 상위 class 의 기능을 상속 받을 수 있다. 객체를 생성하면 생성자가 생성된다. 생성자를 따로 만들지 않아도 자체적으로 default 생성자가 존재한다. 인자가 없는 생성자만 있을 때는 크게 문제가 되지 않지만, 인자가 있는 생성자를 생성하게 되면 자바는 default 생성자를 생성하지 않기 때문에 인위적으로 default 생성자를 생성해주는 것은 좋은 습관이다.부모의 생성자에 인자가 존재하면 반드시 super()의 () 안에 생성자를 명시해 주어야 한다. 더보기
JAVA에서의 기본 데이터형 - 자바의 기본 데이터 형정수 type : byte, short, int, long실수 type : float, double논리 type : boolean문자 type : char - 자바의 참조 데이터 형자바의 참조 데이터 형 (Object (객체)) 은 class의 이름에 따라서 변수의 타입이 결정된다. 예를 들어서 class의 이름을 Dudu 로 지었다면 Dudu du = new Dudu(); 로 객체를 생성할 수 있다. 자바의 기본 데이터 형은 자바에서 자체적으로 정의 되어 있어서 사용자가 마음대로 수정할 수 없으며, 기본형 변수는 그 실제 값을 저장한다. 반면에 참조 데이터 형은 값이 저장되어 있는 주소 값을 가지고 있게 된다. Dudu du = new Dudu(); 에서 du 는 new를 통해.. 더보기