Variable(변수)
: 하나의 값을 저장할 수 있는 기억공간으로, 변하는 데이터의 집합이다.
Data type(변수타입)
: 기본타입과 클래스타입으로 구분된다.
1byte = 8bit
정수형 데이터타입인 byte, short, int, long는 크기별로 나뉜다
, 즉 데이터처리 양이 다르다.
실수형 데이터타입인 float과 double도 크기별로 나뉜다.
문자형 데이터타입인 char을 제외한 모든 타입들 맨 앞엔 S(sign)bit가 필요하다.(논리형타입 boolean도 제외)
cf) sign에서 0일 경우 양수
, 1일 경우 음수
cf) charset에서 a는 97
, A는 65
, 문자 0은 48
이다.
cf) 우선 기본타입 8가지와 클래스 타입 중 하나인 String타입까지 알고있자.
cf) 클래스 타입은 4바이트
이다.
int타입과 float타입은 같은 4바이트크기지만 float타입이 더 많은 데이터를 표시
할 수 있다.두 코드는 같은 코딩이다,
전자를 나쁜코드, 후자를 좋은 코드라고 한다. 둘의 차이점은 가독성! 그러니 후자를 쓰자!
변수 안에는 데이터(값) 하나만 저장 가능하다.
int타입의 score라는 (지역)변수에는 1이 할당된 후 2가 할당되었다. score변수에 1은 존재하지않는다.
public static void main(String[] args) {}
main : method들을 갖고 있는 원소의 집합이다.
{} : block, 집합을 나타냄.
즉, {}안에 있는 명령문을 원소로 가지는 집합A를 main이라고 하겠다는 뜻이다.
API(Application Programming Interface)
: 공개되어있어서 앱을 프로그래밍할 때 가져다 쓸 수 있는 것을 말한다.
cf) method = 함수 = function
ex) y=2x+1, x값을 parameter(매개변수)
라 하고 y값을 return값
이라고 한다.
int score = 100;
//고객이 정한 마땅한 초기값이 없을 경우 기본값으로, 있다면 그 값으로 초기화(할당)한다.
System.out.println(100);
//println() 메소드에 parameter로 100(상수)을 값으로 넣었다.
System.out.println(score);
//파라미터에 데이터(객체)나 변수를 써도 된다.
System.out.println(100+1); //101
//수식(expression)도 가능하다. VM은 수식을 계산하고 println에 전달한다.
System.out.println(Math.random());
//random() 메소드는 실행할 때마다 랜덤값(0이상 1미만의 더블타입 값)을 출력해준다.
//method를 call했다고 한다, 즉 Math클래스 안에 있는 random() 메소드를 호출한 것이다.
▶ parameter로 상수, 변수, 수식, 호출문 모두 가능하다.
System.out.print(200);
System.out.print(300); //두 줄 실행결과 : 200300
//println과 print의 차이 : 줄바꿈이다, 즉 print() 메소드는 200300으로 줄이 바뀌지 않을 채 출력된다.
System.out.print("\n"); //print() 메소드를 이용한 줄바꿈
//\n은 엔터를 나타내는 문자다. 우리는 못보지만 엔터를 칠 때 \n이라는 문자가 입력되고 있다.
System.out.print(400);
//printf() 메소드에서 f는 format의 약자로 포멧을 지정할 수 있다.
System.out.printf("%b, %c, %d, %f, %s", true, 'a', 10, 1.15, "hello")
//%는 printf() 메소드 만든 사람이 쓰라고 지정한 것. API 알고지금에 왜를 달지말자.
//순서대로 boolean, char, decimal, float, String으로 printf() 메소드에서 정수형 타입은 %d를 사용한다.
//char타입에는 ''를 String타입에는 ""를 양끝에 써준다.
//'a'는 complier가 97로 읽는다. cf) 'A'는 65, 문자'0'은 48
System.out.printf("%b, %c, %d, %f, %s", true, 'a', 10, 1.15, "hello");
//true, a, 10, 1.150000, hello
System.out.print("\n");
System.out.printf("%.1f", 1.15); //1.2
//%f는 소수점 자리를 지정할 수 있다.
//%.1f일 경우 소수점 첫번째 자리까지만 출력된다.
System.out.printf("%5b%5c", true, 'a'); // true, a
//자리수 조절이 가능하다. // -를 붙일 경우 왼쪽정렬이 된다.
System.out.printf("%b, %c, %d, %f, %s\n", true, 'a', 10, 1.15, "hello");
//형식 중 엔터문자를 넣어서 줄바꿈을 할 수도 있다.
System.out.printf("%5b,%-5c,%d,%5.2f,%5s", true, 'a', 10, 1.15, "ear");
// true,a ,10, 1.15, ear
String name = "최한석";
int age = 22;
System.out.printf("\n%s은 %d살입니다.", name, age); //최한석은 22살입니다.
System.out.printf("\n%s은 %d살입니다.", "한아름", 12); //한아름은 12살입니다.
System.out.println();//그냥 줄바꾸기 위한 한 줄.
System.out.println(name + "은 " + age + "살입니다.");
//여기서 +는 더하기 연산자가 아니라 붙이기연산자(concat operator)다.
//피연산자 중 하나라도 String타입이 있으면 +는 붙이기연산자(concat operator)가 된다.
//모두 숫자일 경우 더하기 연산자다.
#########################
cf) 용어정리
초기화
: 다른 쓰레기값이 들어가지 않게 기본값을 할당한다.
Operator(연산자)
: "="는 연산자 중 하나인 assign operator(할당연산자)
이다.
ex) int score = 1;
할당연산자 오른쪽의 값(1)을 할당연산자 왼쪽(int타입 score변수)에 복사해서 할당하겠단 의미이다.
cf) 연산자와 데이터가 같이 있으면 데이터를 먼저 처리한다.
cf) command = statement = script
: 모두 코딩을 일컫는 용어
(관점의 차이)
command 상에서 ";"는 마침표 역할을 한다.
cf) programming = coding + algorithm
cf) code smell
: 가독성 좋은 코드는 좋은 냄새, 나쁜 코드는 악취가 난다고 한다.
Comment(주석)
Complie Error
: Complier가 에러를 표시하는 것으로 코드에 빨간줄로 표시된다.
Runtime Error
: VM이 에러를 표시하는 것으로 Console창에 에러를 표시한다.
Error
: 물리적으로 앱 작동하지 않는 것을 의미한다.
Bug
: 앱은 작동하지만 알고리즘대로 작동하지 않는 것을 의미한다.
cf) 이클립스에서 Class파일을 만들때 Class명은 대문자로 시작
해야한다(관례).