728x90
반응형
import javax.swing.*;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;
//클래스,메소드
public class third {
public static String glob = "I am Global!"; //전역 변수 선언
public static void main(String[] args) throws IOException {
IO_PS a2 = new IO_PS("A2"); //인스턴스 생성
other_method();
my_method();
a2.print(glob); //전역 변수 호출
second.str_conditional(); //다른 클래스에 존재하는 메소드 호출
}
//다른 메소드를 호출
public static int other_method() throws IOException
{
//class: System, Math, FileWriter
//instance: f1,f2
System.out.println(Math.PI);
System.out.println(Math.floor(1.8)); //올림
System.out.println(Math.ceil(1.8)); //내림
FileWriter f1 = new FileWriter("data.txt");
//상태를 가지고 있는 복제본(instance), 새로운 객체(class)를 생성
f1.write("Hello");
f1.write("JAVA");
f1.close();
return 0;
}
//메소드를 직접 제작
public static void my_method()
{
IO_PS a1 = new IO_PS("A1"); //인스턴스 생성
String delimeter = "****"; //지역변수
//print 메소드는 non-static이라서 인스턴스 생성후 사용
a1.print(delimeter); //메소드 호출 및 변수 삽입
a1.print(glob); //전역 변수 호출
int answer = a1.adder(3,5); //덧셈 메소드 호출 후 반환값 저장
a1.print(String.valueOf(answer)); //string 형태로 변환 뒤 출력
int new_answer;
}
}
class IO_PS
{
public String Init = "";
public IO_PS(String Init)
{
this.Init = Init; //this로 메소드안에 있는 변수를 가리킨다.
}
//print라는 메소드 선언
//static은 class 종속(IO_PS.print() 이렇게 사용)
//non-static의 경우 instance를 생성해서 사용해야 한다.(위의 a1.print())
public void print(String delimter)
{
System.out.println(delimter);
}
//덧셈 메소드 선언
public int adder(int x, int y) //static이 있으면 클래스에 종속됨
{
int ans = x+y + 20;
return ans;
}
}
- 메소드는 C언어, 파이썬의 함수와 같다.
- 인스턴스는 객체타입 변수명 = new 객체타입(); 으로 생성한다.
- 인스턴스는 특정 클래스를 복사해서 쓰는 것이다.
- new를 통해서 생성되기 때문에 인스턴스 객체 자체는 heap 메모리에 생성되고 call by reference로 메모리 주소값을 stack 영역에 저장한다.
- static 메소드는 class에 종속된다. 따라서 외부 호출 시 class명.메소드명 으로 호출한다.
- non static은 인스턴스를 생성해서 사용해야 한다.
- main 함수 밖에서 생성된 변수는 전역 변수이다.
- 생성자는 new 연산자를 통해서 인스턴스 생성 시 가장 먼저 호출되고 실행되는 메소드
- 생성자는 클래스 이름과 메소드 이름을 동일하게 해주면 된다.
- this를 사용해서 메소드 안에 있는 객체를 특정한다. 생성자와 메소드의 매개변수 이름이 필드와 동일한 경우 인스턴스 멤버인 필드임을 명시하고자 할 때 사용한다.
- 쉽게 생각하면 static들은 인스턴스를 생성하면 원본 클래스에 연결된 형태이다. 따라서 외부에서 값을 변경할 수 있다.
- non - static 변수들은 인스턴스 생성 시 원본 클래스의 객체를 복사해서 인스턴스에 새롭게 만든다. 따라서 원본에 영향을 미치지 않는다.
- static 메소드들은 클래스명으로 접근해야 하고, non-static 메소드들은 인스턴스를 생성 후 접근 가능하다.
728x90
반응형
'Programming languages > JAVA' 카테고리의 다른 글
자바 기초 (0) | 2023.04.16 |
---|---|
5. 접근 제어자, 추상(abstract), 인터페이스 (0) | 2023.01.29 |
4. 오버로딩, 오버라이딩, 상속 (0) | 2023.01.29 |
2. 조건문, 반복문,배열 (0) | 2023.01.25 |
1. 변수, 주석, 형변환, 연산자 (0) | 2023.01.25 |