배열

  • 정의: 같은 타입의데이터를 메모리상에 연속적으로 나열시키고, 각 데이터에 인덱스(index)를 부여해 놓은 자료 구조
  • 인덱스: 첨자값, [](대괄호) 사용
  • 배열은 참조 타입에 속한다.

배열의 선언


/* 대괄호의 위치 차이 */
int[] intArray; // 타입[] 변수(배열명);
int intArray[]; // 타입 변수(배열명)[];

/* null로 초기화 */
String[] stringArray = null;

/* 값 목록을 가진 배열 생성 */
String[] names = { "홍길동", "전지현", "설현", "수지" };
int[] scores = { 80, 90, 95, 99 };

/* new 연산자로 바로 배열 객체 생성 */
double[] doubleArray = new double[5]; // 배열의 길이를 지정한다. (이 때 인덱스는 0~4)

/* 컴파일 에러 */
String[] names = null;
// names = { "홍길동", "전지현", "설현", "수지 }; -> 배열 변수 선언 후 중괄호를 사용한 배열 생성은 에러 발생
names = new String[] { "홍길동", "전지현", "설현", "수지 };


  • 중괄호{}는 주어진 값들을 가진 배열 객체를 힙(heap) 메모리 영역에 생성하고, 배열 객체의 번지(주소)를 리턴한다.
  • 배열 변수는 리턴된 번지를 저장하여 참조한다.
  • 위의 예에서 "홍길동"은 names[0] "전지현"은 names[1], 80은 scores[0] 이다.

배열의 값 바꾸기


String[] names = { "홍길동", "전지현", "설현", "수지" };
System.out.println("names[0] > " + names[0]); // 홍길동
names[0] = "에일리";
System.out.println("names[0] > " + names[0]); //에일리

  • 배열의 값 바꾸기는 = (대입 연산자)를 사용한다.

배열 길이

  • 배열의 길이: 배열에 저장할 수 있는 전체 항목 수를 말한다.
  • 배열 객체의 length 필드(field)를 읽어야 한다.
  • 필드(field): 객체 내부의 데이터
  • 배열의 마지막 요소의 인덱스는 배열 길이-1이다.

int[]  intArray = {100, 200, 300};
int len = intArray.length;
System.out.println("배열 intArray의 길이는 > " + len);

반복문

  • 어떤 작업이 반복적으로 수행되도록 할 때 사용되는 구문

반복문의 종류

  • for문: 주로 반복횟수를 알고 있을 때 사용
  • 향상된 for문: 컬렉션과 배열을 처리할 때 더 효과적인 문법으로 JDK5.0 이후에 사용 가능
  • while문: 조건식으로 반복할 때 주로 사용
  • do-while문: 반복하기 전에 먼저 실행해야 하는 구문이 있을 때 사용

for문

  • for문 선언 형식
  • for( 초기식; 조건식; 증감식) {
      // 명령코딩
    }
    
  • 예제: 1부터 10까지의 합
  • public class ExFor {
    	public static void main (String[] args)
    	{
    		int i , sum = 0;   
            for ( i=1 ; i<=10 ;  i++) {
            	System.out.printf(i==10?"%d":"%d+",i);
    			sum+= i;    
    		}
            System.out.println("="+sum);
    	}
    }
    
    1+2+3+4+5+6+7+8+9+10=55
    

향상된 for문

  • 향상된 for문 선언 형식
  • for( 자료형  변수명 : 배열 또는 컬렉션 ) {
     // 명령코딩
    }
    
  • 예제: 배열에 담긴 국어 점수 출력
  • public class ExEnhancedFor
    {
    	public static void main (String[] args)
    	{
    		int [] kors = new int[5];
    		kors[0] = 100;
    		kors[1] = 90;
    		kors[2] = 77;
    		kors[3] = 23;
    		kors[4] = 88;
    		
    		for (int kor : kors) {
    			System.out.println(kor);
    		}
    	}
    }
    
    100
    90
    77
    23
    88
    

while문

  • while문 선언 형식
  • while( 조건식 ) {
     // 조건식이 참일 동안 반복될 명령 코딩
    }
    
  • 예제: 10부터 0까지의 합
  • public class ExWhile
    {
    	public static void main (String[] args)
    	{
    		int i = 10 , sum = 0;
    		while( i >= 0 ){
    			System.out.printf(i==0?"%d":"%d+",i);
    			sum += i; 
    			i--;
    		}
    		System.out.println("="+sum); 
    	}
    }
    
    10+9+8+7+6+5+4+3+2+1+0=55
    

do-while문

  • do-while문 선언 형식
  • do{
    // 먼저 한번 실행하고, 조건식이 참일 동안 반복할 명령 코딩
    }while( 조건식 );
    
  • 예제: 증가치에 따라 증가하는 항 값의 누적 합
  • public class ExDoWhile
    {
    	public static void main (String[] args) throws java.lang.Exception
    	{
    		int h = 1; // n 항의 누적 합
    		int n = 1; // 각 항: [1]+[2]+[4]+[7]+[11]+[16]+[22]
    		int k = 0; // 증가치:   1   2   3   4    5    6
     
    		do{
    			k+=1;
    			n += k;
    			if( n > 100) break;
    			h += n; // (누적)
    			System.out.printf("%d - %d - %d\n",n,k,h);
    		}while(true);	
    	}
    }
    
    2 - 1 - 3
    4 - 2 - 7
    7 - 3 - 14
    11 - 4 - 25
    16 - 5 - 41
    22 - 6 - 63
    29 - 7 - 92
    37 - 8 - 129
    46 - 9 - 175
    56 - 10 - 231
    67 - 11 - 298
    79 - 12 - 377
    92 - 13 - 469
    

변수

  • 하나의 값을 저장할 수 있는 메모리 공간

변수의 선언

  • 타입 변수이름;
  • 타입은 변수에 저장되는 값의 종류와 범위를 결정지으므로 어떤 값을 변수에 저장할지 생각한 후 타입을 결정해야 한다.
  • 변수 이름은 메모리 주소에 붙여진 이름이다.
  • 프로그램은 변수 이름을 통해 메모리 주소에 접근하고, 그곳에 값을 저장하거나 그곳에 값을 읽는다.
  • 변수 이름은 자바 언어에서 정한 명명규칙을 사용해야 하며, 예약어는 사용할 수 없다.
  • 개발자는 변수 이름을 보고, 변수가 어떤 값을 저장하고 있는지 쉽게 알 수 있도록 의미 잇는 변수 이름을 지어주는 것이 좋다.
 int age; // 정수값을 저장할 수 있는 age 변수 선언
double value; // 실수값을 저장할 수 있는 value 변수 선언


변수 명명 규칙

작성 규칙

번째 글자는 문자이거나 $, _ 이어야 하고 숫자로 시작할 없다(필수)

가능: price, $price, _companyName

불가: 1v, @speed, $#value

영어 대소문자가 구분된다(필수)

firstname firstName 다른 변수

문자는 영어 소문자로 시작하되, 다른 단어가 붙을 경우 문자를 대문자로 한다

maxSpeed, firstName, carBodyColor

문자 (길이) 제한은 없다

 

자바 예약어는 사용할 없다(필수)

 



자바 예약어

분류

예약어

기본 데이터 타입

boolean, byte, char, short, int, long, float, double

접근 지정자

private, protected, public

클래스와 관련된

class, abstract, interface, extends, implements, enum

객체와 관련된

new, instanceof, this, super, null

메소드와 관련된

void, return

제어문과 관련된

if, else, switch, case, default, for, do, while, break, continue

논리값

true, false

예외 처리와 관련된

try, catch, finally, throw, throws

기타

transient, volatile, package, import, synchronized, native, final, static, strictfp, assert



변수의 범위

  • 변수는 선언된 { } (블록) 안에서만 사용 가능하다.
  • 클래스 블록안에 바로 선언된 변수를 전역 변수라고 한다.
  • 메소드(함수) 내에 선언된 변수를 지역 변수(local variable)
  • 변수는 선언된 블록 안에서만 사용 할 수 있다.
  • 엄밀히 말하면, 전역 변수는 인스턴스 변수와 클래스 변수로 구분할 수 있는데, 이는 추후 클래스를 다룰 때 더 자세히 설명하겠다.

비트 연산자

  • 0과 1로 표현이 가능한 정수타입만 비트 연산이 가능하다.

  • 피연산자를 int 형으로 자동 형변환

비트 반전 연산자(~), 틸드 연산자

  • 정수 타입의 피연산자에만 사용
  • 피연연사즐 2진수로 표현했을 때 비트값인 0을 1로, 1은 0으로 반전
  • 부호가 반대인 새로운 값이 산출됨

비트 논리 연산자(&, |, ^)

  • 비트논리 AND 연산자(&): 두 비트 모두 1일 경우에만 연산 결과가 1
  • 비트논리 OR 연산자(|): 두 비트 중 하나라도 1이면 연산 결과 1
  • 비트논리 XOR 연산자(^): 두 비트 중 하나는 1이고 다른 하나가 0일 경우 연산 결과는 1

비트 이동 연산자(<<, >>, >>>), 쉬프트 연산자

  • a << b: 정수 a의 각 비트를 b만큼 왼쪽으로 이동(빈자리는 0으로 채워짐)
  • a >> b: 정수 a의 각 비트를 b만큼 오른쪽으로 이동(빈자리는 정수 a의 최상위 부호 비트와 같은 값으로 채워짐)
  • a>>>b: 정수 a의 각 비트를 b만큼 오른쪽으로 이동(빈자리는 0으로 채워짐)





연산 관련 개념

  • 연산(Operation): 프로그램에서 데이터를 처리하여 결과를 산출하는 것

  • 연산자(Operator): 연산에 사용되는 표시나 기호

  • 피연산자(Operand): 연산되는 데이터
  • 연산식(Expressions): 연산자와 피연산자를 이용하여 연산의 과정을 기술한 것

연산자 정리표

연산자 종류

연산자

피연산자

산출값

기능 설명

산술

+, -, *, /, %

이항

숫자

사칙연산 나머지 계산

부호

+, -

단항

숫자

음수와 양수의 부호

문자열

+

이항

문자열

문자열을 연결

대입

=, +=, -=, *=, /=, %=,

&=, ^=, |=, <<==, >>==, >>>==

이항

다양

우변의 값을 좌변의 변수에 대입

증감

++, --

단항

숫자

1만큼 증가/감소

비교

==, !=, >, <, >=, <=,

instanceof

이항

boolean

값의 비교

논리

!, &, |, &&, ||

단항

이항

boolean

논리적 NOT, AND, OR 연산

조건

(조건식) ? A : B

삼항

다양

조건식에 따라 A또는 B 하나를 선택

비트

~, &, |, ^

단항

이항

숫자

boolean

비트 NOT, AND, OR, XOR 연산

쉬프트

>>, <<, >>>

이항

숫자

비트를 좌측/우측으로 밀어서 이동


연산의 방향과 우선순위

연산자

연산방향

우선순위

증감(++,--), 부호(+,-), 비트(~), 논리(!)

높음

산술(*,/,%)

 

산술(+,-)

 

쉬프트(<<, >>, >>>)

 

비교(<, >, <=, >=, instanceof)

 

비교(==, !=)

 

논리(&)

 

논리(^)

 

논리(|)

 

논리(&&)

 

논리(||)

 

조건(?:)

 

대입(=, +=, -=, &=, /=, %=, &=, ^=, |=, <<=, >>=, >>>=)

낮음


증감 연산자( ++ , -- )

  • 전위형: 피연산자 앞에 위치, 다른 연산보다 증감 먼저 수행 ( int i = 0; ++i )
  • 후위형: 피연산자 뒤에 위치, 다른 연산 수행 후 증감 실행 ( int j = 0; j++; )

논리 연산자( &&, ||, &, |, ^, !)

  • 일반논리AND연산자, 논리곱(&&): 피연산자 모두 true일 경우 연산 결과 true
  • 일반논리OR연산자, 논리합(||): 피연산자 중 하나만 true이면 연산 결과는 true
  • 배타적 논리합(^): 피연산자가 하나는 true이고 다른 하나가 false일 경우에만 연산 결과 true

논리 부정 연산자(!), (=not 연산자)

  • 참 또는 거짓을 부정한다.
  • !true → false
  • !false → true

덧셈연산자(+) / 문자열 연결 연산자(+) 비교

  • print( 4 + 5 ) => 정수 + 정수 => 9 // 덧셈연산자로 더하기 연산 수행
  • print( "4" + 5 ) => 문자열 + 정수 => "45" (문자열) // 문자열 연결 연산자로 4와 5 문자열을 연결
  • print( "4" + "5") => 문자열 + 문자열 => "45"(문자열) // 문자열 연결 연산자로 4와 5 문자열을 연결

0으로 나누기 또는 나머지 연산을 수행할 수 없음(오류 발생)

  • 실수를 0으로 나누면 무한대(Infinity) 결과값
  • 실수를 0으로 나머지 구하기 하면 NaN(Not a Number)결과값

조건연산자

  • 형식 => 항1 : 항2 : 항3;
  • 항1이 참이면 결과값은 항2
  • 항1이 거짓이면 결과값은 항3


작업 폴더 셋팅


1. C:\ 경로에 Java 폴더 생성


2. Java 폴더에서 workspace와 setup_download 폴더 생성


3. 이클립스 실행 후 workspace 경로 설정시 C:\Java\workspace 지정


4. 이 후 다운로드에 필요한 파일은 setup_download에 생성



JDK 설치



1. http://www.oracle.com 접속


2. Downloads 클릭


3. 좌측 Java SE 클릭 → 상단 탭 Overview 우측의 Download 클릭


4. Java 아이콘 모양 밑 Download 클릭(다운로드 경로 C:\Java\setup_download)



5. Java SE Development Kit 8u51 하단 Accept License Agreement 체크

a. JDK = Java Development Kit (자바 개발 도구)

b. SE = Standard Edition

c. 8u51 = JDK 8버전, Update 51


6. 운영체제에 맞는 설치파일 다운로드 클릭

a. 윈도우 운영체제 확인: 윈도우키+s → '시스템' 검색 → '시스템 종류' 확인

b. 64비트: x64 파일, 32비트: x86 파일


7. 4번 화면으로 이동하여 스크롤을 내려 'Additional Resources' → Java SE 8 Documentation 우측 DOWNLOAD 클릭


8. Java SE Development Kit 8u51 Documentation 항목 Accept License Agreement 체크하고 다운로드

a. Java API(매뉴얼 라이브러리)


10. JDK SE 1.8_51 설치파일 실행 후 계속 Next

a. 기본 설치 위치: C:\Program Files\Java\jdk1.8.0_51

b. 처음에 JDK가 설치 된 후 JRE(Java Runtime Environment)가 설치 됨

c. JDK와 같이 C:\Program Files\Java\ 에 설치됨


11. JDK가 어느 경로에서든 사용 가능하도록 path 설정 작업

a. 6-a와 같이 시스템 창에 진입

b. 좌측에 고급 시스템 설정 클릭

c. 시스템 설정 창에서 하단 환경 변수 클릭

d. 시스템 변수란에서 Path 변수를 클릭 후 편집

e. 변수 값에서 맨 마지막 글자 뒤에 ; (세미콜론) 입력

f. C:\Program Files\Java\jdk1.8.0_51\bin 붙여넣기

g. 참고: 추후 톰캣 설치 시에는 시스템 변수에 JAVA_HOME을 새로 만들고 path를 수정해야함


11. 10번 작업 수행 여부 확인

a. 윈도우 키 + S → cmd

b. javac -version 입력

c. 자바 버전이 나오면 10번 작업이 잘 수행되었다는 것


12. CLASSPATH 설정

a. 10-c 이후 시스템 변수에 새로 만들기 클릭 변수명에 CLASSPATH, 변수 값에 . (온점) 입력

b. . (온점): 현재 디렉토리



이클립스(Eclipse) 설치



1. https://eclipse.org/downloads/ 접속

2. 첫번째 Eclipse IDE for Java EE Developers 다운로드(운영체제에 맞게)

3. 압축 풀기(경로: C:\eclipse)
a. 경로가 길어 오류가 난다면 root 디렉토리(C:\) 에서 압축파일 명을 임의로 줄인 후 압축 풀기

4. eclipse.exe 실행

5. workspace 경로 설정(C:\Java\workspace)





+ Recent posts