다잇소


[IT/트랜드] Java 기초 – ② ( 객체 지향 언어, 기본 문법 – 1)

2017.08.23
 


 




 




  1. 객체 지향 언어


1.         Procedure 언어의 특징


함수 단위로 세분화


data보다는 절차의 순서에 따른 함수의 실행이 중요


Top Down 방식으로 접근함


접근자가 존재하지 않음


data는 함수와 함수에 따라 이동


– 새로운 함수와 data를 추가하는 것이 용이하지 않음


– data가 전역적으로 사용이 되면, 함수에 의해서 제한 없이 접근이 됨


– data를 숨길 수 있는 방법이 없어, 안전하지 않음


– Override를 지원하지 않음


– 주요 언어 : C, COBOL, VB, FORTRAN, Pascal


 


2.         객체 지향 언어의 특징


Object 단위로 세분화


함수나 절차보다는 data 자체가 중요


Bottom Up 방식으로 접근함


– 접근자가 존재(Public, Protected, Private)


Object는 Method을 이용하여 이동 또는 대화


– 새로운 함수와 data를 추가하는 것이 용이


Objec의 data는 접근자를 통해서만 접근 가능(은폐)


– data를 숨길 수 있는 방법을 제공하여 안전성 보장(은폐)


– Override를 지원


– Object 상속, 다형성(상속 + override), 재사용,


– 주요 언어 : C++,Java, C#, VB.NET


 




  1. Java 기본 규칙


1.         Class와 Object


class : object의 상태(instance variable)과 동작(method)을 template로 기술 하는 것(Program)


object : class의 instance, 실제로 상태와 동작을 가지고 있는 것(Process). Instance of class


method : object가 실행 할 수 있는 behavior – data의 변경, Logic의 실행


instance variable : object의 상태를 나타냄
1503227543201


문제 Who Am I? 참조


 


Dog.java










package com.kds.java.basic.char02;


 


public class Dog {


private double size// Instance Variable


private double weight; // Instance Variable


private String breed;// Instance Variable


public void bark() { // Method


System.out.println(멍멍);


}


public void walk() { // Method


System.out.println(터벅터벅);


}


public void run() {// Method


System.out.println(휙휙);


}


}



 


DogDrive.java










package com.kds.java.basic.char02;


 


public class DogDrive {


 


public static void main(String[] args) {


Dog 바둑이 = new Dog(); // Dog Instance 시켜 바둑이 Object 생성


바둑이.name = 바둑이;


바둑이.bark();


Dog shally = new Dog(); // Dog Instance 시켜 shally Object 생성


shally.name =“Shally”;


shally.bark();


}


}



2.         기본 문법


– 대소문자를 구별 예) hello와 Hello는 다른 변수


– Class 명의 시작은 대문자 시작하고, Camel 표기법을 따를 것 예) MyFirstClass, HelloWorld


– method명은 소문자로 시작하고, Camel 표기법을 따를 것(동사+명사) 예) displayBannder, barkAtThief


– variable명은 소문자로 시작하고, Camel 표기법을 따를 것(명사로 표현) 예) happyWorld, fastDog


– statement의 종료는 항상 “;”으로 나타냄 예) String tmpStr; for(int i=0; i < 10;i++) {}


– 제어문의 범위는 { .. }로 나타내고, “{“을 생략하는 경우 첫 번째 statement만 해당


– 주석 : 한 줄 주석 //, 여러 줄 주석은 /* ~ */, Java document /** ~ */


예)










int a =1;


if( a > 10 ) { // 실행이 되어야


a++; // 적용실행이


a++; // 적용실행이


}


System.out.println(a); // 결과 1 예상


if( a > 10 ) // 실행이 되어야


a++; // 적용  – 실행이


a++; // 적용실행이


System.out.println(a); // 결과 2 예상


 



– Java source file명은 class명과 반드시 일치 시킬 것


예) MyFirstClass.java – class MyFirstClass, HelloWorld.java-  public class HelloWorld, class PastWorld


– Java program은 항상 public static void main(String [] args)에서 진입점으로 시작


 




  1. Java data type


1. 기본형(Primitive)


– Boolean형 : boolean ( false 또는 true)


– Character형 : char ( 16 bits, 0~65535, 유니코드를 사용)


