0. 기본 입력 방법과 함께 제어문을 학습!

 1) main 메소드의 (String [] args)를 이용 

 public class InputTest{
 public static void main(String[] args) {
  for(int i = 0; i<args.length ; i++ )
  {
   System.out.println("args["+i+"] = "+ args[i]);
  }
 }
}

실행 시 입력을 넣어야 한다.

 />java InputTest 사과 딸기 포도 복숭아

 

출력 :

args[0] = 사과

args[1] = 딸기

args[2] = 포도

args[3] = 복숭아

 

 

 2) Scanner 메소드사용

 import java.util.Scanner;
public class InputTest2{
 public static void main(String[] args) {
  Scanner scanner = new Scanner(System.in);
  System.out.println("이름은?"); 
  String name = scanner.next();
  System.out.println("나이는?");
  int age = scanner.nextInt();
  System.out.println("신장은?");
  double height = scanner.nextDouble();
  System.out.println("이름 : "+name +" 나이 : " +age +" 키 : "+ height);
 }
}

 Scanner 매소드를 이용하여 입력을 저장 후 출력.

 

3) Swing.JOptionPane 사용

 import javax.swing.JOptionPane;

public class InputTest4{
 public static void main(String[] args) {
  String name = JOptionPane.showInputDialog("당신의 이름은?");
  System.out.println("이름 = " +name);
 }
}

  DOS모드에서 할 필요없이 입력 메세지박스가 뜬다.

 

 

1. if문

 1) 참일때만 사용

 2) 참과 거짓일때 사용

 3) 경우의 수가 3개 이상일때 사용

 

2. switch문

 - 초기값을 지역변수로 사용할 수 있다.

 - 경우의 수가 많더라도 결과를 한번에 찾게된다.

 - 조건은 정수만 올 수 있다. (1.5버전 이상은 enum가능)

 

3. for문 : 반복의 시작과 끝이 명료하다.

  1) 무한반복이 되지 않도록 조심!

예제 : 다음의 결과를 갖도록 for문을 이용해 작성해 보세요.

 A B C D E

 f  g  h  i  j

 K L M N O

 p q  r  s  t

 U V W X Y

 z

 

 public class ForTest2{
 public static void main(String[] args) {
  int cnt=1;
  int cnt2 = 0;
  for(int i=65;i<91;i++){
   if( (cnt2%2)==0){ System.out.printf("%c\t",i);}
   else{
   System.out.printf("%c\t",i+32); }
   if (0==(cnt%5))  {System.out.println(""); cnt2++;  }
   cnt++;
      }
 }
}

★★★★★

★★★★

★★★

★★

 public class ForTest4{
 public static void main(String[] args) {
  for (int i = 5 ; i>=1 ; i-- ){
   for (int j=1; j<=i ; j++ ){
    System.out.print("★");   
   }
   System.out.println("");
  }
 }
}

 
 2) 강화된  for문
  - 배열이나 컬렉션에서 사용된다.(일반 for문처럼 사용할 수 없다.)
  - 속도를 줄이기 위해 index의 사용을 제거하였다.
  - 배열 내의 모든 내용을 출력하기 때문에 특정 번째의 내용 확인을 할 수 없다.

 

 int[] array = {2,3,4,5,6};

 for ( int su: array ){
   System.out.print(su);
  }

 출력 :

 23456

 

4. while문 : 반복의 시작과 끝이 명료하지 않다.

  - 초기값을 무조건 while문 밖에 선언한다.

  - do while은 한번 실행 한 후 조건을확인.

 

4. 분기문 : 자바는 goto문을 쓸 수 없다.

 1)continue/break/label

   - label은 중첩된 반복문에서만 사용할 수 있다.

 

 

ps.----------------------------------------------------------

 

- String은 == 연산자가 주소를 비교하기 때문에 값을 비교하지 않는다.

 public class InputTest1
 public static void main(String[] args) {
  String season = args[0]; //

 

  if(season == "summer"){

  System.out.println("여름입니다.");

}else{

  System.out.println("여름이 아닙니다.");

}

}

실행 시 입력을 넣어야 한다.

 />java InputTest1 summer

 

