JAVA 자바 데이터 형변환, 변수 종류 및 적용예제
#데이터의 형 변환
a. 묵시적 형변환
-자동형 변환 또는 promotion이라고 한다.
(작은것->큰 byte로 자동변환)
byte -> short -> int -> long -> float -> double
char - > int
(바이트 값을 쇼트 값에 저장시켜도 문제 없고, 쇼트 값을 인트값에 저장시켜도 문제 없다.)
+ 큰값을 작은 값에 넣으려고 할때
int 보다 작은 데이터형간의 연산결과는 int로 자동으로 변경된다.
예> short s = 10; short s2 = 20; short s3 = s + s2; //에러
앞 s3는 short의 형식 값이고, 결과 값 s+ s2는 int의 형식 값이라 에러 생성
해결: int s3= s+ s2; or short s3= (short) (s+ s2);
-기본 데이터형 또는 참조 데이터형(상속관계) 모두 가능하다.
+ 명시적 형변환
//명시적 형변환
int m = 10;
short n2 = (short)m;
ex.
[public class typeCasting {
public static void main(String[] args) {
// TODO Auto-generated method stub
//데이터 타입 변경(자동으로 변환)
//1.byte->short->int->long-> float-> double(작은 -->큰)
byte b =10;
short b2 = b;
int b3 = b2;
long b4 = b3;
float b5 = b4;
double b6 = b5;
//2.char -> int
char n ='A';
int n2 = n+1;
System.out.println(n2);
//3.int보다 작은 타입의 연산결과는 int로?
short x = 10;
short x2 = 20;
int x3 = x+ x2;
//4. 문자열과 + 문자열이 아닌 데이터-> 연결된 문자열로 변환
System.out.println("10"+1+2+3);
System.out.println(1+2+3+"10");
// System.out.println("10"-1);
//문자를 정수로 변환
String k ="10";
System.out.println(k+20);//1020
int k2 = Integer.parseInt(k);//문자->정수 int변환
System.out.println(k2+20);//30
//정수-> 문자로 변환
//10=>>"10"
//자바스크립트 : toString()
//자바: String.valueOf(10) ->"10"
//String.valueOf(3.14)->"3.14"
//String.valueOf(true)->"true"
System.out.println(String.valueOf(10)+10);//1010
//5.작은타입과 큰타입이 연산-> 큰타입
int p =100;
double p2 = 3.14;
double p3 = p+p2; ]
**문자를 숫자로 바꾸는 문법
integer.parseInt(문자 10을 정수 10으로 변환)
ex. +변수가 선언된 블럭이 변수를 사용 할 수 있는 범위
메인블럭에서 선언된 값은 하위 블럭 안에서도 사용 가능.
**위에서부터 차례로 선언되기 때문에, A블럭 뒤에 test 변수 선언이 된다면, A블럭의 sysout(test)가 에러남.
public class Sample02_variable5_1 {//클래스블럭
public static void main(String[] args) {//main블럭
// TODO Auto-generated method stub
//자바는 블럭 scope(자바스크립트는 함수 scope)
int test =100;
{//A블럭
int num =10;
System.out.println(num);
System.out.println(test);
}//A 블럭
//System.out.println(num);//블럭 밖에서는 인식불가
{//B블럭
int num=20;
System.out.println(num);
System.out.println(test);
}//B블럭
//System.out.println(num);
}//main 블럭
}//클래스블럭
#변수의 사용범위(scope)
함수나 메인 안에 선언된 변수는 #로컬변수, 메서드 안에서 선언.
#인스턴스변수, 멤버변수 : 클래스 단에서 선언된 변수
멤버 변수를 메인단에서 사용하려면 새로운 객체 생성해서 사용.
public class Sample02_variable5_3 {
String name;
char c;
int m; //인스턴스 변수(instance variable)
//생성시점:객체생성(클래스생성) new ~ 객체소멸(클래스종료), new키워드사용
//메모리 : 힙(heap)
//초기화 안하면 자동초기화된다.
//정수 :0, 실수:0.0, char:'u\0000', boolean:false, 참조행 :null
static int k; //static변수(클래스변수)
//생성시점: 프로그램시작~ 프로그램 종료, new없이 사용
//메모리: method area(클래스정보, static,상수,,,)
//초기화 안하면 자동초기화 된다.
public static void main(String[] arges) {
//로컬변수(local variable):메서드안에서 선언
//생성시점 : 메서드호출~ 메서드 종료
//메모리 :스택(stack)
//주의할점:반드시 사용전에 초기화해야한다.
int n =0;
System.out.println(n); //메인 로컬변수 사용
Sample02_variable5_3 test_1=new Sample02_variable5_3();
//멤버변수 사용을 위해 객체 생성
System.out.println(test_1.name);//생성 객체 멤버 변수 사용
}
}
ex.
public class Member_Test {//class블럭
//멤버, 인스턴스변수 - class 블럭에 선언
//선언 후 초기화를 하지 않아도 된다. 초기화 불필요-사용시자동초기화
//함수 안에 new로 필요한 만큼 객체 생성 사용
String name;
String phoneNumber;
String address;
char gender;
public static void main(String[] args) {//main 블럭
// TODO Auto-generated method stub
//로컬변수(메소드/함수에 선언된 변수), 선언+초기화후에 사용
int num =10;
System.out.println("로컬변수"+num);
Member_Test mem1 = new Member_Test(); //객체생성
mem1.name="홍길동";//생성객체 접근 name멤버변수 저장
Member_Test mem2 = new Member_Test(); //객체생성
mem2.name="이순신";//생성객체 접근 name멤버변수 저장
System.out.println(mem1.name);//생성객체 멤버변수 사용
System.out.println(mem2.name);//생성객체 멤버변수 사용
Member_Test mem3 = new Member_Test(); //객체생성
mem3.name="이철원";//생성객체 접근 name멤버변수 저장
mem3.address= "서울";//생성객체 접근 name멤버변수 저장
System.out.println(mem3.name +"주소"+ mem3.address);
}//main 블럭
}//class 블럭
+심화
public class Member_Test {//class블럭
//멤버, 인스턴스변수 - class 블럭에 선언
//선언 후 초기화를 하지 않아도 된다. 초기화 불필요-사용시자동초기화
//함수 안에 new로 필요한 만큼 객체 생성 사용
static int num = 10;//초기값을 안주면 type의 기본값으로 지정, static 넣어주면 객체생성없이 사용 가능
String name;
String phoneNumber;
String address;
char gender;
public static void main(String[] args) {//main 블럭
// TODO Auto-generated method stub
//로컬변수(메소드/함수에 선언된 변수), 선언+초기화후에 사용
int num =10;
System.out.println("로컬변수"+num);
System.out.println(Member_Test.num);//static변수의 사용. 클래스 이름. 변수이름, 객체생성 필요 없음.
// System.out.println(name);//에러 객체생성 필요
// Member_Test mem1 = new Member_Test(); //객체생성
// mem1.name="홍길동";//생성객체 접근 name멤버변수 저장
// Member_Test mem2 = new Member_Test(); //객체생성
// mem2.name="이순신";//생성객체 접근 name멤버변수 저장
// System.out.println(mem1.name);//생성객체 멤버변수 사용
// System.out.println(mem2.name);//생성객체 멤버변수 사용
// Member_Test mem3 = new Member_Test(); //객체생성
// mem3.name="이철원";//생성객체 접근 name멤버변수 저장
// mem3.address= "서울";//생성객체 접근 name멤버변수 저장
// System.out.println(mem3.name +"주소"+ mem3.address);
}//main 블럭
}//class 블럭
+
public class Member_Test {//class블럭
//멤버, 인스턴스변수 - class 블럭에 선언
//선언 후 초기화를 하지 않아도 된다. 초기화 불필요-사용시자동초기화
//함수 안에 new로 필요한 만큼 객체 생성 사용
static int num = 10;//초기값을 안주면 type의 기본값으로 지정, static 넣어주면 객체생성없이 사용 가능
String name = "홍길동";
String phoneNumber;
String address;
char gender;
public void printinfo() {//멤버메소드(함수) 객체마다 소유
System.out.println(name+""+phoneNumber+""+address+""+gender);
}
public static void main(String[] args) {//main 블럭
// TODO Auto-generated method stub
//로컬변수(메소드/함수에 선언된 변수), 선언+초기화후에 사용
int num =10;
// System.out.println("로컬변수"+num);
// System.out.println(Member_Test.num);//static변수의 사용. 클래스 이름. 변수이름, 객체생성 필요 없음.
// Member_Test mem1 = new Member_Test();
// System.out.println(mem1.name);
Member_Test mem1 = new Member_Test(); //객체생성
mem1.name="홍길동";//생성객체 접근 name멤버변수 저장
Member_Test mem2 = new Member_Test(); //객체생성
mem2.name="이순신";//생성객체 접근 name멤버변수 저장
mem1.printinfo();//함수가 객체마다 다르게 들어간다.
mem2.printinfo();
System.out.println(mem1.name);//생성객체 멤버변수 사용
System.out.println(mem2.name);//생성객체 멤버변수 사용
Member_Test mem3 = new Member_Test(); //객체생성
mem3.name="이철원";//생성객체 접근 name멤버변수 저장
mem3.address= "서울";//생성객체 접근 name멤버변수 저장
System.out.println(mem3.name +"주소"+ mem3.address);
}//main 블럭
}//class 블럭
+ex.
객체 어떻게 사용하는가.
#로컬변수의 특징
public class Stu_Test {
String name;//멤버변수 ,객체생성, 초기값 넣어줄 필요 없다. 자동초기화, 객체정보 저장
int age;
public void printInfo() { //멤버메소드, 객체생성, 그냥 호출해서 쓰면 된다, 동작관련
int num =1;//로컬변수
num= num+10;
System.out.println("printInfo() num====" + num);
System.out.println(name+ ":" + age);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Stu_Test st_1 = new Stu_Test();
// System.out.println(st_1); //Stu_Test@5ebec15 객체의 주소, 이 주소를 찾아가서
st_1.name = "홍길동";
st_1.age = 25;
st_1.printInfo();
Stu_Test st_2 = new Stu_Test();
st_2.name = "이순신";
st_2.age = 26;
st_2.printInfo();
}
}
'Devel > JAVA' 카테고리의 다른 글
JAVA 자바 for문을 이용한 실습예제(짝수만, 홀수짝수합,구구단,*쌓기) (0) | 2020.08.31 |
---|---|
JAVA 자바 if문, swith문, break,continue 개념정리와 실습예제 (0) | 2020.08.31 |
JAVA 자바 eclipse 기초 개념 (0) | 2020.08.31 |
[JAVA]Map,hashmap,ListTest,properties,I/O 개념정리와 적용예제 (0) | 2020.08.16 |
JAVA 자바 Object ,Generic Type,HashMap,ArrayList,Collection API,HashSet 적용 예제 (0) | 2020.08.16 |