본문 바로가기
Language/JAVA

JAVA 11일차 - cmd, 소스 분석

by 코젼 2022. 7. 4.
728x90
반응형

JAVA 공부 2022-07-04(11일차)

 

JAVA 기본 반환타입
💬 return 키워드 사용
◾ void
◾ boolean
◾ char(문자)
◾ 정수 : byte, short, int(기본), long
◾ 실수 : float, double(기본)
◾ 참조형 : String(문자열), 배열(1차원)
class Name {
	int a; // 전역 변수
	Name b; // 클래스 변수
	static int c; // 정적 변수 -- 순서 3(static)

	public static void main(String[] a) { // -- 순서 1(static)
		int d; // 지역 변수 -- 메소드 내에 존재
		static int e; // -- 순서 2(static)
		System.out.println("김지연");
	}
}

💡 JAVA JDK 다운로드

Java SE Development Kit 8u333 - JAVA 8

◾ Windows - jdk-8u333-windows-x64.exe 다운로드


📃 명령 프롬프트에서 이름 출력하기

💬 파일 접근 할 때는 cd 명령 사용

ex) cd\ 는 C드라이브의 기본 주소로 이동

💬 (String[] args) -> (String[] a) 상관 X

💬 (String[] args) -> (String a[]) 상관 X

 

◾ javac FirstEclipse.java : 컴파일 된 FirstEclpse.class(CLASS 파일)

java FirstEclipse : java파일


💡 소스 분석하기

💾 소스코드

AddMethod.java
0.00MB
AddMethod.class
0.00MB


📃 JAVA 소스를 분석해보자(1)

📝 AddMethod 클래스

◾ 두 매개변수의 값을 더하는 메소드가 있는 클래스

// AddMethod라는 이름으로 클래스 선언
class AddMethod {  // {기호에 의해 클래스 시작점 지정

	// String형 1차원 배열을 이용하여 main()를 선언하며 
	// {기호에 의해 main 메서드 시작점 지정
	public static void main(String[] args) { 
		// long형 변수 선언, add메서드의 실매개변수값 할당
		long result = add(100,200); 

		// System 클래스의 out 객체에 있는 println메서드를 사용하여
		// result 변수의 값을 출력
		System.out.println(result); 		
		addPrint(10, 11); 
	} // main 메서드의 끝을 알려줌
	
	// long형 add메서드를 선언하며 매개변수로 n1, n2를 long형으로 선언
	public static long add(long n1, long n2) { // {기호에 의해 add메서드 시작점 지정
		// long형 result지역변수를 선언하며 매개변수 n1과 n2를 더함
		long result = n1 + n2; 
		// result지역변수를 반환
		return result; 
	} // add 메서드의 끝을 알려줌
	
	// void형 addPrint메서드를 선언하며 매개변수로 n1, n2를 long형으로 선언
	public static void addPrint(long n1, long n2) { // {기호에 의해 addPrint메서드 시작점 지정
		// long형 result지역변수를 선언하며 매개변수 n1과 n2를 더함
		long result = n1 + n2; 
		// System 클래스의 out 객체에 있는 println메서드를 사용하여
		// result 변수의 값을 출력
		System.out.println(result); 
	} // addPrint 메서드의 끝을 알려줌
} // AddMethod 클래스의 끝을 알려줌

📝 cmd


📃 JAVA 소스를 분석해보자(2)

💾 소스코드

JavaTest.java
0.00MB
JavaTest.class
0.00MB
Human.class
0.00MB
Student.class
0.00MB


📝 Human, Student, JavaTest 클래스

◾ 상속 예제

// Human이라는 이름으로 상위 클래스 선언
class Human { // {기호에 의해 Human 클래스 시작점 지정
	// int형 age지역변수 선언
	int age;
	// String형 name지역변수 선언
	String name;
	// 클래스명과 동일한 이름으로, int형 age매개변수와 String형 name매개변수를 가지는 생성자를 정의한다.
	Human(int age, String name) { // {기호에 의해 생성자 Human메서드 시작점 지정
		// this키워드를 이용하여 Human 클래스가 가지고 있는 age지역변수에 age매개변수 값을 저장한다.
		this.age = age;
		// this키워드를 이용하여 Human 클래스가 가지고 있는 name지역변수에 name매개변수 값을 저장한다.
		this.name = name;
	} // int형 age매개변수, String형 name매개변수가 있는 Human 생성자의 끝을 알려줌
	
	// void형 intro메서드를 선언하며 매개변수는 없다.
	void intro() { // {기호에 의해 intro메서드 시작점 지정
		// System 클래스의 out 객체에 있는 println메서드를 사용하여
		// 괄호 안의 값을 출력한다. age, name은 생성자에서 실매개변수로 입력받은 값을 출력한다.
		System.out.println("안녕, " + age + "살 " + name + "입니다.");
	} // intro 메서드의 끝을 알려줌
} // Human 클래스의 끝을 알려줌

// Student라는 이름으로 하위 클래스를 선언
// Student 클래스는 extends 키워드를 이용하여 Human 상위 클래스의 상속을 받는다.
class Student extends Human { // {기호에 의해 Student클래스 시작점 지정
	// int형 stnum지역변수 선언
	int stnum;
	// String형 major지역변수 선언
	String major;

