BigData (20)
[Day4] 조건문

자바의 기본 구문 : 중첩으로 사용 가능하다.

조건문 if
선택문 switch ~ case
반복문 (입력) while, do ~ while
반복문 (출력) for

==========================================================

조건문 if(단일) : 명령이 true, false로 나뉠 때 사용한다, if(다중)

1. 단일 if
 [형식] if(조건식(true)) // true, false로 결과가 리턴되어야 한다.
 {
  명령;
 }
 
 ex) 입력된 수가 0보다 크면 0보다 크다라고 출력하자.
 
 int a=10;
  if(a>0) {
   System.out.println("0보다 크다");
  }
 

2. 단일 if ~ else

 [형식] if(조건식) // true, false로 결과가 리턴되어야 한다.
 {
  true 명령;
 } else {
  false 명령;
 }
 
 ex) 입력된 수가 0보다 크면 크다, 그렇지 않으면 작다라고 출력하자.
 
 int a=10;
  if(a>0) {
   System.out.println("0보다 크다");
  } else {
   System.out.println("0보다 작다");
  }

3. 다중 if ~ else

 [형식] if(조건식1) {
  true 명령;
 } else if(조건식2) {
  true 명령;
 } else if(조건식3) {
  true 명령;
 } else {
  false 명령;
 }
 
 ex) 평균이 90점 이상이면 A, 80점 이상이면 B, 70점 이상이면 C, 나머지는 F
 
 int avg=80;
 
 if(avg>=90) {
   System.out.println("A");
 } else if(avg>=80) {
   System.out.println("B");
 } else if(avg>=70) {
   System.out.println("C");
 } else {
   System.out.println("F");
 }
 

선택문 : switch ~ case 문
    - if문의 범위연산조건을 간결하게 하기 위한 구문
[형식]
switch(정수형변수(int)) { // JDK 1.7버전부터는 String도 들어갈 수 있다
 case 변수에 대입된 값 :
      명령;
      break;
 case 변수에 대입된 값 :
      명령;
      break;
 default : 명령 
}

특징 :  하나의 switch 여러개의 case를 가진다.
   case 뒤에 선언된 값은 하나만 올 수 있다.
    정렬로 나열해서 사용하지 않는다.
  
    경우에 따라 case 명령부분에 break; 구문을 선택적으로 사용한다.
   
    자바에서는 클래스의 필드값을 대입할 때 사용한다.
  
ex) 4계절이 있다.
 입력된 수가 1이면 봄, 2이면 여름 3이면 가을 4면 겨울을 출력해라.
 
 콘솔을 통해 값을 입력받는 방법
 
 1. 메인 메서드의 args로 입력받는 방법
 2. Scanner 클래스를 이용해서 입력받는 방법
 3. java.io 팩키지를 이용해서 다양하게 입력받는 방법
 
 

'BigData > JAVA' 카테고리의 다른 글

[Day5] 캡슐화  (0) 2015.03.05
[Day5] 반복문  (0) 2015.03.05
[Day3] JVM (Java Virtual Machine)의 메모리  (0) 2015.03.05
[Day2] 자료형  (0) 2015.03.05
테스트  (0) 2015.03.04
  Comments,     Trackbacks
[Day3] JVM (Java Virtual Machine)의 메모리

JVM (Java Virtual Machine)의 메모리

(1) 스택 영역 (Runtime Stack) : 실행시 사용하는 메모리 영역

(2) 힙 영역 (Garbage Collection Heap) : 동적 메모리 할당 영역

(3) 상수 영역 (Constant & Code Segment) : 상수 데이터 및 static 데이터 할당 영역

(4) 레지스터 영역 (Process Register) : 프로세서 실행 관련 메모리 할당 영역


======================================================================

자바의 메모리 구조

: OS에 의하여 프로그램이 수행되면 JVM은 OS로부터 적절한 크기의 메모리 공간을 얻어내게 된다.
그리고 얻어낸 메모리 공간을 JVM은 3영역으로 나누어 관리한다.

메소드(method area) 영역 : 매개변수, 지역변수
      (메소드의 실행이 종료되면 자동반환)
      
스택(Stack) : 매개변수, 지역변수
   (메소드의 실행이 종료되면 자동반환)
   
