상수 : 항상 유지되는 수 (변하지 않는 수) 변수의 상수화 : 변수에 저장된 값을 변경하지 않고 상수처럼 사용함 변수를 상수화시키면 초기화 이후 값을 바꿀 수 없다. 상수화 방법 final 자료형 변수명 = 값; 상수의 변수명은 모든 글자를 대문자로 쓰는 게 좋다. 개발자들 간의 예의이자 약속 public class Prca { public static void main(String[] args) { int a = 3; a = 4; // 변수이니 가능 final double PI = 3.14; PI = 3.15; // 상수이니 불가능 } }
형변환 : 변수나 상수의 데이터 타입을 다른 타입으로 변환하는 것 형변환의 종류 - 자동 형변환 (묵시적 형변환) : 자동으로 타입이 변환되는 것 - 강제 형변환 (명시적 형변환) : 코드 상 강제로 형식을 변환시키는 것 강제형변환 방법 (자료형)변수명; public class DataType { public static void main(String[] args) { int a = 65; float f = a; // 자동형변환 System.out.println(f); char c = (char)a; // 강제형변환 (명시적 형변환) System.out.println(c); // 참고 // 컴퓨터는 문자를 저장할 수 없다 // 따라서 문자마다 고유한 숫자값을 부여했는데 // 그 숫자가 바로 문자의 아스키..
자료형 : 자료(data)가 가질 수 있는 정수, 실수, 문자 논리 등 형식 자료형 바이트(Byte) 예시 정수형 int, long, short 4, 8, 2 1, 0, -1, 2, 100 실수형 float, double 4, 8 3.14f, 3.14 문자형 char 2 'a', 'A' 문자열 String (문자열 길이에 따라 달라짐) "hello", "A" 논리형 boolean 1 true, false public class VarTest { public static void main(String[] args) { // 정수형 변수 int i = 100; // 실수형 변수 float f = 3.14f; double d = 3.14; // 문자형 변수 char c = 'a'; // 문자열 변수 Strin..
변수명을 작성할 때 유의사항 - 숫자로 시작할 수 없다 - 특수문자 사용이 불가능하며,$와 _만 가능하다 - 대소문자를 구분한다 - 이미 사용하고 있는 예약어는 사용할 수 없다. 변수명 작성 방법의 종류 - 헝가리안 표기법 : 변수에 자료형을 구분할 수 있는 접두사 달아 표기 ex) int num; --> int iNum; - 카멜 표기법 : 두 개 이상의 단어가 사용될 경우, 두 번째 단어의 시작은 대문자. (마치 낙타(카멜) 등처럼) ex) int newName; - 파스칼 표기법 : 클래스명 작성시, 모든 단어의 첫 글자를 대문자로 ex) class MyClass
(지금 포인터란 개념이 어려워도 스트레스 받지 말자. 많이 접하다 보면 익숙해진다.) 포인터란 무엇일까? 일상생활에서의 포인터는 어떤 화면을 가리키는 불빛이 나오는 물건 등으로 생각할 수 있다. 프로그래밍에서도 같은 의미로 쓰인다. 다시 말해, 프로그래밍에서 포인터는 '어떤 변수를 가리키는 변수'이다. 그럼 가리킨다는 의미란 무엇일까? 손가락도 없는데 어떻게 가리킨다는 것일까? 이를 알기 위해서는 주소값이란 개념을 알아야 한다. 모든 변수는 자체의 값만이 아니라, 주소값도 가지게 된다. 변수의 주소값은 컴퓨터에 의해 임의로 정해진다. 우리는 주소값을 이용하여 어떤 변수를 가리키게 하고, 한 변수의 값을 다른 변수로 바꿀 수 있다. 주소값을 이용해서 어떤 변수를 가리키게 하기 위해 우리는 포..
#include int main(void) { char str[] = "Hello World!"; printf("str = %s\n", str); printf("str의 크기 : %d\n", sizeof(str)); // 왜 13이라고 나올까? printf("%d\n", sizeof("Hello")); // 왜 6이라고 나올까? return 0; } 위 코드에서 str의 크기는 왜 13이 나오고 Hello의 크기는 왜 6이 나올까? 그 답은, 항상 문자열의 끝에는 우리가 원하지 않아도 널 문자란 것이 붙기 때문이다. null 문자는 말 그대로 빈 문자란 뜻이다. 문자열 배열에서 null ( '\0' ) 문자는 문자열의 끝을 알기 위해서 쓰는 것이다. #include int main(void) { ch..
Sleep() 말 그대로 정해진 시간동안 잠자게 하는(?) 함수 일정 시간동안 프로그램을 정지시킬 때 사용하는 함수 windows.h헤더파일 안에 있다. ms(밀리세컨드) 단위이기 때문에 1초를 정지시키기 위해서는 Sleep(1000) 으로 입력해야 한다. #include #include #include < int main(void) { while (1) { printf("hello!\n"); Sleep(1000); } return 0; } tmi 이 함수가 왜 C언어에서 time.h 헤더파일에 있지 않고 windows.h 헤더파일에 포함되어 있느냐? 그 이유는 "Sleep함수는 C언어의 런타임 함수가 아닌 Windows 운영체제의 API 함수이기 때문이다."라고 설명할 수 있다. system() 시스템..
gets()와 fgets() 함수는 말 그대로 문자열을 입력받는 함수이다. "입력받을 땐 scanf 함수를 쓰면 되지, 왜 굳이 저 함수를 쓰는 것일까?" scanf( ) 를 이용해 문장을 입력받으면, 첫 번째 단어까지만 저장되지만 gets( )와 fgets( ) 를 사용하면 공백문자가 포함되어있는 문장을 입력받아 저장할 수 있다. 무슨 뜻이나면, Hello World!를 scanf로 입력받으면 사실상 Hello 까지만 입력된다. 하지만 gets와 fgets는 Hello World! 문장이 전체 입력된다. "위 두 함수의 차이는 무엇일까?" gets()를 쓰면 확실히 문장 구성은 간단하지만, 마련해놓은 배열의 길이를 넘어서면 할당 받지 않은 메모리 공간을 침범할 수도 있다. 그래서 가급적이면 ..
#include int main(void) { int arr[5] = {12, 44, 34, 76, 18}; int max,min; max = arr[0]; min = arr[0]; for(int i = 0; i max) max = arr[i]; if(arr[i] < min) min = arr[i]; } printf("최댓값 : %d\n",max); printf("최솟값 : %d\n",min); return 0; }