#0314_자바_프로그래밍_교육_2일차
자바는 변수 선언 시 데이터타입을 명시하여 변수의 타입을 제한한다.
javascript나 python에서는 var 키워드를 사용해 변수 선언 시 타입에 제한을 두지 않기도 한다.
기본형 (원시 타입, Primitive Data Type)
분류 | 자료형 | 기본값 | 대표 자료형 | |
문자 | char | '\u0000(빈문자 1개) | ||
숫자 | 정수 | byte, short, int, long | 0, 0, 0, 0L | int |
실수 | double, float | 0.0f, 0.0d | double | |
논리형 | boolean(true/false) | false |
클래스 데이터 타입 (Class Data Type, Reference Data Type)
참고 > 2021.08.26 - [JAVA/자바 기본] - [JAVA] 자바 자료형, Integer와 int의 차이에 대해
* 디렉터리와 패키지, 폴더 모두 의미이다. 하지만 경로 포기 시 조금 다른 점이 있다.
소스코드 : com...XX.java
파일경로 : src.com...XX.java
전체 경로 모두 포기하는 파일 경로와 다르게 소스코드의 위치를 나타낼 땐 src 패키지는 제외하고 표기해도 된다. 소스코드는 모두 src 패키지 아래 존재하기 때문이다.
로컬 변수(temporary variable)
메서드 블럭 안에서 선언한 변수로 메서드의 생명주기와 같이 한다. 메서드 시작 시 생성되어 종료 시 소멸된다. 로컬 변수는 기본값이 없다.
필드(field)
클래스 내 메서드 밖에 선언된 변수로 클래스 내 어디서나 사용 가능하다.
public class A{
int i;
public method1 {
sysout(i); // (X) 아직 메모리에 올라가지 않아 사용 불가
}
public method2 {
A a = new A(); // 변수 생성, 초기화 후
sysout(a.i); // (O) 사용 가능
}
}
[참고] 자바 _인스턴스 변수, 로컬 변수, 클래스 변수_ 변수 다 모엿!! https://itellyhood.tistory.com/32
논리연산자 &&(논리곱)와 &(곱)의 차이
논리연산자 ||(논리합)와 |(합)의 차이
그냥 합과 곱은 연산자 앞 뒤 문장 모두 실행하기에 컴파일시 문제가 되는 문장이 있으면 예외가 발생한다. 논리합과 논리곱은 앞의 문장이 조건이 충족되면 뒤의 문장은 실행하지 않는다. 따라서 주로 예외 발생 가능한 문장은 논리합과 논리곱 뒤에 배치한다.
** 이해는 잘 안가지만 나는 이런 경우 예시를 다음과 같이 판단했다. (논리합)
값이 있는지 확인 후 값을 판단해야할때 값이 있는지를 A에 넣고 그 값에 대한 판단(크기나 동치비교)은 B에 넣는다. 만약 A에 값을 판단하는 문장이 오거나 그냥 조건문에 연산자 없이 바로 온다면, 값이 없을 때 오류가 날 것이다. 먼저 값이 있는지 체크 후 그 조건을 만족시킨다면 그 다음 그 값이 맞는 값인지 판단하는 것이다. 즉, 조건을 걸 때 A > B 순으로 확인을 해야한다면 이렇게 하는게 좋지 않을까..
그리고 속도 측면에서 아주 미세한 차이로 논리합, 논리곱이 그냥 합과 곱보다 빠르다고 한다.
캡슐화(Encapsulation)
데이터 보호를 위해 외부에서 값에 바로 접근하지 못하도록 감싸는 것이다.
클래스 내부 멤버에는 바로 접근하지 못한다. 외부에서 public 메서드들을 통해 내부 멤버에 접근할 수 있다.
배열(Array)
같은 데이터 타입을 가진 여러 값들이 하나의 변수를 통해 처리된다.
int [] arr; // 1. 배열 선언
arr = new int[3]; // 2. 배열 생성(크기 명시)
int [] arr = new int[3]; // 1+2 선언과 생성
int[] arr = {1, 2, 3};
int arr1[] = {1, 2, 3};
int arr2[] = {'a', 'b'};
arr1 = arr2;
Stack에는 arr1과 arr2 배열을 위한 공간에 초기화된 값이 모두 저장되어있다. 하지만 arr1=arr2를 통해 arr1에는 기존의 Stack에서의 arr1 주소값이 arr2의 Stack 주소값으로 업데이트된다. 이때 Stack의 arr1에 대한 참조는 끊기게 되지만 값은 계속 남아있는다. 이런 값은 쓰레기값이라 하며 GC에 의해 해제된다.
[JAVA] 자바 프로그래밍 교육 4일차 (0) | 2023.03.27 |
---|---|
[JAVA] 자바 프로그래밍 교육 3일차 (0) | 2023.03.27 |
[JAVA] 자바 프로그래밍 교육 1일차 (0) | 2023.03.13 |
[JAVA] 컬렉션 프레임워크(3) 맵 Map | HashMap, TreeMap, LinkedHashMap (0) | 2022.03.08 |
[JAVA] 컬렉션 프레임워크(2) 집합 Set | HashSet, TreeSet (0) | 2022.03.08 |
댓글 영역