* 상수란(Invariable)?
* 변하지 않는 값 (원래 존재하는 값)
* 예) int a = 3; 여기서 대입되는 3이란 값이 상수다
*
* 변수란(Variable)?
* 값을 저장하는 공간 ( 값 = 상수 )
* 예) int a = 3; 정수형의 a라는 이름을 가진 변수를 선언과 동시에 3이라는 값으로 초기화
* 여기서 자바의 정수형은 아래와 같은 종류들이 있다
* byte : 8비트 정수형
* short : 16비트 정수형
* int : 32비트 정수형
* long int : 64비트 정수형
* 자바에서의 char 변수는 16비트의 유니코드(unicode)를 처리하므로 C언어의 char과
* 헷갈리면 안된다.
*
* 컴파일에러란? (Compilation error)
* 문법적인 오류로 인해 발생한 오류이다
* 1.키워드의 맞춤법이 틀리거나
* 2.필요한 문장 부호를 빠뜨리거나 예) ;를 빠뜨린다 (실제로 내가 제일 많이 하는 실수이다)
* 3.if 문을 먼저 사용하지 않고 End if 문을 사용하거나
* 4.선언되지 않은 변수(Variable)를 사용하는 것이다
*
* 런타임에러란? (Run-time error)
* 실행중 도중에 발생하는 오류이다
* 프로그램에서 수행할 수 없는 작업을 시도할 때 발생한다
* 설계미숙으로 인한 경우가 많다 (나는 아직 많이 미숙하다)
* 그 외에 기계적 결함에 의해서 발생하기도 하지만 정말 드문 일이라고 한다
* 1.0으로 나누는 경우
* 2.무한 루프에 빠지는 경우
* 3.Null point error (NPE는 순서만 바꿔도 피할 수 있다)
* 4.segmentation fault/bus error - 존재하지 않는 메모리 위치에 접근하려 할 때
*
* 논리에러란? (Logic error)
* 사용자가 의도한 작업을 프로그램에서 수행하지 못하는 오류이다
* 코드는 오류 없이 컴파일 및 실행될 수 있지만 작업 결과가 예상과 다를 수 있다
* 작성자가 예상한 알고리즘 등이 틀렸다는것을 나타낸다, 따라서 에러 메세지가 따로 나타나지 않아
* 오류를 교정하는 것이 어렵다. (디버깅으로 한줄씩 해보면 된다)
*
*
* 정수형 변수 선언 키워드
* byte,short,int,long
* 실수형 변수 선언 키워드
* float(소수7자리),double(소수15자리)
* 논리형 변수 선언 키워드
* boolean
* 문자형 변수 선언 키워드
* char (유니코드 : 2byte)
* 문자열 변수 선언 키워드
* 기초변수로 담을 수 없음 (String 클래스를 이용해야함)
* 관계 연산자
* 피연산자들의 관계를 연산, 결과값이 항상 boolean타입의 데이터 (true or false)
* 논리 연산자
* boolean 타입의 데이터에 대한 논리관계를 연산
* 논리관계
* and(&&) : 둘 다 true 일때만 결과값이 true 아니면 false
* 예) if (true && true) {
* System.out.println(1); // 실행
* }
* if (true && false) {
* System.out.println(2); // 실행 X
* }
* if (false && true) {
* System.out.println(3); // 실행 X
* }
* if (false && false) {
* System.out.println(4); // 실행 X
* }
* or(||) : 둘 중 하나만 true 이면 결과값이 true 아니면 false
* 예) if (true || true) {
* System.out.println(1); // 실행
* }
* if (true || false) {
* System.out.println(2); // 실행
* }
* if (false || true) {
* System.out.println(3); // 실행
* }
* if (false || false) {
* System.out.println(4); // 실행x
* }
* not(!) : true를 false로 false를 true로
예) if (!true) {
System.out.println(1);
}
if (!false) {
System.out.println(2);
}
}
* xor(^) : 둘이 같을떄는 false 다를때는 true
* 예) System.out.println( true ^ true ); // false
System.out.println( true ^ false ); // true
System.out.println( false ^ true ); // true
System.out.println( false ^ false ); // false
System.out.println( 5 ^ 6 ); // 3
*
* 형 변환 (Type casting)
* - 확대 변환(프로모션) : 더 큰 자료형으로의 변환
* - 축소 변환(디모션) : 더 작은 자료형으로의 변환 (정보손실이 발생할 수 있음)
* - 명시적 형변환 : 개발자가 형변환을 명시
* - 묵시적 형변환: 컴파일러가 자동으로 형변환
*
* 배열 : 같은 타입의 변수들의 집합
* - 배열로 묶인 변수들은 연속된메모리공간에 위치 (연속접근 용어)
* - 배열로 묶인 변수들은 컴퓨터 입장에서도 관련 있는 변수들
* - 같은 타입의 변수를 간단히 한번에 여러개 생성
*
* JVM의 메모리 공간
* - stack 영역 : 스택 메모리는 명령어 집합 ({}) 내에 선언된 지역변수들을 위한 공간,
* 필요한 공간의 크기를 컴파일시에 확정 (후입선출방식의 자료구조)
* - heap 영역 : 프로그램 실행 중 필요에 의해 동적 메모리 할당을 위한 공간 (객체들이 로딩된다)
*
* - static 영역 : 상수와 같은 데이터나 프로그램의 소스코드 , static 선언된 변수나 메소드 등의 공간
*
* 1~45 의 난수를 뽑는 방법
* (int)(Math.random() *45) + 1
*
* 메소드(함수)
* 명령어의 집합에 이름을 붙여 놓은 것
*
* 구조체
* 1개 이상의 자료형의 집합으로 이루어진 사용자 정의 자료형
*
* 클래스
* 관련있는 변수와 관련있는 함수를 모아 놓은 사용자 정의 자료형
* 객체를 정의해 놓은 설계도라고 할 수 있음
*
*
* 이름 규칙
* 클래스명 : 첫글자는 대문자
* 변수,메소드 : 소문자로 쓴다
* 상수 : 전체 다 대문자
*
* 단어와 단어를 연결해서 만들 경우 두번째 단어의 첫 글자는 대문자
* 예) 클래스명 : BlackWhite
* 변수 메소드 : inserData
* 주석 = //
*
*