출력 :

 여름이 아닙니다.

 

 public class InputTest1
 public static void main(String[] args) {
  String season = args[0]; //

 

  if(season.equals("summer")){

  System.out.println("여름입니다.");

}else{

  System.out.println("여름이 아닙니다.");

}

}

 

실행 시 입력을 넣어야 한다.

 />java InputTest1 summer

 

출력 :

 여름입니다.

 if(season.compareTo("summer") == 0){ 

 두 문자열의 값을 빼 0이 나오면 같다. 

 

 

 - 자동 형변환

 double = avg;

 int tot ;

 int a =90; int b=80; int c = 100;

tot = a+b+c

avg = tot/3.0; //나누기 연산으로 정수형으로 변하기 때문에 평균의 소수점을 표현하기위해서 연산 중 한 부분을 실수로 써 주었다.

 

- switch문으로 계산기 만들 때 곱하기 연산자 입력을 *로 받으면 오류가 발생한다.

 

- random() 의 동작 : 1~10 사이의 랜덤수를 뽑기

 범위

 0.0 <= r <= 1.0  

 양변에 범위의 최대값을 곱함

 0.0 <= r*10 <= 10.0 

 양변에 최소값을 더함

 1.0 <= r*10+1 <= 11.0 

 최종적으로

 r 은 1~10 사이의 값이 될 수 있다. 

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

자바 메소드(method)  (3) 2011.03.24
자바 배열이란?  (2) 2011.03.24
JAVA 문법과 연산자  (2) 2011.03.24
JAVA 언어의 법칙  (1) 2011.03.24
JAVA의 특징과 설치  (2) 2011.03.24

1. 변수

 1)지역변수 : 메소드 안에서 정의된 변수.

   - 지역변수는 반드시 초기화를 하여야한다.

 2)클래스변수 : 클래스 내부에 선언되는 변수로 프로그램 실행 시 가장 먼저 실행된다.

   - static 키워드를 사용한다. (class변수 또는 static변수라고 한다.)

   - 지역변수에서는 static을 사용 할 수 없다.

   - 초기값을 주지않아도 된다.(자동 초기화가 된다.)

   - 보안에 취약한 단점이 있다.

   - 메모리에서 언제서 소멸되는지 알 수 없다. (가비지 콜렉터(Garbage Collector) 가 없다.)

 3)맴버변수(Instance 변수) : 메소드가 아닌 클래스 내부에 있는 변수

   - static을 사용하지 않는다.

   - 생성자에 의해 생성된다. (new ~~~)

 public class MemberTest{
 String msg = "Hello, World"; // member variable
 static String msg2 = "static Hello, World2"; // class(static) variable
 public static void main(String[] args) {
  MethodTest hw = new MethodTest(); //맴버 변수는 생성자를 써야 메모리에 올라간다
  System.out.println("msg = "+hw.msg); 
  System.out.println("msg2 = "+msg2);

  Demo dem = new Demo(); 
  System.out.println("msg3 = "+dem.msg3);
  System.out.println("msg3 = "+ Demo.msg4); // 다른 클래스의 static변수는 클래스 명으로 접근가능
 }
}

class Demo{
 String msg3 = "Hello, World3"; //member variable
 static String msg4 = "Hello, World4";// static variable
}

 

 

 

2. 연산자

 - 수평적 연산자 우선순위 : 단항연산자와 할당연산자를 제외하고 모두 왼쪽에서 오른쪽으로 우선순위가 내려간다.

 - 수평적 연산자 우선순위 : 우선순위가 높은 것 먼저 하게된다.

 

 

 1) 비트연산자

  -  +,-,~ 의 2항 연산은 int형으로 확장변환(Promotion)된다. (long,float,long은 int보다 더 크기때문에 형변환 되지 않는다.)

 char ch1 = ch >>3      // 이 연산은 컴파일 에러가 발생하게된다. char를 2항연산 할 수 없기때문이다.

  - 3항 연산은 truncation이 발생한다.

 short = (true ? short : 1967) // 1967이 int형이지만 shot의 범위를 넘어서지않기 때문에 truncation이 발생하여 에러가 발생하지 않는다. 하지만 short의 단위인 2바이트의 크기를 벗어나게되면 컴파일 에러가 발생하게된다.

 2) 논리연산자

  -

 int a=5, b=9, x=15;

if (a>x && ++b>x){

 System.out.println("true");

}

else

