longer 2012. 4. 9. 11:12

자바의 장점

Java는 exe와 달리 JVM은 어느운영체제이냐에 따라에 구애받지 않고 독립적으로 사용하능하게 해준다.

(운영체제에 독립적)

자바 설치시작!~!>>>

시스템속성-고급시스템- 환경변수 추가
                                                        변수이름: JAVA_HOME
                                             
변수값: C:\Program Files\Java\jdk1.6.0_31

시스템변수에 Path라는 변수를 편집해준다
%JAVA_HOME%\bin; (기존에 Path는 수정하지 말고 맨앞줄에 추가만해준다.)

java나 javac 도스창에 치고
java-version이 잘 설치되었는지 확인한다.

메모장에 아래와 같이 입력하고

class Test
{
 public static void main(String[]args)
 {
  System.out.println("hello world");
 }
}

Test.java로 (모든파일)로 저장해준후
cmd창을 열고 Test.java가 있는 경로로 이동해준후
*d:  (D드라이브로 이동)
(dir로 해당파일에 Test.java가 잘 있는지 확인한다)

javac Test.java를 실행해준다.    //클래스파일 생성
이상이 없으면 java Test를 쳐서 실행하면 메모장에 출력하고자 하는      //클래스 실행
Hello world가 보인다.    

 

정리:Javac 자바파일.java =>class =>실행

java 자바파일 실행

이클립스를 다운받고 실행해준다.

이클립스 사용하기 >

<폰트조정>   window -General - Appearance -Colors and font
<소스코드라인보기>  라인줄 - 오른쪽마우스 -Line number(소스코드라인넘버보기)

실행하기:Run -Run as- java application

 

System.out.println ->한칸뛰고 출력  vs System.out.print->줄이어서 출력

Sysout 치고 ctrl + 스페이스바 (자동으로 출력라인을 입력해준다)

java는 대문자와 소문자를 다르게 식별한다.(주의) - '_'랑 문자,$(앞에 가능) , 숫자(앞은x)

자료의 Type

byte(1byte) - short(2byte) - int(4byte) - long(8byte) -float(4byte) - double(8)

                    char(2)

 

형변환

long타입은 끝에 l을 써줘야 한다.   float은 끝에 f를 붙여줘야 한다.

자동형변환 (byte - short - int - long - double)

int에서 byte로 강제형변환(위에 역순은 형변환이 되지 않음)

int pp=10;

byte pp2=(byte)pp;

char는 int로 자동형변환이 가능하다. 따라서 변환시 char를 아스키코드(ex.a->65) 로 자동형변환해준다.

byte r1=10;

byte r2=10;

byte r3=r1+r2; //에러남(r1+r2는 연산이되는 동시에 int형으로 자동으로 변경되기때문에)

따라서 byte r3 = (byte)(r1+r2); //r1+r2전체를 byte로 변환시켜준다.(byte와 short까지만 위와같은 현상이 발생하므로 int형으로 강제변환을 시켜주어야한다.)

 

자바에서 출력시 연산(숫자)과 연결(문자) 차이
  System.out.println(3+4+"입니다");    //7입니다 (우선순위가 자동으로 숫자(int)에 부여되므로 연산)
  System.out.println("입니다"+3+4);   //입니다34  (우선순위가 자동으로 문자에 부여되므로 연결)

따라서 연산자로 인식하고자 한다면 3+4에 괄호를 써서 우선순위를 숫자에 부여해준다.

 

변수를 저장할떄

스택/힙/메서드영역이 있다.

int su=10;

int su2=20;

double result=su/su2;  ->0.0  int변수두개를 나누므로 int로 변환해주니 0.0

따라서 duble형으로 표현하려면 강제형변환필요 (double)su/su2;

만일 (double)(su/su2)로 하면 똑같이 0.0나옴. 그이유는 괄호안에를 int로 처리해줬기떄문에 0.0으로 이미 셋된상태에서 double을 씌워주니 위와같은 현상이 발생

산술연산 ->  + - * /

비교연산 -> < > ,=  >=  ==  !=

논리연산  &&(and,그리고)  ||(or,또는) !(not,~가 아니다)

&&,&를 and로 사용할 수 있는데 &&는 앞이 F인경우 자동적으로 뒤에값은 계산을 해주지않음

&는 앞에와 뒤를 무조건 계산함.  (따라서 효율적으로 &&이 더좋음)

||,|를 or로 사용할 수 있는데 앞이 ||인 T인경우 자동적으로 뒤에값은 계산을 해주지 않음.

|는 앞이 T여도 뒤를 무조건 계산함(따라서 효율적으로 ||이 더좋음)

int x=10;

int z=4;

int z=2;

x*=y+z;     //y+z를 먼저 더하고 그값에 x를 곱한다. 60

전위연산 y=++x ->y=11,x=11 / 후위연산 y=x++ ->x=11, y=10  (실행후 11) 

 

int x=10;

int y=++x + x++ + --x + x--;

System.out.println(x,y);

\\Kitri-E00    (공유 PC명)

 

삼항연산자 -(조건연산자)

int su=10;
int result=(su>=10)? 20:-20;
System.out.println(result);

 

점수입력받고 총점,평균입력하기

import java.io.*;
public class InputTest {

 public static void main(String[] args) throws Exception{
 
  BufferedReader in
  =new BufferedReader(new InputStreamReader(System.in));
  
  String name;
  int kor;
  int eng;
  int math;
  System.out.println("이름을 입력하세요");
  name=in.readLine();
  System.out.println("국어점수를 입력하세요");
  kor=Integer.parseInt(in.readLine());
  System.out.println("영어점수를 입력하세요");
  eng=Integer.parseInt(in.readLine());
  System.out.println("수학점수를 입력하세요");
  math=Integer.parseInt(in.readLine());
  int total = kor+eng+math;
  double avg=(double)total/3;
  System.out.println("이름  국어   영어   수학   총점   평균");
  System.out.println("=======================================");
  System.out.println(name+"    "+kor+"    "+eng+"    "+math+"    "+total+"    "+avg);
   
 }
}