과목명 차시명 초보자를위한 Java 프로그래밍 4 차시. java 언어의기초 목차 1. 자바식별자 2. 키워드 3. 자바타입
본학습내용 1. 자바식별자 (1) 개요자바식별자라는것은클래스이름, 메소드이름, 변수등의이름을설정하는것을이야기합니다. 길이의제한은없으나사용을하게되면자바언어에서이해를못하는것들이있습니다. (2) 식별자가어떻게쓰이나요? 예 ) int aaa 위는 aaa 라는식별자를 integer 로명하겠다 라는뜻입니다. TV 방송에서도여러가지프로그램이있는데거기서드라마, 코미디등으로나누어지는것을볼수있습니다. 드라마부분등에서도 슬픔이여안녕 등등의식으로프로그램이름이지어지게되는데이것이바로식별자입니다. 슬픔이여안녕이라는단어를들으면 아드라마방송이구나 하고생각을할것입니다. 이와같이위의예시에서 aaa 를보면 아 integer 구나 하고생각을할수있습니다. 이제보다식별자에대해이해가쉽게되실것입니다. (3) 식별자로쓸수없는것은무엇인가요? 무조건식별자로다쓰는것은아닙니다. 1 space 나 \t, \n 등은올수없습니다. 예 ) user name user\nname 2 처음글자가숫자로는될수없습니다. 예 ) 4username 3 자바에서사용되는키워드는사용될수없습니다. 예 ) int 4 # 을앞에붙여서는사용을할수없습니다. 예 ) #username
**** 잠깐! 쉬어가기 \n,\t 이것은무엇일까요? \n 은계행문자로써라인을바꿀때쓰는것입니다. 일반적으로집어넣을수도있습니다. 우리가글씨를치다가 enter 를치게될때맨마지막에자동으로 \n 이들어가는것을볼수있습니다.\t 이것은 tab 입니다. 글씨를치다가 tab 키를치시면워드에서자동으로 \t 가들어갑니다.
2. 키워드 (1) 키워드는자바프로그램이먼저사용을하고있는식별자 abstract boolean break byte case catch char class * const continue default do double else extends final finally float for * goto if implements import instanceof int interface long native new package private protected public return short static super switch synchronized this throw throws * transient try void volatile while 많은종류가있지만일부러외울필요는없으며저절로알게됩니다. **** 잠깐! 쉬어가기보통식별자를할때에는자신이알수있는변수등을사용합니다. 만일메뉴에서나가기와삽입하기를식별자로명칭한다면 menu_insert, menu_exit 이런식으로누가봐도알수있는식별자를사용합니다. 예전개발자들은 01, 02, 03 이런식을쓰기도했습니다. 이역시자신들이알수있는코드를사용한것입니다.
3. 자바타입 (1) 개요 자바타입이라고이름은명했지만대부분의언어에서동일하게사용됩니다. (2) 기본형 기본자료타입 : Boolean 숫자 (number) 정수형 (integer) byte short char int long 실수형 (f loating) float double 레퍼런스타입 : 클래스, 인터페이스, 배열 위에서보면기본자료타입이라는것은말그대로기본적을이야기합니다. boolean이라는것은참 / 거짓을이야기합니다. 프로그램에서는 true, false로구분이됩니다. 숫자를보면 byte라는것을볼수있습니다. 우리가보통쓰고있는한글은 2byte입니다. 즉 2개가합쳐져서한개의문자를나타내는겁니다. 영어, 숫자등은 1byte문자열이라고합니다만일 String name = 우리나라 ; 이렇게하면식별자는 name이고 name이라는식별자에우리나라를넣으라는말입니다. 여기서 name의길이를구하고싶을때 name.length() 이렇게하면 4라고나옵니다. 맞는것같지만전산에서는 4개가아니라 8개입니다. 즉 1byte가기본단위인것입니다. 그래서 name.getbytes().length라고해야실제길이가얻어지게됩니다.
(3) 한개의타입을쓰면되지왜여러개로나눌까요? 크기가한정된방이있습니다. 우선그방에다가차례대로그릇을놓는다고가정해봅시다. 그리고그그릇에과자를넣어봅시다. 새우깡한개를소쿠리에넣어서방에다가넣으면아마소쿠리를몇개넣지도못하고더이상자리가없을것입니다이번에는새우깡을아주작은그릇에넣어봅시다. 그러면아주많은그릇을방에넣을수있을것입니다. 이처럼무엇인가를담아야하는데작은데이터를큰그릇에넣을필요는없을것입니다. 그래서같은숫자라도나누어지게되는겁니다. (4) 기본자료타입 유형 값 디폴트값 크기 최소값 최대값 Boolean True / false false 1bit 없음 없음 Char 유니코드문자 \u0000 16bit \u0000 \u0000 Byte 부호있는정수 0 8bit -128 127 Short 부호있는정수 0 16bit -32758 32768 Int 부호있는정수 0 32bit -2147483648 2147483647 Long 부호있는정수 0 64bit Float 플로팅포인트 0.0 32bit Double 플로팅포인트 0.0 64bit **** 잠깐! 쉬어가기 8bit 가어떻게 128 이나올까요? 2**8 입니다. 즉 2*2=4; 4*2 = 8; 8 * 2 = 16; 16*2 = 32 ; 32*2 = 64 ; 64 * 2 = 128 이렇게계산이됩니다. 그리고부호가있으므로 -/+ 가있고 0 이라는중요한값이존재하므로 + 쪽은 127 이됩니다. Long 은얼마가나올지는각자여러분들이계산해보십시오. int타입 Int 32비티정수타입 -2**23 ~ 2**23-1 의값입니다. 예 ) test 실행방법 1) 도스창을여시고 2) Javac Inttest Java Inttest결과하면 28 * 5 = 140
28 / 5 = 5 25 / 5 = 5 한가지유의하실점은, 28/5 를하면 5.6~~ 이렇게소수점이나옵니다. 그러나 int 형에서는 소수점을가지고있지않아서보이지않습니다. 꼭기억하십시오. int 형은소수점이없으므로나머지가나오지않습니다. 1 byte, short type - byte 는 -2**7 ~ 2**7-1( ~ ) 까지이므로큰값을넣으시면안됩니다. 2 float dluble연산 이는플로팅포인트타입이라고하는데그냥소수점을표현할때사용을한다고생각하시면됩니다. 여러분이사용하고있는 msword나아래아한글을보면모두버전이 v1.0.0 이런식으로소수점이포함되어있음을알수있을것입니다. < 1.0.1 이것은금방알수있듯이언어에서는하나의문자에지나지않습니다. 이때플로팅포인트를사용하여숫자화시키면크기비교가가능해집니다.> 예 ) * 실행방법메모장에서입력완료 java로저장 ( 대소문자확인바람 )cmd창을열어저장되어있는곳으로이동 javac java 실행결과 Float1 = 28 / 5 = 5.0 Float1 = 28 / 5.0 = 5.6 Int3 = 28 / 5 = 5 다시한번소스를간략하게설명하겠습니다. class이름이며전부다사용하므로처음시작하는곳을만들어야합니다. main을만들고 int1이라는식별자를만듭니다. 이식별자의속성은 int 나머지와도동일합니다. System 으로 out 출력을하면 println을하나씩찍으면서라인을 skip해달라고합니다. + 표기는연결을의미합니다. (5) 레퍼런스타입
1 래퍼런스타입은누군가가여러가지속성을지고있는 class를활당받는다고생각하면됩니다. 예 ) 집을이야기해봅시다. 위에서보았던기본타입은그냥밥그릇을이야기했습니다. 그밥그릇이어디를가던그것은밥그릇입니다. 이번에배우는래퍼런스는아파트번지와도같습니다. 모두똑같이생긴아파트의층층집에살고있지만우리는식별자를두어서각각의집에호수를지정하였습니다. 몇호에있는방개수 와같이지정을하는것입니다. 이를실재 java에서보면 String 몇호 = 아파트 ; System.out.println( 몇호. 방객수 ); 이렇게출력을하면방의개수가출력이됩니다. 예 ) int a = 20; Car mycar = new Car(); System.out.println(mycar.model); System.out.println(mycar.speed); System.out.println(mycar.cost); System.out.println(mycar.color); Class Car{ String model; int model; color model; 레퍼런스변수라는것은 class 라는집단을대신하는변수입니다. **** 잠깐! 쉬어가기잠깐! 쉬어가기 class 라는개념의이해가되어야래퍼런스도이해가가능합니다. 래퍼런스는 class( 변수, 함수등을자지고있는 java) 라는식별자로받을수있는아이입니다. 위에서 test 했던소수가모두 class 입니다. 이들을모두연결할수있습니다. class 에대한이야기는계속반복됨으로이후에모두이해가되실겁니다. 너무조급해하지는마십시오.
두개의래퍼런스변수를선언해보겠습니다. Class Car Car a = new Car(); Car b = new Car(); 이렇게선언을하면결과 : 레퍼런스 2 개객체 2 개입니다. 여기에서 Car c = b 라고한다면 결과 : 래퍼런스 3 개객체 2 개입니다. 다시 c= null; 이렇게하면 결과 : 래퍼런스 2 개객체 2 개이렇게됩니다. 3-5-2. 배열배열이라는것은이름을써놓은컵과같습니다. 자신의집에컵이 7 개가있습니다. 모두같은모양에같은색입니다. 물을담은컵, 커피를담은컵, 주스를담은컵등다양하게있습니다. 여기서여러분이먹고싶은음료가들은컵을들어마실수있습니다. 바로이것이배열입니다 Int cup[] = new int[7]; 이것의배열자체는배열입니다. 그러면이런것은어떨까요. Car mycar [10] = new Car[10]; 이런식으로하면 cars 에는 10 개의 car class 가들어옵니다. System.out.println(mycar[0].speed); System.out.println(mycar[0].cost); System.out.println(mycar[0].color); System.out.println(mycar[1].speed); System.out.println(mycar[1].cost); System.out.println(mycar[1].color); System.out.println(mycar[2].speed);
System.out.println(mycar[2].cost); System.out.println(mycar[2].color); 이제는배열의사용법도좀보았습니다. 배열은언어에서는가장많이사용되는것으로잘다루셔야합니다. 예 ) class Gauss { public static void main(string[] args) { int[] ia = new int[101]; for (int i = 0; i < ia.length; i++) ia[i] = i; int sum = 0; for (int i = 0; i < ia.length; i++) sum += ia[i]; System.out.println(sum); 결과값 : 5050 다차원배열도존재하며통계쪽에서많이이용합니다. 예 ) class MultiDarray { public static void main(string args[]) { char stars[][]; stars = new char[5][]; for(int i=0; i < stars.length; i++) { stars[i] = new char[i+1]; for(int j=0; j < stars[i].length; j++) { stars[i][j] = '*'; for(int i=0; i < stars.length; i++) { for(int j=0; j < stars[i].length; j++) {
System.out.print(stars[i][j]); System.out.println(); 결과 * ** *** **** ***** ****** 이러한예제들은절대로카피하시지말고꼭손으로치면서만들어보아야합니다.