	// 클래스명과 동일한 이름으로, int형 age매개변수, String형 name매개변수, int형 stnum매개변수, String형 major매개변수를 가지는 생성자를 정의한다.
	Student(int age, String name, int stnum, String major) { // {기호에 의해 생성자 Student메서드 시작점 지정
		// super키워드를 이용하여 Student의 상위 클래스인 Human 클래스가 가지고 있는 Human 생성자에 age매개변수와 name매개변수를 저장한다.
		super(age, name);
		// this키워드를 이용하여 Student 클래스가 가지고 있는 stnum지역변수에 stnum매개변수 값을 저장한다.
		this.stnum = stnum;
		// this키워드를 이용하여 Student 클래스가 가지고 있는 major지역변수에 major매개변수 값을 저장한다.
		this.major = major;
	} // int형 age매개변수, String형 name매개변수, int형 stnum매개변수, String형 major매개변수가 있는Student 생성자의 끝을 알려줌
	
	// void형 study메서드를 선언하며 매개변수는 없다.
	void study() { // {기호에 의해 study메서드 시작점 지정
		// System 클래스의 out 객체에 있는 println메서드를 사용하여
		// 괄호 안의 문자열을 출력한다.	
		System.out.println("하늘천 땅지 검을현 누를황");
	} // study메서드의 끝을 알려줌
} // Student 클래스의 끝을 알려줌


// JavaText라는 이름으로 클래스 선언
class JavaTest { // {기호에 의해 JavaTest클래스 시작점 지정
	// String형 1차원 배열을 이용하여 main()을 선언
	public static void main(String[] args) { // {기호에 의해 main메서드 시작점 지정
		// kim이라는 참조변수를 이용하여 Human 객체를 생성하고
		// Human생성자에 실매개변수 값인 29와 "김상형"을 넣는다.
		Human kim = new Human(29, "김상형");
		// . 을 이용하여 kim객체 안에 있는 intro 메서드를 호출한다.
		kim.intro();
		
		// lee라는 참조변수를 이용하여 Student 객체를 생성하고
		// Student생성자에 실매개변수 값인 42, "이승우", 9312345, "경영"을 넣는다.
		Student lee = new Student(42, "이승우", 9312345, "경영");
		// . 을 이용하여 lee객체 안에 있는 intro 메서드를 호출한다.
		// Student클래스는 Human클래스를 상속받기 때문에 Human클래스가 가지고 있는 intro메서드를 사용할 수 있다.
		lee.intro();
	} // main메서드의 끝을 알려줌
} // JavaTest 클래스의 끝을 알려줌

📝 cmd


📃 JAVA 소스를 분석해보자(3)

Time.class
0.00MB
JavaTest1.java
0.00MB
JavaTest1.class
0.00MB

📝 Time, JavaTest1 클래스

◾ 캡슐화 예제

💬 에러나는 이유?
매개변수를 private로 지정했기 때문이다.
class Time {
	private boolean am;
	private int hour;
	private int minute;
	private int second;

	Time(int hour, int minute, int second) {
		setHour(hour);
		setMinute(minute);
		setSecond(second);
	}
	public int getHour() {
		return hour;
	}

	public void setHour(int hour) {
		if(hour >= 0 && hour <= 23) {
			this.am = hour < 12;
			this.hour = hour % 12;
			if(this.hour == 0)
				this.hour = 12;
		}
	}
	public int getMinute() {
		return minute;
	}
	public void setMinute(int minute) {
		if(minute >=0 && minute <= 59) {
			this.minute = minute;
		}
	}
	public int getSecond() {
		return second;
	}
	public void setSecond(int second) {
		if(second >=0 && second <= 59) {
			this.second = second;
		}
	}
	void whatTime() {
		System.out.print(am ? "오전 " : "오후 ");
		System.out.println(hour + "시 " + minute + "분 " + second + "초 ");
	}
}

class JavaTest1 {
	public static void main(String[] args) {
		Time now = new Time(12, 34, 56);
		now.whatTime();
		now.hour = 34; // 에러
		now.setHour(34); // 거부
		now.setSecond(-25); // 거부
		now.whatTime();
		now.setHour(10); // 가능
		now.setMinute(45); // 가능
		now.whatTime();
	}
}

📝 cmd


⚡ 수정해보자!!!

📝 Time, JavaTest1 클래스

class Time {
	public boolean am;
	public int hour;
	public int minute;
	public int second;

	Time(int hour, int minute, int second) {
		setHour(hour);
		setMinute(minute);
		setSecond(second);
	}
	public int getHour() {
		return hour;
	}

	public void setHour(int hour) {
		if(hour >= 0 && hour <= 23) {
			this.am = hour < 12;
			this.hour = hour % 12;
			if(this.hour == 0)
				this.hour = 12;
		}
	}
	public int getMinute() {
		return minute;
	}
	public void setMinute(int minute) {
		if(minute >=0 && minute <= 59) {
			this.minute = minute;
		}
	}
	public int getSecond() {
		return second;
	}
	public void setSecond(int second) {
		if(second >=0 && second <= 59) {
			this.second = second;
		}
	}
	void whatTime() {
		System.out.print(am ? "오전 " : "오후 ");
		System.out.println(hour + "시 " + minute + "분 " + second + "초 ");
	}
}

class JavaTest1 {
	public static void main(String[] args) {
		Time now = new Time(12, 34, 56);
		now.whatTime();
		now.hour = 34; // 에러
		now.setHour(34); // 거부
		now.setSecond(-25); // 거부
		now.whatTime();
		now.setHour(10); // 가능
		now.setMinute(45); // 가능
		now.whatTime();
	}
}

📝 cmd

 

728x90
반응형

'Language > JAVA' 카테고리의 다른 글

JAVA 11일차 - 실습 문제 01 수정  (0) 2022.07.05
JAVA 11일차 - 실습 문제 01  (0) 2022.07.04
JAVA 10일차 - 예외 처리  (0) 2022.07.01
JAVA 10일차 - 마우스 이벤트 리스너  (0) 2022.07.01
JAVA 9일차 - 이벤트 리스너  (0) 2022.06.30

댓글