본문 바로가기

자바/자바 기초

둘쨋날

예제1) byte, long


public class Ex1 {

public static void main(String[] args) {

// byte : 1byte(-128~127 까지 표현)

byte a, b, c;

a=20;

b=10;

// b=200; 

System.out.println("a:"+a);

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

// c=a+b; // 사칙연산(+,-등) 결과는 int 형이므로 error ( 사칙연산에서는 자동으로 int형으로 바뀌므로)

// 자료형이 큰 값을 적은 자료형에 대입할 수 없다.( 그래서 short와 byte만 바꿔줘야 한다. 더큰 long형은 바꾸지 않는다. )

c=(byte)(a+b); // c는 byte형으로 선언한상태이다. 따라서 a+b의 결과가 int이기 때문에 byte형으로 변환해야 한다. 그래야 byte형인 변수 c에 값을 집어 넣을 수 있다.

System.out.println("c:"+c);


a=127; b=2;

c=(byte)(a+b); //오버플로우(overflow)되었다. 값이 넘치면서 마이너스가 나온다. 부호에 들어갈 숫자까지 침범하면서 생긴 현상.

System.out.println("c:"+c); // -127 이 출력된다.



// long d=2200000000; // 에러. 22억은 int가 아님

long d=2200000000L; // 아래 24문에서 사칙연산을 통해서 int형으로 바뀌어서 에러나는 것을 숫자 뒤에 'L'을 붙이면서 에러 해결

System.out.println("d:"+d);

int x,y;

long z;

x=2000000000;

y=1000000000;

// z=x+y;  // int+int=>int, overflower. 쓰레기값

// z=(long)(x+y);  // 쓰레기값, x+y값을 long형으로 바꾸는 것은 의미가 없다.

z=(long)x+y; // long+int=>long(큰 자료형으로 변환) , x하나만 long으로 바뀜-> 큰 자료형과 작은 자료형이 연산하면 큰자료형을 바뀐다.

    System.out.println("z:"+z);

}

}


예제1 결과)


a:20

b:10

c:30

c:-127

d:2200000000

z:3000000000


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


예제2) float, double


public class Ex2 {

public static void main(String[] args) {

float a;

double b;


// a=0.1; // error, 0.1은 배정도형(double) 상수

a=0.1f; // float형  숫자 뒤에는 f를 붙여준다.  만약 float형에 정수(1이나2)를 넣어주었다면 f를 붙이지 않아도 된다. 하지만 소수점일 때는 붙여주어야한다.

b=0.157e+7;  // e+7 -> 10의7승을 곱한다.

System.out.println("a:"+a);

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

}

}


예제2 결과)


a:0.1

b:1570000.0


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


예제3) float와 double의 차이


public class Ex3 {

public static void main(String[] args) {

float x=0;

double y=0;


// 100000번 반복 실행

for(int i=1; i<=100000; i++) {

x+=100000;  // x=x+100000;

y+=100000;  // y=y+100000;

}


// double이 float에 비해 정밀도가 높다. 오차가 float에서 발생한다.

System.out.println("float:"+(x/100000));

System.out.println("double:"+(y/100000));

}

}


예제3 결과)


float:9999.6055

double:100000.0


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


예제4) char, boolean


public class Ex4 {

public static void main(String[] args) {

/*

ASCII 코드

 A: 65(01000001) ~ Z: 65

 a: 97 ~ z: 122

 '0': 48 ~ '9': 57

  엔터: 13


  자바는 문자를 표현할 때 UTF-16을 사용함

   UTF-16은 모든 문자를 2byte로 표현

  웹은 UTF-8 또는 EUC-KR로 사용

   UTF-8은 영문자 1byte, 한글 3byte로 표현

*/

char a='A';

char b=(char)66;

char c='대';

char d='\u0050';  


System.out.println(a);

System.out.println(b);

System.out.println(c);

System.out.println(d);


boolean x=false;

// 1byte, true 와 false 만 표현가능

System.out.println(x);

}

}


예제4 결과)


A

B

P

false


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


예제5) import를 이용한 프로그램(자세한건 나중에)


import java.io.InputStreamReader;

import java.io.BufferedReader;

import java.io.IOException;