힙(Heap) : 클래스객체, 배열객체, 문자열객체
   (new 연산자 사용, 객체가 사용하는 메모리공간)
   

java.lang -> system ->

======================================================================

class란? User Data Type
 - 멤버변수 : 전역변수 (값 전달)
 - 필드 : 상수
 - 생성자 : 멤버변수 초기화 및 객체 초기화
 - 메소드 : 멤버들을 이용해서 명령을 수행하는 단위 ex) println
 
======================================================================

메소드의 종류 : static, non-static (내일)
메소드의 원형 : void, return형

======================================================================

1. static void형

  [형식] - main
    접근제한자 static void userName(매개인자) {
     명령;
   }

  [사용방법]
   userName(매개인자값...);
  
2. static return 형
    리턴하는 값의 데이타 형을 기재한다.

   [형식]
    접근 제한자 static dataType userName(매개인자) {
    명령;
   return dataType 값;
   }

   [사용방법]
     user  
  
  
  

// C(Create)R(Reuse)U(Update)D(Delete)를 모두 만족해야 참조관계

package com.exam;

// import com.test.*; // com.test 밑에 있는 모든 클래스를 참조
import com.test02.MY; // com.test 밑에 있는 MY 클래스를 참조, 이것만 쓸거면 이것만 import 하는게 좋음 (메모리 문제)

public class Test {

 public static void main(String[] args) {
  
  MY.Disp();
  MY.Prn();
  
  com.test02.MY.Disp(); // import 하지 않아도 이렇게 입력하면 불러오기 가능
  com.test02.MY.Prn();

 }

}

 

package com.test01;

public class Test {

 public static int getA() {
  return 100;
 }
 
 public static void getB() {
  System.out.println(300);
 }
 
 public static char getCh() {
  return 'A';
 }
 
 public static double getD() {
  return 90.9;
 }
 
 public static void main(String[] args) {

  int a=getA();
  System.out.println("a="+a);
  System.out.println("a="+getA()); // 바로 메서드로 호출해서 출력
  // System.out.println(getB()); 에러메세지 출력
  
  System.out.println(getCh()); // A
  System.out.println(getD()); // 90.9
  
  int hap=(int)(getA()+getD());
  System.out.println("hap="+hap);
  
// int a=(int) 90.9; 90 double d=90; 90.0
  

 }

}

 


 

 

'BigData > JAVA' 카테고리의 다른 글

[Day5] 캡슐화  (0) 2015.03.05
[Day5] 반복문  (0) 2015.03.05
[Day4] 조건문  (0) 2015.03.05
[Day2] 자료형  (0) 2015.03.05
테스트  (0) 2015.03.04
  Comments,     Trackbacks
[Day2] 자료형

자바의 값 (상수-field, value)


value : 값, 단일문자, 문자열,        정수,    실수,     논리 등
     'a'     "abc" or "a" 100    1.1      true/false
     char    string       int    double   boolean
    
자료형 크게 2가지
: 배열, 클래스 등의 참조형과 기본데이타형

기본 데이터형 (primitive data types) 8가지

1. byte(1) : (-128~127)

2. short(2) : (-32,768 ~ 32,767)

3. int(4) :
 (-2,147,483,648 ~ 2,147,483,647)

4. long(8)

5. float(4) : 부동 소수점 값 0.0f

6. double(8)

7. boolean(1) : true, false 값

8. char(2) : 16비트 Unicode 문자

byte -> short -> int -> long, float -> double

http://unicode-table.com/en/  참조

==============================================================

0, 1 : 1비트 *8 = 1 byte : 글자를 표현하는 최소 단위

- byte 단위로 전송되는 것을 Stream 이라고 한다.
 128 64 32 16  8421
   0  0  0  0  0000
  
   100 - byte (1) 0000 0000
  
==============================================================

데이타타입 변수 ; // class, struct, union 등
변수=상수 (값); // 객체생성, 직대입, 네트워크

연산 // 직연산, 전송값, 대입연산
출력 // 프린터, con, 파일, DB 등

==============================================================

 

package com.test;

public class Test { // 멤버변수, 필드, 생성자, 메소드(클래스 안에서 선언된 함수)가 올 수 있다

