멋쟁이 사자처럼 3회차 ( 02 / 28 )
[학습목표]
|
1. 자료형의 개념과 종류를 이해하고 사용할 수 있다. ( 예약어 , 기본 자료형 )
1) 예약어
Java 21 se document : https://docs.oracle.com/javase/specs/jls/se21/html/jls-3.html#jls-3.9
- 정해진 예약어
- 의미가 있는 예약어 [문법 -> 키워드 , 변수 (비추천)]
2) 기본 자료형
참고 자료 : https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html
Primitive Data Types (The Java™ Tutorials > Learning the Java Language > Language Basics)
The Java Tutorials have been written for JDK 8. Examples and practices described in this page don't take advantage of improvements introduced in later releases and might use technology no longer available. See Dev.java for updated tutorials taking advantag
docs.oracle.com
- byte (1)
- short (2)
- char (2) → 문자 기본 타입 ex) ‘a’
- int (4) → 정수 기본 타입 ex) 100
- float (4)
- double (8) → 실수 기본 타입 ex) 100.1
- long (8)
→ 0, 1 = 1bit * 8 = 8bit = 1byte (1byte 당 하나의 주소가 생성됨 )
→ byte 단위 (byte가 흘러가는 곳 => stream -> IOStream [입출력이 흘러 들어가는 곳]) , 문자열 단위 , 객체 단 위 -> 데이터 프로세싱 가능
** 기본 자료형 : [자료] byte (아스키코드) , char (유니코드) , Object (노드) - 직렬화
2. 변수의 선언과 활용 방법을 익히고 다양한 변수를 사용할 수 있다.
1) 변수 선언하는 법
<< 기본 자료형 , 값 >>
ex) int a = 100;
2) 클래스 - 사용자 자료형 = UserDataType
- 자주 사용하는 값과 기능을 하나의 이름으로 선언해 놓는 것
- 클래스 = 값 + 메시지 = 속성 [필드] + 기능 [메소드]
- 기능 [메소드] _성격 static , non –static
- getter , setter의 원형
ex01 )
//이름과 String name , 주소 String address 를 하나의 이름 [Adress] 으로 등록하기
class Address { //-> 주소를 관리하는 userDataType
String name; //변수 선언하기
String address;
public static void prn() { 출력기능 }
}
ex02 )
// ex) 국어 , 수학을 총점 평균 Score
class Score {
int kor; // 변수 선언하기
int math;
public static int getTot() {총점 계산} //메소드 선언하기
public statac int getAvg() { 평점 계산 }
public static void Prn() { 출력 기능 }
}
3) 상속
- 위에 있는 클래스 → super
- 아래에 있는 클래스 → this
- 마치 내꺼인 것처럼 위에 있는 메소드를 사용 ( 단 , 한 자손에 여러 개의 super는 없어야 함 )
- 상속 시 extends 사용
- 반드시 기능 확장 필요!
4) 다형성
다양한 형태를 가진 클래스 원형을 선언
- 위에 있는 클래스 → super
- 아래 있는 자식 클래스들 → this
[자바의 상속 원칙]
- 자바는 단일 상속을 원칙으로 한다 ( super 2개 이상 x )
- 선조는 후손을 모른다.
- 상속에 상속을 받을 수 있다.
5) 지역 변수 (local) , 전역 변수 (instance) , 정적 변수 ( static ) 개념 이해
코드를 통해 지역변수와 전역 변수에 대해 보기
public class Main {
int a;
float b;
public static void main(String[] args) {
int c;
long d;
}
}
- 전역 변수 : a, b ( 어느 메소드에서건 사용 가능 )
- 지역 변수 : c , d ( 자기가 있는 메소드 내에서만 사용 가능 , 다른 메소드에서 사용 시 error 발생 )
- 정적 변수 : 프로그램 실행 전반에 거쳐 수명 유지됨 , 정적으로 할당되는 변수임
6) final ( 상수 ) 키워드 활용법 숙지
-> 위 그림을 보면 public class Object로 final이라는 키워드가 없음 → 자손을 만들 수 있음 (상속 o)
->위 그림을 보면 java.lang.Object java.lang.System임을 볼 수 있음
즉 System은 Object 클래스의 상속을 받고 있음
그리고 public final class System 이라고 되어 있음 → 자식 x
3. 메소드의 개념과 역할을 이해하고 정의 및 호출할 수 있다.
Test01이라는 클래스에 prn()이라는 메소드를 만들어 보고 호출해보기
//Test01.class
package com.test;
public class Test01 {
public static void main(String[] args) {
prn();
//Test01.prn() 보다는 prn();으로 호출함
}
public static void prn() {
System.out.println("안녕하세요");
}
}
이번엔 같은 패키지 내에 다른 클래스를 만들어서 다른 클래스의 메소드를 호출해보기
//Test01.class
package com.test;
public class Test01 {
public static void prn() {
System.out.println("안녕하세요");
}
}
//Test02.class
package com.test;
public class Test02 {
public static void main(String[] args) {
Test01.prn();
}
}
다른 클래스에서 다른 클래스의 메소드를 호출할 시 → 클래스명.메소드명
- static 메소드
선언과 동시에 bind가 되고 호출 시 클래스명.메소드명으로 호출된다.
//Test01.class
package com.test;
public class Test01 {
public void prn() {
System.out.println("안녕하세요");
}
}
//Test02.class
package com.test;
public class Test02 {
public static void main(String[] args) {
Test01.prn();
}
}
Test01의 메소드에 static을 빼고 실행을 할 경우 아래와 같이 에러가 남
Exception in thread "main" java.lang.Error: Unresolved compilation problem: Cannot make a static reference to the non-static method prn() from the type Test01
- 호출 , 클래스명, 메소드
public static void UserName (매개인자*) {}
public static datatype UserName (매개인자*) {
return datatype_value;
}