public class Ex5 {

public static void main(String[] args) throws IOException {

String name;

int kor, eng;

int tot;


BufferedReader br=new BufferedReader(

new InputStreamReader(System.in));


System.out.print("이름 ?");

name=br.readLine();

System.out.print("국어 ?");

kor=Integer.parseInt(br.readLine());

System.out.print("영어 ?");

eng=Integer.parseInt(br.readLine());


tot=kor+eng;

System.out.println("이름:"+name);

System.out.println("총점:"+tot);


}

}


예제5 결과)  이름과 국어, 영어 점수를 실행중에 적으면 이름과 총점이 자동으로 출력되는 프로그램이다


이름 ?xxx

국어 ?xx

영어 ?xx

이름:xxx

총점:xx 


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


예제6)


import java.io.IOException; 


public class Ex6 {

public static void main(String[] args) throws IOException {

// char ch;


System.out.print("한문자를 입력 하삼?");

/*

read() 메소드는 IOException 처리를 해야 한다.

*/

// ch=(char)System.in.read();


//System.out.println("입력한문자:"+ ch);


int a;

a=System.in.read();

System.out.println("입력한문자:"+a);

}

}


예제6 결과) 한글자를 입력하면 입력한 문자에 ASCII코드로 변환되어 숫자가 출력됨.


한문자를 입력 하삼?xx

입력한문자:xx


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


예제7)


import java.io.IOException;

import java.io.InputStreamReader;

import java.io.BufferedReader;


public class Ex7 {

public static void main(String[] args) throws IOException {

int a,b,c,d,e,f;


BufferedReader br=new BufferedReader(

new InputStreamReader(System.in));


System.out.print("첫번째수 ?");

a=Integer.parseInt(br.readLine());  //integer.parseInt(br.readLine()) 문자를 정수로 바꾸는 문장

    // integer클래스의 parseInt 메소드를 br.readLIne()으로 입력된 매개변수를 적용 시켜 호출


System.out.print("두번째수 ?");

b=Integer.parseInt(br.readLine());


c=a+b;

d=a-b;

e=a*b;

f=a/b;


System.out.println("합:"+c);

System.out.println("차:"+d);

System.out.println("곱:"+e);

System.out.println("몫:"+f);

}

}


예제 결과7) 첫번째수와 두번째수를 입력하면 자동으로 합,차,곱,몫이 계산된다.


첫번째수 ?10

두번째수 ?10

합:20

차:0

곱:100

몫:1


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


예제8)


import java.io.IOException;

import java.io.InputStreamReader;

import java.io.BufferedReader;


public class Ex8 {

public static void main(String[] args) throws IOException {

int a,b,c,d;


BufferedReader br=new BufferedReader(

new InputStreamReader(System.in));


System.out.print("가로 ?");

a=Integer.parseInt(br.readLine());


System.out.print("세로 ?");

b=Integer.parseInt(br.readLine());


c=a*b;

d=(a+b)*2;


System.out.println("넓이:"+c);

System.out.println("둘레:"+d);


}

}


예제8 결과) 가로와 세로를 입력하면 넓이와 둘레가 계산되는 프로그램


가로 ? 10

세로 ? 10

넓이:100

둘례:40


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


예제9)


import java.io.IOException;

import java.io.InputStreamReader;

import java.io.BufferedReader;


public class Ex9 {

public static void main(String[] args) throws IOException {

int a;

float c,d;


BufferedReader br=new BufferedReader(

new InputStreamReader(System.in));


System.out.print("반지름 ?");

a=Integer.parseInt(br.readLine());


//System.out.print("세로 ?");

//b=Integer.parseInt(br.readLine());


c=a*a*3.14f;

d=a*2*3.14f;

System.out.printf("%1$d*%1$d*3.14=%2$f\n",a,c); 

    //1$는 뒤에 오는 첫번째 변수(a)를 가리킨다. 2$는 두번째 변수(c)를 가리킨다.

  //1$ 표현을 한번 썼다면 뒤에도 2$,3$ 순서를 계속 매겨줘야한다.

System.out.println("넓이:"+c);

System.out.println("둘레:"+d);

}

}


예제9 결과) 반지름을 입력하면 출력하게되는 프로그램


반지름 ?10