 // 공개형 고정적 반환값 없는 main (인수), 메인 메소드
 public static void main(String[] args) { // 프로그램의 진입점, 반드시 하나만
  // 값을 출력하는 구문
  System.out.println('a'); // 단일문자
  System.out.println("abcd"); // 문자열
  System.out.println(100); // 정수
  System.out.println(100.0); // 실수
  System.out.println(true); // 논리값
  System.out.println(false);
  
  System.out.println('金');
  System.out.println("TRUE"); // 논리값 대문자는 안됨
  System.out.println("a");
 }

}

package com.test;

public class Test01 {
 public static void main(String[] args) {
  //값이 연산자를 만나면 int(정수)로 연산하는 성질
  System.out.println('a');
  System.out.println('a'+'b'); // a의 아스키 코드값은 97을 뽑아옴
  System.out.println('a'+1); // 97 + 1
  System.out.println('a'-1); // 97 - 1
  System.out.println('A'+1); // A의 아스키 코드값 65 + 1
  System.out.println("a"+"b"); // 문자열 뒤에 +는 연결문자
  // System.out.println("a"-"b"); // -는 에러난다
  System.out.println("a"+100+20);
  System.out.println("a"+(100+20)); // 우선순위가 있다
  
  System.out.println(90.9f); // 4byte - float
  System.out.println(90.9d); // 8byte - double : 실수의 default, 접미사 d가 사실상 필요 없음
  
 }
}

 

package com.test;

public class Test02 {
 
 public static void main(String[] args) {

 // 출력포맷
 // 한문자 %자리크기c 문자열 %자리크기s 정수 %자리크기d 실수 %자리크기f
  
 // System.out.printf("출력할 내용과 자리지정", 값);
 System.out.printf("값 :%5c%3c",'a','b'); // 오른쪽 정렬
 System.out.println();
 System.out.printf("값 :%-5c%-3c",'a','b'); // 왼쪽 정렬
 System.out.println();
 System.out.printf("%5s %10.1f","abc",90.27); // 숫자는 반올림이 원칙
 System.out.printf("%5s %10.1f","abcdfgesdfs",90.27); // 문자열은 overflow 되도 다 출력한다
 System.out.println();
 //"제어문자 \t \n \b"
 System.out.printf("%5s\t%10f\n","abc",90.27);
 //100+200=300
 System.out.printf("%d+%d=%d\n",100,200,(100+200));
 System.out.println(100+"+"+200+"="+(100+200)); // printf에 비해 조잡해진다
 
 }
 
}

 

package com.test;

public class Test03 {

 public static void main(String[] args) {
  
  /* 출력연습
   * 100+200=?
   * 200-100=?
   * 200*100=?
   * 200/100=?
   * 200%100=?
   */
  
  System.out.printf("%2d + %2d = %-5d\n",100,200,(100+200));
  System.out.printf("%2d - %2d = %-5d\n",200,100,(200-100));
  System.out.printf("%2d * %2d = %-5d\n",200,100,(200*100));
  System.out.printf("%2d / %2d = %-5d\n",200,100,(200/100));
  System.out.printf("%2d %% %2d = %-5d\n",200,100,(200%100));
  System.out.println("감성지수 20%야"); // println에서는 %가 예약어가 아니기 때문에 가능함
  System.out.println(" '감성지수' 20%야"); // 최신의 자바는 싱글쿼터가 그대로 표시됨
  System.out.println("용돈을 ₩30000원 받았다"); // 원화표시는 특수문자로 해야함

 }

}


'BigData > JAVA' 카테고리의 다른 글

[Day5] 캡슐화  (0) 2015.03.05
[Day5] 반복문  (0) 2015.03.05
[Day4] 조건문  (0) 2015.03.05
[Day3] JVM (Java Virtual Machine)의 메모리  (0) 2015.03.05
테스트  (0) 2015.03.04
  Comments,     Trackbacks
테스트

테스트

'BigData > JAVA' 카테고리의 다른 글

[Day5] 캡슐화  (0) 2015.03.05
[Day5] 반복문  (0) 2015.03.05
[Day4] 조건문  (0) 2015.03.05
[Day3] JVM (Java Virtual Machine)의 메모리  (0) 2015.03.05
[Day2] 자료형  (0) 2015.03.05
  Comments,     Trackbacks