목록전체 글 (134)
기록장
public class A { //필드 public int field1; int field2; private int field3; //생성자 public A() { field1 = 1; field2 = 1; field3 = 1; method1(); method1(); method3(); } //메소드 public void method1() {} void method2() {} private void method3() {} } package sec03.exam01; public class B { pubilc B() { A a = new A(); a.field1 = 1; a.field2 = 2; //a.field3 = 1; //접근 제한자 에러 a.method1(); a.method2(); a.method3..
파이널은 최종적인 필드라는 뜻이겠지? final 필드는 초기값이 저장되면 이것이 최종적인 값이 돼 그래서 수정할 수가 없어 선언방법은 final 타입 필드 [= 초기값]; 이렇게 하면 돼 파이널 필드에 초기값을 줄 수있는 방법은 두개야 1. 필드 선언 시에 주는 방법이랑 -->단순 값일 때 2. 생성자에서 주는 방법 --> 복잡한 초기화, 외부 데이터로 초기화 package sec02.exam01; public class Person { final String nation = "Korea"; final String ssn; String name; public Person(String ssn, String name) { this.ssn =ssn; this.name =name; } } package sec0..
싱글톤이란 단 하나의 객체만 만들도록 보장할때 쓰는거야 단 하나만 생성된다고 싱글톤임 외부에서 생성자 호출을 막기 위해 private를 붙이면 돼 1 자신의 타입인 정적 필드를 하나 선언 2 자신의 객체를 생성해 초기화 3정적 필드도 private접근 제한자를 붙여 외부에서 필드값을 변겅하지 못하도록 막음 4외부에서 호출할 수 있는 정적 메소드인 getInstance()를 선언하고 정적 필드에서 참조하고 있는 자신의 객체를 리턴함 Pubilc class 클래스{ //정적필드 private static 클래스 singleton = new 클래스(); //생성자 ptrivate 클래스() {} //정적 메소드 static 클래스 getInstance(){ return singleton; } } -->이게 싱..
package sec02.exam01; public class Calculator { static double pi = 3.14159; static int plus(int x, int y) { return x + y; } static int minus(int x, int y) { return x - y; } } package sec02.exam01; public class CalucalatorExample { public static void main(String[] args) { double result1 = 10 * 10 * Calculator.pi; int result2 = Calculator.plus(10,5); int result3 = Calculator.minus(10, 5); System.o..
메소드 오버로딩 같은 이름의 메소드를 여러개 선언 하는 것을 메소드 오버로딩이라고 해 오버로딩이란 많이 싣는 것을 뜻하거든 하나의 메소드 이름으로 여러개의 기능을 담아서 이렇게 이름이 붙여졌다고 하네? 근데 다 중복이면 코드의 중복이잖아? 메소드 오버로딩의 조건은 -매겨 변수의 타입,개수, 순서 중에서 하나가 달라야해~ 만약 int변수를 변수를 선언했는데 double 타입이 필요 할 수도 있잖아? 이럴떄는 더블 타입으로 선언된 메소드를 하나 더 선언 하면 돼 그러면 JVM이 알아서 매개값의 타입을 보고 메소드를 선택한대 개꿀이지? 예를 들어서 plus(10, 20)을 호출하면 매개값이 정수니까 plus(int x,int y)가 실행되는거지 plus(10.5,20.3); 메소드를 호출 하면 뭐가 실행 될지..

리턴문에 대해 알아볼거야 리턴값이 있는 메소드가 있고 리턴값이 없는 메소드가 있어 일단 리턴 값이 있는 메소드는 반드시 리턴문을 지정해야돼 만약 리턴문이 없다? 그러면 에러 나~ 리턴문이 실행 되면 메소드는 즉시 종료 돼 return 리턴값; 리턴문의 리턴 값은 리턴 타입이거나 리턴 타입으로 변환이 될 수 있어야해 예를 들어서 int인 plus()메소드에서는 바이트, 쇼츠,인트 값이 되어도 상관없어 바이트랑 쇼츠는 인트로 자동 변환 돼 int plus(int x, int y){ int result = x + y; return result; } 이건 int plus(int x,int y){ byte result = (byte) ( x+y ); return result; } 이렇게 말이지 리턴문 이후의 실행..
메소드는 걍 간단해 작업단위를 중괄호 { }로 묶어 놓고 이름을 붙인거야 메소드=선언부+구현부(실행블록)이야 메소드는 선언+실행부라고 말했지? 선언부에는 (리턴타입, 메소드 이름, 매개 변수 선언)이렇게 있거든 일단 리턴타입 결과 값의 타입을 쓰면 돼 결과 값이 없으면 void로 쓰면 돼 매개 변수를 모를 경우가 있을거야 여러개의 수를 모두 합산하는 메소드를 선언해야한다면 몇 개의 매개 변수가 입력될지 알 수 없잖아? 이럴때는 변수를 배열타입으로 선언하면 돼~ int sum1(int[] values) { } 이렇게 말야 sum()메소드를 호출할 때 배열을 넘겨주면서 배열의 항목값을 전달 할 수 있는거지 즉 호출 할 떄 항목 수가 결정되는거야 근데 이러면 호출 전에 배열 생성해야 불편하잖아? 이럴때는 목록..
방금 생성자2 글에서봤지? 코드가 너무 길잖아 생성자 오버로딩이 많아지면 중복된 코드가 발생 할 수 있어 이 경우에는 개선 가능하걸랑 필드 초기화 내용은 한 생성자에만 집중으로 작성하고 나머지 생성자는 초기화 내용을 가지고 있는 생성자를 호출하는거지 클래스( [매개변수, ...]) { this(매개변수, ...,값, ...); //클래스의 다른 생성자 호출 실행문; } this()는 자신의 다른 생성자를 호출하는 코드로 반드시 생성자의 첫 줄에서만 허용돼 this()의 매개값은 호출되는 생성자의 매개 변수에 맞게 제공해야한다~