{

System.out.println("false");

}

System.out.println("b = "+b);

 - &&는 앞의 결과에 따라 거짓이기 때문에 뒤의 연산은 수행하지 않는다. 그렇기 때문에 b의 결과는 9가 출력된다.

 int a=5, b=9, x=15;

if (a>x & ++b>x){

 System.out.println("true");

}

else

{

System.out.println("false");

}

System.out.println("b = "+b);

 - &는 앞의 결과에 관계없이 뒤의 모든 연산을 수행하게 된다. 그렇기 때문에 b의 결과값은 10이된다.

 

 

 

3. 형변환

 1) 암시적,묵시적 형변환

 2) 강제적,명시적 형변환 : cast연산자

 

 

 

 

 

 

ps.----------------------------------------------------------

1. 메소드 내에서는 절자적인 성향을 같는다.

2. 자바는 Class 밖에서 변수를 선언 할 수 없다.

3. int 를 String으로 : String.format("%5s", String.valueOf(red))

4. int 를 16진수로 : Integer.toHexString(red).toUpperCase()

5. String 을 int 로 : int red = Integer.parseInt(red);

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

자바 배열이란?  (2) 2011.03.24
자바 제어문(조건/반복/분기)  (2) 2011.03.24
JAVA 언어의 법칙  (1) 2011.03.24
JAVA의 특징과 설치  (2) 2011.03.24
자바(JAVA)란?  (1) 2011.03.24

1. Unicode

 

2. ASCII Characters

 1) 기본적으로 알아야 할 코드값 : 48 (0), 57(9), 10(NewLine), 13(Carriage return)

 

3. Comment(주석)

 1) // 한줄

 2) /* 한줄 이상의 문장 */

 3) JavaDoc : JAVA를 HTML 문서로 만드는 것. (APIDoc의 문서처럼 작성 할 수 있다.)

   - /**  문서화 된 코멘트 **/

   - 설명할 코드 바로 위에 작성 할 것

   - 명령어

 $javadoc -author -version -d [.\경로][자바파일이름]  : 경로에 html파일이 생성된다.

   - Doxygen 툴을 사용하면 쉽게 html문서를 작성 할 수 있다.

 

4. Separators(구분자)

 - (). {}, [], ;, ,, .

 - Word < Statements < Block

 

5. 식별자

 - 클래스,메소드,변수명을 지정 할 수있다.

 - 첫 클래스는 영문자나 (_), ($)만 사용할 수 있다.

 - 길이 제한이 없긴 하다.

 

6. 키워드, 예약어

 - 특수한 목적을 사용하기위해 이미 정의가 된 단어.

 - const, goto 는 키워드에 등록되어 있지만 사용 할 수는 없다.

 - enum : 1.5버전 이상에서부터 사용 가능한 키워드.

 

7. 데이터 저장

 1) 비트

  - unsigned : 모든 비트를 데이터의 양수를 표현

  - signed : 비트 하나를 부호비트로 설정하여 1일 때 음수를 표현한다.

 2) 보수

  - 1의 보수 : 데이터 비트의 반전

  - 2의 보수 : 데이터 비트의 반전 +1

 3) 자료형

  i) 내장형(기본형) : Primitive type

 수치형

 true or false

 bloolean(1bit)

 문자형

 char(2byte)

 정수형

 byte(1byte)

 short(2byte)

 int(4byte)

 long(8byte)

 실수형

 float(4byte)

 double(8byte)

 무치형

 

 void()

 

   - 형변환 : 기본적으로 강제/자동 형변환이 일어나지만, 연산에 의해서는 자동형변환이 일어나지 않는다.

 short a = 5; // 정수 5는 자동으로 short로 형변환 되어진다

 short b = 10;

 short sum = a+b ; // 하지만 연산 과정인 a+b에서는 자동 형변환이 일어나지 않아 int형식으로 sum에 입력 되기 때문에 오류가 난다.

 

 정수는 기본적으로 int의 형을 갖고

 실수는 Double의 값을 갖는다.

 float f = 0.123456789123456789F;  // double형인 실수를 float로 형변환 하여 저장하게된다.
 double d = 0.123456789123456789; //기본으로 실수는 double형이기 때문에 double에 자동으로 맞추어 출력된다.

 

  - cast :

  - convert :

 

  ii) 외장형(추상형) : Reference type = Class, Interface, Enum

    (ps. C 언어의 외장형(추상형) : User-Defined type = 구조체(Struct), Union, Class, Pointer)

  - Heap 공간을 이용한다. (변수는 값을 갖는게 아니라 그 값의 주소를 갖는다.(integer변수와 같은 4바이트를 갖는다)) 

  - String은 new 없이 사용 할 수 있는  클래스이다. ( 많이 사용하기때문에 컴파일러가 대신 new를 만들어 준다.)

 정식적인 사용 방법 :

 String str = new String("Hello");

 축약 방법 :

 String str1 = "Hello";

  - call by value, call by reference value

  Value Copy

 public class ValueCopy{
 public static void main(String[] args) {
  Test t = new Test();
  t.su = 5;
  t.num= t.su; //값복사
  System.out.println("t.num="+t.num);
  t.su =100;
  System.out.println("t.num="+t.num);

 }
}