– Integer 형 : byte ( 8bits ), short ( 16 bits), int (32bits), long (64 bits)


– Floating 형 : float (32bits), double (64bits)


초기화 하지 않은 경우, boolean는 false, 나머지 기본형은 0으로 초기화


– 자기보다 작은 기본형에 할당 불가능


– 변수가 실제 Instance가 됨
2. 객체형


– 기본형이 아닌 모든 Class, Interface, enum 형


– 기본형의 배열을 포함한 모든 배열은 객체형


– 초기화 하지 않는 경우 null로 초기화


– 서로 다른 type에 할당 불가능


– 항상 heap에 실제 object가 생성이 되고, 객체형 변수는 포인터 역할


– 객체형 변수가 포인터를 잃어 버리면 GC의 대상이 됨


 


3. 변수


1) 선언 및 초기화


– 선언 : type 변수명;


– 초기화 : 기본형인 경우 값을 할당, 객체형은 new keyword사용


– 배열 초기화 : 배열은 index시작은 0이고 , 마지막 index는 length-1, length는 배열명.length를 사용










int i = 0 ;  // int type, i 변수명 , 0으로 초기값 할당


long l = 1l;  // long type, l 변수명 , long형은 할당 시에 l 숫자 다음에 넣어야함


char c = ‘c’// char type, c 변수명 , 작은 따옴표 하나의 char 입력


boolean b = true; // boolean type, b 변수명 , 시에는 false, true 사용


double d = 1.1; // double type, d 변수명 , 할당 시에 정수로 사용해도 상관없음


float f = 1.1f; // float type, f 변수명 , float형은 할당 시에 f 숫자 다음에 넣어야함


String string1 = new String(“String”); // String 객체형 type, string1 변수명 , 객체형은 항상 new keyword 함께 객체의 생성자를 초기화


String string2 = “String”;// String 특별하게 Java에서 new 키워드 생략이 가능하고, 따옴표로 표시만 가능


Dog dog = new Dog(); // Dog 객체형, dog 변수명, new Dog() 생성자를 사용하여 초기화


int [] intAry = new int[10]; // 배열 type선언은 [] 사용, intAry 변수명,객체형이므로 new keyword type[size] 초기화


for(int i =0; i <intAry.length;i++ ) {


intAry[i] = i; // 배열 접근시 [] index 사용, 배열 기본형 원소에 초기화는 직접 값을 할당


}


 


Dog [] dogAry = new Dog[10]; // 배열 type선언은 [] 사용, dogAry 변수명,객체형이므로 new keyword type[size] 초기화


for(int i =0; i <dogAry.length;i++ ) {


dogAry[i] = new Dog(); // 배열 접근시 [] index 사용, 배열 객체형 원소에 초기화는 new keyword 생성자 사용


}



2) 전역 변수(Instance Variable)


– 자동으로 초기화 됨, 불린값은 false, 숫자형은 0, 객체형은 null로 초기화


– 접근자가 사용이 가능함(private, protected, public)


– heap에 생성이 됨


– class 전역에서 사용이 가능


3) 지역 변수(Local Variable)


자동으로 초기화 되지 않음. 반드시 첫 번째 사용 전에 초기화 할 것


다른 method 호출 시 stack 저장이 됨


– code block에서만 사용이 가능


– 전역변수와 같은 이름을 사용 할 수 있음


– Parameter 같은 이름을 사용 할 수 있음


 


※ Quiz


1. 다음에서 변수 사용이 잘못 된 것을 찾으세요.










public class DeclarationVariable {


private int var1;


private int var2 =10;


private int var3 =-1;


public void method1(int var1) {


int var2;


{


int var2 = 10;


int var3 = 3;


}


var3 = 10;


System.out.println( var2 );


}


}



 


2. 다음에서 Garbage Collection 대상이 되는 변수를 찾고, 이유를 설명하여 보시기 바랍니다.










Vector v1 = new Vector();


Vector v2 = new Vector();


v1.addElement(“123”);


v1.addElement(v2);


String s = (String)v1.elementAt(0);


v1 = v2;


v2 = v1;


v1.addElement(s);



 




 




설정된 프로필 사진이 없습니다.
| Wise리더
관심분야 IT,여행,맛집

카테고리 레이어 닫기