목록Java (77)
가자미의 개발이야기
a. 배열 int[] ref=new int[5]; int[] ref={1,2,3,4,5}; int[] ref=new int[]{1,2,3,4,5}; int ref; ref=new int[5]; int ref; ref=new int[]{1,2,3,4,5}; 이를 통해 자바에서 배열도 인스턴스로 생성됨을 알 수 있다. 클래스도 배열을 만들 수 있다! 배열은 다른 메소드의 매개변수로 참조가 가능하고 메소드의 반환값으로 배열이 참조를 받을 수 있다. 자바 배열의 초기화 메소드 Arrays클래스의 static메소드인 fill(int[] a, int val) 두번째 인자로 전달된 값으로 배열 초기화 Arrays클래스의 static메소드인 fill(int[] a, int 어디부터, int 여기까지, int val) ..
printf 메소드 : 문자열을 서식지정자(%d, %f %c등...)로 표현하는 메소드 Scanner 클래스 : 순서대로 데이터를 읽어드리는 메소드 띄어쓰기로 구분해서 읽어냄(?) Scanner 인스턴스 생성은 데이터를 뽑아 올 대상과의 연결을 의미!!! Scanner sc=new Scanner(source); 그렇다면 키보드로부터 데이터를 입력받으려면? Scanner sc = new Scanner(System.in); sc.nextInt() 메소드는 다음 정수값을 가져오란 뜻!! 자료형에 따라 nextInt, nextByte, nextLine...
a. String 클래스의 특징 자바에서는 String str1="java"; 도 유심히 살펴볼 이유가 있다. str1이라는 String 인스턴스가 생성되어 "java"라는 데이터를 인스턴스로 전달해준 셈이다. 즉 String str1=new String("java"); 이런 의미인 셈이다. 이때 하나 기억해야 할 것이 자바 String 인스턴스는 immutable 인스턴스 라는 사실이다. (immutable은 값이 변경할 수 없는 상태를 말한다.) 따라서 String 인스턴스 생성을 최소한으로 한다.(오류가 일어날 확률이 없기 때문) String 클래스는 다른 기본 자료형과 +연산이 가능하다. 다른 기본자료형을 String 클래스로 바꾸고 서로 이어붙여서 반환한다. 다르게 생각하면 어떤 자료형을 Str..
자바가 메소드를 참조할 때는 두가지를 고려한다. 첫째 메소드의 이름 둘째 매소드의 매개변수 정보 이다. 달리 생각하면 자바는 메소드 이름이 다르거나 혹은 같은 이름의 메소드라도 매개변수 정보가 다르면 서로 다른 메소드로 정의하게 되는 셈이다. 이런 이름이 같아도 매개변수가 달라 여러개를 정의하는 방식을 메소드 오버로딩이라고 한다. 이때 반환형은 상관없다는걸 알아두자! 특히 모호한 오버로딩은 피하자! 예를 들어 메소드명(int a, double b); 메소드명(int a, int b); 가 정의되었을 때 메소드명(3, 'k');는 어떻게 될까? 앞선 두 메소드명 모두 가능한 모호한 오버로딩이다.(물론 이 경우에선 형변환에 의해 두번째 메소드가 실행된다.) 그리고 이런 오버로딩은 메소드만 해당하는게 아니라 ..
보호되어 있는 글입니다.
a. 클래스 변수(스태틱 변수) 모든 클래스에서 공유하기 위해 클래스에 속하지 않는 독립적인 변수라고 생각하면 편한다. 하지마 자바로 코딩할 때 그런 독립적인 변수도 클래스 안에 써줘야 하니, 이를 구분하기 위해 앞에 static이라고 붙이는 것이다. 즉 static 변수는 자신이 몸담고 있는 클래스와 관련 없는 독립적인 존재이다. 하지만 한가지 지켜줘야 하는 것이 있는데, 자신이 몸담고 있는 클래스가 지정한 접근 수준의 접근을 허용한다는 점이다. 즉 인스턴스의 이름으로 외부에서 접근 가능한 경우도 생기게 된다. 따라서 static변수에 접근할 때는 인스턴스의 이름으로 접근하기보다 클래스의 이름으로 접근해주는게 좋다.(인스턴스와 구분하기 위해) b. 스태틱 메소드 전체적인 특징은 앞서 설명한 클래스 변수..
캡슐화란 쉽게 말하면 한 클래스에 그 클래스와 관련된 것을 적절하게 담는 행위를 말한다. 프로그램의 요구조건에 따라서 캡슐화의 기준은 달라질 수 있고, 완벽한 정답이란건 없다.
a. 정보 은닉 자바의 정보은닉은 외부에서 클래스에 있는 데이터를 다루려 할 때, 데이터 자체에 접근하지 말고, 기능으로 데이터를 활용할 수 있도록, 즉 간접적으로 영향을 미치도록 하는 기능이다. 정보 은닉을 위해서는 인스턴스 변수 앞에 private라는 접근 수준 지시자를 붙여주면 된다. private를 붙인 변수는 외부에서 직접 접근이 불가능해진다. 다만 메소드의 매개변수를 통한 접근은 가능해진다. 예를 들어 인스턴스명.변수=~~;로 변경은 불가능하지만 class메소드(~~)로는 변경 가능하다. b. 접근지시자 접근 자유도 순으로 public / protected / default(지시자를 선언하지 않은 경우 포함) / private 이 네가지 지시자를 쉽게 분류할 수 있는 방법은 private 기준..
이름이 같은 클래스를 사용해야 하는 상황이 발생한다고 상상해보자. 이름이 같은 클래스가 디렉토리에 존재할 수 없으니, 서로 이름이 다르게 하거나, 서로 위치를 달리해야 할 것이다. 이를 위해 사용되는게 자바의 패키지 개념이다. 패키지의 이름이 중복되지 않도록 하는 몇가지 규칙이 있다. 먼저 패키지 이름은 모두 소문자로 작성해야 한다. 인터넷 도메인 이름의 역순으로 이름을 구성해야 한다.(예를 들어 naver에서 가져온 클래스일 경우 com.naver;이런 식) 이름 끝에 클래스를 정의한 주체 또는 팀의 이름을 추가해야 한다.(예를 들면 철수가 정의한 패키지는 com.naver.chulsoo;)로 정의할 수 있다. 이렇게 생성된 패키지는 클래스패스-com디렉토리-naver디렉토리-chulsoo디렉토리-클래..
자바는 보통 .java 파일에 있는 클래스를 컴파일하면서 각 .class로 바꾸어 자바 파일이 있는 곳에 저장을 한다. 자바를 실행할 때도 보통 자바 파일이 있는 곳(현재 디렉토리)에서 클래스를 찾는다. 하지만 다른 곳에 있는 클래스를 활용하고 싶을 땐 클래스 패스를 설정해서 활용한다. 명령 크롬프트로 클래스 패스를 설정하는 법: c:\현재디렉토리>set classpath=. ;C:\원하는 위치;원하는위치;원하는위치 여기서 점의 역할은 여전히 현재디렉토리에서도 클래스파일을 찾겠다는 의미이고, 세미콜론을 계속 추가함을 통해서 클래스 패스를 더 추가할 수 있다. 여기서 절대경로와 상대경로에 대한 이해를 추가해주면 좋은데 절대 경로는 루트 디렉토리부터 작성한 것이고 상대 경로는 현재 디렉토리를 기준으로 지정한..