class Test{
 public int su, num;
}

  Reference Copy

 public class ReferenceCopy{
 public static void main(String[] args) {
  Demo d = new Demo();
  d.su = 5;
  Demo d1 = new Demo();
  d1 = d; //주소복사
  System.out.println("d1.su = "+d1.su);
  d.su=100; // d 가 가지고 있는 주소를 d1에게 주었기 때문에 값이 변한다.
  System.out.println("d1.su = "+d1.su);
 }
}

class Demo{
 public int su;
}

 

 4)포인터와 레퍼런스의 차이

  - 포인터는 변수 메모리의 절대번지를 접근한다.

  - 레퍼런스는 메모리에 접근을 할 수 없다. (그래서 JAVA에서는 디바이스를 직접 생성 할 수 없다.)

 

 5) 상수 (Constants)

  - 자바에서 상수는 final keyword를 갖는다.

  - 변수명은 대문자와 특수문자 (_)를 사용한다.

 

7. 이름 정하기 (Naming Conventions) : 권고 사항으로 개발자들이 개발할 때 더욱 편하게 이름을 작성하는 표기법

 1) Pascal casing (대문자 표기법)

  - class = 명사를 사용하며 2개 이상의 단어 합성 시 첫글자는 대문자.  

  - interface = 형용사형 이나 명사형을 사용한다.

  - 상수 = 모두 대문자를 쓰며 2단어 이상 합성할 때 사이에 (_)를 쓴다.

 2) Camel casing (소문자 표기법)

  - Method = 소문자로 동사형을 사용한다. 2개 이상 합성단어의 첫문자는 대문자.

  - 변수명 = 소문자 명사형

 

 

 

--------------------------------------------------------------------------------------------------------

 - UNC = 윈도우에서 네트워크 상의 컴퓨터에 접근하기위해 사용하는 ID (LAN 환경 안에서만 사용 가능하다)

 - vachar 와 char : 메모리 용량의 사용을 줄이기 위해 가변적인 공간을 저장하였지면 현재는 메모리의 용량보다 속도가 더 중요하기 때문에 작은 데이터를 저장하더라도 char를 사용하는게 더 빠르다.

 - Stack 영역에서 Heap영역으로 옮기는 것을 boxing이라 하고, 그 반대 과정을 unboxing이라고 한다.


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

자바 배열이란?  (2) 2011.03.24
자바 제어문(조건/반복/분기)  (2) 2011.03.24
JAVA 문법과 연산자  (2) 2011.03.24
JAVA의 특징과 설치  (2) 2011.03.24
자바(JAVA)란?  (1) 2011.03.24

1. 각 언어들의 차이

 C/C++

JAVA

C# 

 #Include

 기계어

 종속적

 플랫폼

 중간언어 존재(ByteCode)

 독립적

 플랫폼

 중간언어 존재

 독립적

 

2. 자바 플랫폼

 1) 자바 프로그램을 실행 할 수 있는 H/W 나 S/W 적인 환경을 말한다.

 2) 2개의 구성요서

   - Virtual Machine : OS 위에 실행된다.

   - API (Application Programming Interface) : 이미 정의 되어있는 API들을 라이브러리를 통해 확인 할 수 있다.

 

