2020.10.22 일지

0후·2020년 10월 22일
0

비트캠프

목록 보기
4/112

오늘의 요약

하단 내용은 복잡해도 무조건 외워야한다.


1. 변수=변데이터(Variable) // 큰 의미의 변수
	(1) 유효범위
		1) 멤버변수(==전역) // 의 특징
			<1> 클래스소속
			<2> 객체소속 
			// 현실에서 아름다운 여인이라는 말을 자바에서는 여인.아름다운으로 바꿀 수 있다.
		2) 지역변수 // 의 특징
			<1> 선언초기화
			<2> 파라미터 (매개변수==아규먼트) 
	(2) 소유( static 여부에 따라 달라짐 ) 
		1) 클래스 소유 ( static 이 붙은 것은 클래스 소유 ) // == 정적(Static) == 바뀌지 않음 == 클래스 변수 == 공유 변수
		2) 객체 소유 ( no static 인 것은 객체 소유 ) // == 동적(Dynamic) == 바뀜 == 객체 변수 == 
		// 인스턴스 (찍어낸 결과물, 객체와 뉘앙스가 다름, 그러나 디바이스를 벗어날 수 없기 때문에 이 디바이스를 벗어나지 않는 한 두개는 같은 개념으로 간주한다. 메모리 관점에서 객체관점이 많음)
	(3) 변경( final 여부 ) 
		1) 상수 ( Constance )
		2) 변수 ( Variable ) // 작은 의미의 변수
	(4) 메모리 저장방식 
		1) 기본형(==원시데이터변수==primitive type) 8가지
			<1> call by value : 호출하면 값이 바로 튀어나오는 것
			<2> 형태 : 소문자로 시작
			<3> 종류 // 얘네끼리 연산을 하는데 연산하면 같은 형태로만 해야 함 
				// ▶ 순으로 형변환이 됨 
				byte(1)short(2)int(4)long(8)float(4)double(8)
						   char(2)boolean(1) 
				// 얘는 형변환을 유일하게 할 수 없음, 얘만 씀, 독보적인 아이임

			<4> 담을 수 있는 값의 범위
				1> byte: -2^7 ~ 2^7-1 (경우의수: 2^8) // -128~127
				2> short: -2^15 ~ 2^15-1 (경우의수: 2^16)
				3> char: 0 ~ 2^16-1 (경우의수: 2^16) // ASCII 코드에는 음수가 없음
				4> int: -2^31 ~ 2^31-1 (경우의수: 2^32)
				5> long: -2^63 ~ 2^63-1 (경우의수: 2^64) // 전 지구상의 모든 돈의 단위를 long이 저장할 수 있음
				6> float
				7> double
				8> boolean: false | true
			
			<5> 형변환(Type Casting)
				1> 자동(암시적/Implicit) by ?
				// 형변환을 표시해줘야하는데 자동으로 JVM에 의해 형변환이 되기 때문에 자동 형변환이라고 함
				-> 범위가 작은 Type ▶ 큰 Type
				2> 강제(명시적/Explicit) by ?
			
			<6> 예외 형변환
				-> 정수형타입(byte, short, char, int)끼리의 연산의 결과는 무조건 int로 나옴 // 그룹임, 얘네끼리의 연산은 결과가 무조건 int로 나옴
				// char 부분은 아직 이해가 잘 안감
				
			<7> 초기값
				-> 정수(0, 0L), 실수(0.0f, 0.0) // 0L에서 L, 0.0f에서 f를, 0.0d에서 d를 생략해주지만, 있다고 생각하는게 좋다 

			<8> 존재이유: 기본 8가지 변수를 뽑아놓은 이유가, 실행의 효율성을 위해서다. 
				// 자세한 이유는 하단에 있음
				int -> Integer // 오른쪽은 Heap에 만들어지는 것
				double -> Double // 오른쪽은 Heap에 만들어지는 것
				boolean -> Boolean // 오른쪽은 Heap에 만들어지는 것
				// 위처럼 하는게 비효율적인 것인거다.
				// 자바는 완벽한 객체지향 언어, 이 말인 즉슨, 모든 타입을 객체화 시킬 수 있다

		2) 참조형(==레퍼런스변수==reference type)
			<1> call by reference
			<2> 형태 : 대문자로 시작
			<3> 종류 : 기본형(8가지)를 제외한 모든 타입(무한대)
			<4> 초기값 : null
			<5> 형변환 

	cf) 배열변수
	-> 배열을 저장하는 변수 

변수찾기 연습 (별표 참고)

class 붕어빵 {
	String 앙꼬; // ★ 앙꼬 : 멤버, 객체소속, 변수, 참조
	붕어빵() {
		앙꼬 = "팥";
	}
	붕어빵(String 앙꼬) { // ★ 앙꼬 : 지역(파라미터), 변수, 참조형
		this.앙꼬 = 앙꼬;
	}
	void 배부르게하다() {
		System.out.println("배부르게 한다");
	}
}

class 아줌마 {
	int 나이;
	붕어빵 빵1,2;
	아줌마() {
		나이 = 40; // ★ 나이 : 멤버, 객체소속, 변수, 기본형
	}
	void 굽는다() {1 = new 붕어빵();2 = new 붕어빵("설탕");
		System.out.println("붕어빵을 구웠다");
	}
}

class 손님 {
	int= 1000;
	String 이름 = "철수";

	붕어빵 구매한다(붕어빵 빵) { // ★ 빵 : 지역(파라미터), 변수, 참조형=- 300; // ★ 돈 : 멤버, 객체소속, 변수, 기본형

		return;
	}
}

class{
	public static void main(String[] args) // ★ args : 지역(파라미터), 변수, 참조형, 배열변수
	{
		아줌마 주인 = new 아줌마(); // ★ 주인 : 지역(선언초기화), 변수, 참조형
		System.out.print("나이가 " + 주인.나이 + "세인 아줌마가 ");
		System.out.println("붕어빵을 구웠다");
		주인.굽는다();
		System.out.print("첫번째 붕어빵의 앙꼬는 " + 주인.1.앙꼬 + "이고, ");
		System.out.print("두번째 붕어빵의 앙꼬는 " + 주인.2.앙꼬 + "이다.");
		System.out.println();

		손님 손 = new 손님();
		붕어빵 빵 =.구매한다(주인.1);
		System.out.println(.이름+"가 붕어빵(앙꼬:"+.앙꼬+")을 구매하고, "+.+"원이 남았어요");
		// 이름 : 멤버, 객체소속, 변수, 참조형(붕어빵.java로 가서 손님의 이름이라는 걸 보고 String임을 확인 후 알 수 있는 것임)
		System.out.print("붕어빵은 "+.이름+"를 ");.배부르게하다();
	}
}
profile
휘발방지

0개의 댓글