예제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 |