10*10*3.14=314.00000

넓이:314.0

둘레:62.800003


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


예제10) printf 사용방법


public class Ex10 {

public static void main(String[] args) {

System.out.println("01234567890123456789");

int a=12, b=35;


//printf() 메소드 : JDK 5.0부터 사용 가능

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

System.out.printf("%d %d\n", a, b);  // %d -> 정수를 출력한다.


System.out.printf("%5d %5d\n", a, b); //  %5d -> 5칸을 사용하여 정수를 출력하라


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

System.out.printf("%d+%d=%d\n",a,b,(a+b)); // \n 이나 %n 이나 똑같은 명령어다. 라인 넘기기.


System.out.printf("%d\n", 123456);

System.out.printf("%,d\n", 123456); // %,d -> 정수의 3자리마다 콤마가 들어간다.


System.out.printf("%f\n", 3.14); // %f -> 실수 사용

System.out.printf("%10.2f\n", 333.14); // %10.2f -> 10칸(소수점과 점 모두 포함)을 사용하여 소수점 2자리까지만 실수 출력하라.

System.out.printf("%.1f\n", 3.14); // %.1f -> 소수점 한자리까지만 실수 출력

System.out.printf("%3.2f\n", 314.556); // %3.2f -> 3칸사용 하라는 이야기지만 넘는 것은 자동으로 확장한다. 소수점은 2자리 출력이므로 3자리에서 반올림하여 출력.


System.out.printf("%d %% Dd = %d%n", 10, 4, 10%4); // %밑으로 그대로 출력한다.

System.out.printf("%10d%n", 123); // 10칸 사용하여 정수 출력.


String str="seoul korea";

System.out.printf("%s\n",str); //%s 문자열 출력

System.out.printf("%5s\n",str); // 전체가 5칸이다.(실제 출력은 칸수가 모자라도 모든 글자 그대로 출력해버린다.)

System.out.printf("%10.5s\n",str); // 전체가 10칸이고 5자만 출력해라.

System.out.printf("%.5s\n",str); //  5자만 출력해라.


System.out.printf("%c %C %c\n", 'a','a','\u0041'); // u0041은 유니코드?


System.out.printf("%tF\n",

java.util.Calendar.getInstance()); // %tF -> 날짜 표시

System.out.printf("%tT\n",

java.util.Calendar.getInstance()); // %tT -> 시간 표시

}

}


예제10 결과)


01234567890123456789

12 35

12 35

    12        35

12+35=47

12+35=47

123456

123,456

3.140000

333.14

3.1

314.56

10 % Dd = 4

123

seoul korea

seoul korea

 seoul

seoul

a A A

2013-05-07 // 프로그램 실행시킨 날짜가 출력된다.

22:20:45  // 프로그램 실행시킨 시간이 출력된다.


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


예제11)


import java.io.IOException;

import java.io.InputStreamReader;

import java.io.BufferedReader;


public class Ex11 {

public static void main(String[] args) throws IOException {

int a,b;


BufferedReader br=new BufferedReader(

new InputStreamReader(System.in));


System.out.print("첫번째수 ?");

a=Integer.parseInt(br.readLine());


System.out.print("두번째수 ?");

b=Integer.parseInt(br.readLine());


System.out.printf("%d+%d=%-10d",a,b,a+b);

System.out.printf("%d-%d=%d%n",a,b,a-b);

System.out.printf("%d*%d=%-10d",a,b,a*b);

System.out.printf("%d/%d=%d%n",a,b,a/b);



/*

System.out.println("합:"+c);

System.out.println("차:"+d);

System.out.println("곱:"+e);

System.out.println("몫:"+f);

*/


}

}


예제11 결과)  첫번째수와 두번째수를 입력하면 합,차,곱,몫이 나오는 프로그램.


첫번째수 ?10

두번째수 ?20

10+10=20        10-20=-10

10*20=200       10/20=0


'자바 > 자바 기초' 카테고리의 다른 글

변수를 바꿔주는 방법(스와프)  (0) 2013.05.09
비트단위 부정 연산자  (0) 2013.05.09
관계연산자  (0) 2013.05.09
++ 연산자  (0) 2013.05.09
첫째날  (0) 2013.05.07