3. 자바의 특징

 1) 심플하다 (C언어의 복잡한 내용들을 제거)

 2) 구조에 중립적이다 (어떠한 OS 환경에서나 실행 가능)

 3) 객체지향적이다

 4) 이식성/휴대성있다.

 5) 분산된다.

 6) 향상된 퍼포먼스 ( C보다 속도가 빠르다고는 할 수 없지만...)

 7) MultiThreaded

 8) Robust

 9) 동적이다.

 10) Secure

 11) Write Once, Run Anywhere

 

 

 

4. 설치 후 환경변수 설정 : 자바 프로그램이 실행될 때 자바의 설치 유무와 경로를 OS에 물어본다.

 1) JAVA_HOME : 현재 자바가 설치되어있는 경로를 설정한다.

 2) Path : (%JAVA_HOME%\bin;)어느 위치에서든 java의 명령어를 사용 할 수 있도록 하기 위해 설정한다. (경로는 왼쪽에 있을 수록 우선순위가 높다. ex)1.6버전 이후에 1.5버전을 설치하여 1.5버전이 왼쪽으로 설정되었다면 구버전인 1.5버전이 최 우선순위를 갖게 된다.)

 3) classpath는 개인이 만든 라이브러리를 임포트 할 때 필요한 것으로 차후 10장에서 필요하게 될 것이다.

 4) 삭제는 JRE삭제 후 JDK를 지운다. (설치의 반대순) 환경변수 역시 직접 제거하여준다.

 

5. 실행

public class HelloWorld

public static void main(String [] args){

  System.out.println("Hello,World");  
 }

}

 1) 파일의 이름은 Class의 이름과 같아야하고 (대소문자 구별한다.) 확장명은 .java로 해야한다.

 2) java 클래스명 으로 실행한다.

 

6. API활용

 1) Java Se6 Documentation 다운로드 후 API폴더의  Index.html 보기.

 

 

 

 

7. 자바 프로그램은 하나의 Public class 를 갖고 그 안에는 하나의 main 메소드를 갖는다.

 

8. EditPlus의 환경설정 : Tools - Configure User Tools - Group 을 설정하면된다. (단축키는 ctrl+1,ctrl+2)

 1) 컴파일

   - Add Tool : program을 선택한 후 이름을 Compile이라 준 다음 명령어(commend)의 경로 (C:\Program Files\Java\jdk1.6.0_23\bin\javac.exe)를 지정한다.

   - Argument : 파일이름을 선택한다. (명령어의 입력값)

   - Initial directory : 파일이 있는 위치 설정 ( 절대경로를 주는 것이 낫다.)

   - Capture output : 결과를 출력하여준다.

 2) 실행

  - 위와 동일하게 설정하며 Command는 java.exe로 설정하고 Argument는 $(FileNameNoExt)를 설정한다.

  - Toolbar에 Users에서 단축 아이콘을 만들 수 도 있다.

 

 

 

------------Linux에서 자바 설치 -------------------

 

1. 홈페이지에서 OS 를 리눅스로 선택하여 rpm버전이 아닌 bin 버전으로 받는다

2. bin파일의 실행 권한이 없기 때문에 chmod로 실행 권한을 준 다음 실행으로 압축을 푼다

3. 보통 /usr/local/ 의 경로에 설치 파일을 보관 하므로 압축이 풀린 파일을 이동시킨다.

  - 리눅스는 윈도우와 다르게 레지스트리가 없기 때문에 설치라는 개념이 없다. 그러므로 압축이 풀린 파일의 이동이 자유롭다.

 4. 환경 변수 설정

  1) vi /etc/profile

  $ JAVA_HOME=[설치경로]

  $ CLASSPATH=.:$JAVA_HOME/lib/tools.jar  //현재 위치와 라이브러리위치 모두 입력해야함. 구분선은 콜론

  $ PATH=$JAVA_HOME/bin:$PATH

  $ export JAVA_HOME

  $ export CLASSPATH

  $ export PATH

 2) 등록된 java를 재부팅없이 OS에 적용

 $ source /etc/profile


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

자바 배열이란?  (2) 2011.03.24
자바 제어문(조건/반복/분기)  (2) 2011.03.24
JAVA 문법과 연산자  (2) 2011.03.24
JAVA 언어의 법칙  (1) 2011.03.24
자바(JAVA)란?  (1) 2011.03.24

+ Recent posts