티스토리 뷰
※ 데이터 특징
1)형변환 : value 존재 -->그릇안에 담긴다(타입)
기계
100 byte, short, int , long
1.1
(1) 자동 형변환 : 정해진 규칙에 따라 컴파일러가 바꿔주는 것
-> 큰 타입으로 바뀜
EX) 정수 타입 < 실수 타입
( 무조건 실수가 더 큼 )
long (8byte)< float(4byte)
-byte가 크더라도 실수가 더 큰 타입
byte+byte -> int로 바뀌어서 결과가 나옴
- 정수/정수 --> 정수
- 실수/정수 --> 실수 결과값에 대한 타입이 자동으로 바뀐다
(실수->연산을 더 규칙적으로 할수 있음)
- byte, short, char -->연산할때 int형으로 바뀜
package castingex;
public class CastingTest {
public static void main(String[] args) {
System.out.println(10/3);
System.out.println(10/3.0);
System.out.println(10/(double)3);
}
}
System.out.println(10/3.0);
-> 정수/실수
1) 나눗셈 보다 형 변환을 먼저 한다
2) 결과는 자동형변환이 되어 3.33333이 나온다
--> 10 = 32bit
3.0 = 64bit
(bit 수 안 맞음)
--> 컴파일러가 10을 10.0으로 자동 형 변환
10.0/3.0 이 됨
--> 결과값 3.33333 이 나옴
(1)-1. byte
-> 파일에 있는 데이터를 읽을 때 많이 사용
byte b =128 ; ( x )
--> -128~127의 범위 이므로
short s =128 ; ( o )
s = 34567 ; ( x )
int i = 34567 ; ( o )
byte b1 = 1 ;
byte b2 = 2 ;
byte b3 = b1+b2 ; ( x )
--> cpu 가 계산 할 때 크기가 맞지않아서 계산할 수가 없다
#해결 방법 1.
int b3 = b1+b2
--> int 로 바꾸어서 계산을 함
--> 기계장치를 맞춰줌 저장한 데이터의 크기를 int로 변환하여 계산
#2.
byte b3 = (byte) (b1+b2) ;
--> 덧셈한 결과가 int 이므로 덧셈을 먼저 시켜놓은 후 그 결과를 byte 로 바꿔야 함
--> +에다가()로 묶어줌
package castingex;
public class CastingTest {
public static void main(String[] args) {
System.out.println('A');
System.out.println('A'+" "+(int)'A');
System.out.println('A'+1);
System.out.println((char)('A'+1));
// 아스키코드
// ('A'+1)먼저 계산후 (char)문자로 변환
}
}
-> byte 끼리 연산하면 int 로 바뀜
-> char 끼리 연산하면 int 로 바뀜
(2)강제 형 변환 : 내가 바꾸는 것
-> 내 주도 하에 원하는 타입으로 바꾸는 것
- (타입) 대상체
- 5.6 (double) 타입->더블을 더블로 바꾸는 것은 의미가 없다
` - 5.6 (int) 타입 ->.6이 없어진다 소수부가 누락되고 정수만 남는다
(3) boolean
package castingex;
public class CastingTest {
boolean data = 10>3;
//참 :true 거짓 : false
//왼쪽에 있는 값이 항상 주어가 되어야함 => 10은 3보다 크다 (규칙)
System.out.println("10>3 :"+data);
data =10<3 ;
System.out.println("10<3 :"+data);
}
}
※ 실습
#1.
변수
정보
1. 내정보
2. 짝 정보
이름 나이 주소
1. 홍길동 23 서울시 동작구
2. 이순신 48 충남 아산시
나이합 : 71
평균 나이 35.5
package myinfo;
public class VariableTest {
public static void main(String[] args) {
String name="";
int age=0;
String address="";
name="홍길동";
age =23;
address = "서울시 동작구";
String name2="이순신";
int age2 = 48;
String address2="충남 아산시";
int hap = age+age2;
double avg = hap/2.0;
//소수점까지 계산하기위하여 double 사용
System.out.println("이름\t나이\t주소");
System.out.println(name+"\t"+age+"\t"+address);
System.out.println(name2+"\t"+age2+"\t"+address2);
System.out.printf("나이 합 :%d살 나이 평균:%.1f살\n",hap,avg);
}
}
#2.
책정보
제목 작가 가격 페이지수
1. 짝 책정보
2. 내 정보
3.
세권의 가격 총계 :
평균 가격 :
package myinfo;
public class VariableTest2 {
public static void main(String[] args) {
String name="";
String writer="";
int price=0;
int page=0;
name="해리포터";
writer="조앤롤링";
price=18000;
page=430;
String name2="미운오리새끼";
String writer2="오리";
int price2=12000;
int page2=56;
String name3="덕혜옹주";
String writer3="조선";
int price3=22000;
int page3=560;
int pricehap = price+price2+price3;
double avg = (price+price2+price3)/3;
System.out.println("제목\t작가\t가격\t페이지 수");
System.out.println(name+"\t"+writer+"\t"+price+"원"+"\t"+page+"쪽");
System.out.println(name2+"\t"+writer2+"\t"+price2+"원"+"\t"+page2+"쪽");
System.out.println(name3+"\t"+writer3+"\t"+price3+"원"+"\t"+page3+"쪽");
System.out.printf("세권의 가격 총 계:%d원 \n 평균 가격 :%.1f원",pricehap,avg);
}
}
입력받기
-> 사용자로부터 데이터를 받아서 변수에 넣을 수 있다
1. 기능을 사용하는 메서드를 호출
2. 항상 메서드는 클래스에 있기 때문에 그 메서드가 속해 있는 클래스를 찾아야 함
3. Scanner라는 클라스에는 다른 사람으로 부터 값을 입력 받기 위한 메서드가 준비되어 있다
4. 해당 클래스를 소스안으로 불러들인다
--> import
5. 클래스를 new 키워드와 함께 등록
--> 인스턴스 생성
6. 인스턴스를 부르기 위한 이름을 하나 만들어 놓기
--> 변수 == '객체'
7. 객체를 통해서 메서드 호출
--> 객체.메서드()
8. 메서드 종류
정수 값 입력 : nextInt()
실수 값 입력 : nextDouble()
단어 입력 :next()
문자 입력 :nextLine()
package scannerex;
import java.util.Scanner;
//import 생성
public class ScannerTest {
public static void main(String[] args) {
//new Scanner(); - 인스턴스 만들기
//타입 변수 = new Scanner();
//-Scanner 인스턴스에 이름(변수)붙임
Scanner scan = new Scanner(System.in);
// scan 이라는 키보드를 만듬
System.out.println("현재 보유하고 있는 금액을 입력하세요 :");
int don = scan.nextInt();
//정수 int
System.out.println("입력한 금액 : "+don+"원");
System.out.println("좌안 시력 : ");
double leftsight = scan.nextDouble();
System.out.println("우안 시력 : ");
double rightsight = scan.nextDouble();
// 실수 double
System.out.println("평균시력 :"+(leftsight+rightsight)/2);
}
}
'Programing > Java' 카테고리의 다른 글
Java1 - 06. 연산자 1(operator) (0) | 2017.04.14 |
---|---|
Java1 - 05. Scanner 활용/ Dialoginput (0) | 2017.04.13 |
Java1 - 03. 변수(Variable) (0) | 2017.04.12 |
Java1 - 02. 출력문 . 자료형 . byte (0) | 2017.04.10 |
Java1 - 1. 기본구조 (0) | 2017.04.07 |