[JAVA]초보를 위한 정리본

신동혁·2022년 8월 12일
0

JAVA

목록 보기
10/16

정리

일주일동안 배운 내용들을 java파일과 주석으로 정리했다.

유용한 코드 작성 단축키 정리

ctrl + space : 자동완성 기능과 비슷하다.
ctrl + shift + f : 자동 들여쓰기
ctrl + shift + o : 자동 import하기
ctrl + +/- : 화면 확대/축소

//<패키지 선언>
//패키지는 클래스 파일들의 묶음, 계층 구조를 만들어 효과적인 개발 및 관리를 위한 구조
package Baekjoon;

//<import>
//다른 패키지에 있는 클래스를 가져오고 싶을 때 사용
import Baekjoon2.Practice2;



//<클래스 정의>
//형식 : '접근제어자' + 'class' + '클래스명'
//클래스명은 대문자로 시작하는 것이 일반적이다.
//자바에서 모든 요소는 클래스 안에 있어야 한다.(패키지선언과 import문장제외)
public class Practice1 {
	
	//<멤버변수 선언>
	//카멜 표기법 : 변수,메서드 이름은 소문자로 시작해서 새로운 단어가 나올 때 대문자를 이용한다. ex)nameOfVariable	
	//형식(선언,초기화 동시에) : '자료형' + '변수명' + '=' + '변수값'
	//기본자료형 / 참조자료형 : int,long,double,float 등등 / String,[],만들어놓은클래스들
	//인스턴스변수 / 클래스변수 : 인스턴스가 생겼을 때 힙에리어에 할당/ 클래스가 메모리에 올라갈 때 메서드에리어에 할당
	//static의 큰 특징(클래스변수같이 객체와 무관한 상태를 만들어줄 때 사용)
	/*- 객체 생성 없이 사용할 수 있다.
	 *- 메서드에리어에 할당됨.
	 */
	int nameOfVariable; //인스턴스변수
	
	//<형변환>
	//명시적 형변환(downcasting) / 묵시적 형변환(upcasting) : 바이트가 큰 자료형에서 작은 자료형으로 / 바이트가 작은 자료형에서 큰 자료형으로
	int a=1;
	byte b=2;
	int upB=b; // 묵시적 형변환 : upB는 int(32bit)로 byte(8bit)를 그대로 받아도 널럴함.
	byte downA=(byte)a; // 명시적 형변환 : downA는 byte(8bit)로 int(32bit)를 그대로 받기에 부족하다. 그래서 강제 형변환을 해준다.
						//              이때 byte(8bit)를 넘는 부분의 자료손실이 생길 수 있다.
	
	String hiHello = "안녕"; //명시적 초기화 : 변수 선언과 초기화를 한 줄에 동시에 하는 것
	static int c=3; //클래스변수
	
	
	//<메서드 구현>
	//멤머변수를 사용하여 클래스 기능 구현
	//로컬 변수 : 메서드 안에서만 사용되는 변수로 메서드가 호출되면 스택에리어에 할당, 메서드 종료되면 스택에리어에서 삭제
	public String getHiHello() {
		return hiHello;
	}
	
	//void : 리턴값이 없는 메서드 구현할 때 사용하는 데이터타입
	public void printHello() {
		System.out.println("안녕하세요");
	}
	
	public static int addMethod(int n1,int n2) { //메서드에도 static을 사용해 객체 생성과 무관하게 메서드에리어에 저장되는 메서드 구현가능
		int result = n1+n2;
		return result;
	}
	
	
	//<생성자>
	//생성자가 하나도 없는 경우 자바에서 디폴트 생성자 제공
	Practice1(){}
	//<생성자 오버로드>
	//클래스에 생성자가 두 개 이상 제공되는 경우를 의미
	//this : 인스턴스 스스로를 가리키는 예약어
	Practice1(String hiHello){
		this.hiHello=hiHello; // =왼쪽,this.hihello는 생성된 인스턴스의 hiHello로 "안녕"으로 초기화된 변수를 의미하고
							  // =오른쪽,hiHello는 Practice1(String hiHello)생성자에서 매개변수로 받은 hiHello를 의미한다.
	}
	
	//<main()함수>
	//JVM이 프로그램을 실행하기 위해 호출하는 함수로, 클래스 내부에 있지만 클래스의 메서드는 아니다.
	public static void main(String[] args) {
		
		//addMethod를 실행했을 때 스택메모리 동작
		/*1.먼저 main()함수 밑에 있는 n1,n2,sum이 스택메모리에 생성
		* 2.addMethod함수 호출
		* 3.addMethod함수의 로컬변수 n1,n2,result가 스택메모리에 생성
		*   이때 생성된 n1,n2는 1번에서 생성된 n1,n2와 이름만 같을 뿐
		*   전혀 다른 메모리 공간을 사용하므로 서로 상관이 없다.
		* 4.addMethod함수 종료되면서 n1,n2,result가 스택메모리에서 삭제
		*/
		int n1=10;
		int n2=20;
		int sum=addMethod(n1,n2);
		
		//<클래스 생성하기>
		//new예약어를 이용해 생성한다.
		//형식 : '클래스자료형(클래스명)' + '객체이름' + '=' + 'new' + '생성자'
		//실제로 사용할 수 있도록 생성된 클래스를 인스턴스라고 부른다.
		//인스턴스를 가리키는 클래스형 변수(객체이름)를 참조변수라고 부른다.
		//참조변수는 스택메모리에 할당, 이 변수가 가리키는 인스턴스는 힙메모리에 할당
		//스택메모리에 할당된 참조변수에는 인스턴스가 할당된 힙메모리의 주소가 담겨있다.
		Practice1 instancePractice1 = new Practice1(); //instancePractice1가 참조변수, 이 변수가 생성된 인스턴스를 가리킨다.
		
		
		//<접근제어자>
		//public : 외부클래스에서 접근 가능
		//private : 외부클래스에서 접근 불가능
		String importCheck=Practice2.importCheckMethod(); //외부패키지를 import하고 해당 패키지 속 클래스 중 public으로 선언된 메서드 사용
														  //또한 static으로 선언되어 별도로 객체를 만들지 않고 사용 가능
		
//		String importCheck=Practice2.importCheckMethod2(); //위와 같이 import된 패키지 속 클래스 속 메서드를 이용하려 했지만 이 메서드는
													       //private처리가 되어있어 오류가 생긴다.
		
	}
}
profile
개발취준생

0개의 댓글