2020.10.22 일지
오늘의 요약
하단 내용은 복잡해도 무조건 외워야한다.
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("붕어빵은 "+손.이름+"를 ");
빵.배부르게하다();
}
}
Author And Source
이 문제에 관하여(2020.10.22 일지), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@peachy/study-004저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)