2023. 11. 29. 23:29ㆍDaily Codig Reminder
4. 변수
student stu= new student(); //student 이름, 나이 학
byte b =10; //-128 ~127
short b2 =20;
int b3 =30;
long b4 =40L;
//주민번호저장
//int ssn_int = 8901201234567;
long ssn =8901201234567L;
String ssn_string="890120-1234567";
System.out.println(Integer.MIN_VALUE);
System.out.println(Integer.MAX_VALUE);
int num=10;
//메인블럭에서 선언된 로컬변수는 main전체에서 사용이 가능.
{//a블럭
num =20;
int num2=10;//a블럭안에서만 사용가능한 로컬변수
//int num=100;
System.out.println("a블럭"+num);//20
System.out.println("a블럭"+num2);//10
}//end
//System.out.println(num2);//사용안됨
System.out.println("a블럭바깥"+num); //20
//int num2=100; //가능
{ //b블럭
num=30;
int num2=1;
System.out.println("b블럭안"+num); //30
System.out.println("b블럭안"+num2);//1
}
//num2=100; error
System.out.println(num+10); //40
num=num+10;
System.out.println(num); //40
// 한꺼번에 여러변수 선언가능, 권장안함
//int n,m,p=100;
int n;
int m;
int p;
//초기화
n=10;
m=20;
p=0;
//사용
p=n+m;
//클래스 블럭
String name;
int age;
char geder;
boolean married;
double height;
//멤버변수 인스턴스변수 전역변수 클래스 블럭에 선언
//0. 사용시 new 키워드로 객체 생성후 사용
//1.new 키를 이용하여 객체 생성할 때 멤버(인스턴스) 변수가 생성후 더이상 참조하지 않을 경우 프로그램종료시 삭제
//2. 전역변수 : 클래스 전체에서 사용가능 객체 생성; 참조 변수를 이용하여 사용
//3. 선언만 해도 객체 생성 (new)시 자동으로 초기화됨
(정수:0, 실수:0.0 char:공백 String :null boolean:false)로 자동초기화
자동초기화됨으로 객체생성후 초기화없이 바로 사용가능
//메인에속한 로컬변수 :함수안에 선언
1. 함수가 실행되어 코드가 실행될때 변수 생성, 함수 종료시 삭제
2. 사용범위는 속한 블럭안에서 사용
3. 선언, 초기화를 명시적 한 후 사용가능(아닐시 에러)
System.out.println(n);
객체 생성 후 객체의 멤버변수 접근사용
1. 클래스 객체 생성 후 test변수 참조
println 이용, 이름 나이 성별 결혼여부 키를 한줄로 출력
Sample02_variable5_3 test= new Sample02_variable5_3();
System.out.println(test);
System.out.println("이름; "+test.name+" , 나이:"+ test.age+", 성별:"+test.geder+", "+test.married+", 키:"+ test.height); test.name="홍길동";
System.out.println("============");
System.out.println("이름; "+test.name+" , 나이:"+ test.age+", 성별:"+test.geder+", "+test.married+", 키:"+ test.height);}} public static void main(String[] args) {
int num =10;//main 함수에 속한 로컬변수
//int num =20; //변수명 중복 사용불가
System.out.println(num); }
public void test () {
int num=20; //test함수에 속한 로컬변수
System.out.println(num); }
5. 형변환
5.1 묵시적 형 변환
데이터 타입 변경(자동으로 변경한다): 묵시적
1.byte-> sort -> int->long -> float-> double
byte b= 10;
short b2=b;
int b3= b2;
long b4=b3;
float b5= b4;
System.out.println(b5);
double b6=b5;
2. char --> int
char n ='A' int n2 = n+1;
System.out.println(n2);
char c=(char)n2;
System.out.println(c);
int x =123;
float y = x+ 12.3F;
System.out.println(y);
→ 135.3
5 .2 명시적 형변환
char c=(char)n2;
System.out.println(c);
System.out.println("=============");
int x =100;
float y = x+ 12.3F;
int y2 = (int)(x+ 12.3F);
System.out.println(y);
System.out.println(y2);
→ float 를 int 로 변환
float y3 =(float)(x+12.3);
→ int 를 float 로 변환
int a=10;
byte bb=10;
bb=(byte)a; //int => byte 명시적 type casting 명시적 형변환
3. int 보다 작은 타입의 연산 결과는 int 로
short x1 =10;
short x2=20;
short result = (short)(x1+x2);
double result2=101.0; //double 이 연산결과의 기본임
float result3=(float)(101.0);
4.문장과 문자열이 아닌데이터 => 연결된 문자열로 변환★ ★ ★ ★ ★
String name="10";
int aa=20;
String data=name+aa;
System.out.println(data);
System.out.println("10"+1+2+3); //10123
System.out.println(1+2+3+"10"); //610
→ - 빼는 건 안됨
//문자열을 정수로 변환 - 중요함 ★ ★ ★ ★ ★
String k ="10";
System.out.println(k+20);//1020
int k2 =Integer.parseInt(k); //문자열을 정수로 변환
System.out.println(k2+20);
String a= "10";
String b ="20";
//1. a+b result 변수에 결과 저장 출력
String result=a+b;
System.out.println(result);
2. a, b를 a1, b1 정수로 형 변환후 + 결과 저장 result2 변수에 저장출력
int a1 = Integer.parseInt(a);
int b1 = Integer.parseInt(b);
int result2 = a1+b1;
System.out.println(result2);
3.위 2번을 더 짧게
System.out.println("=============");
int result3 = Integer.parseInt(a)+Integer.parseInt(b);
System.out.println(result3);
4. 위 3번을 축소
System.out.println(Integer.parseInt(a)+Integer.parseInt(b));
정수를 문자열로
String.valueOf(10);
String.valueOf(3.14);
String.valueOf(true);
System.out.println(String.valueOf(10)+10); //1010
System.out.println(10+""+10);//문자열 10
6. 상수
Byte MIN_VALUE, Byte.MAX_VALUE
final int SIZE =100;
SIZE=200; //값 변경불가
System.out.println(SIZE);
블록간에는 서로 다른 영역으로 처리되기 때문에 같은 이름을 가진 변수를 포함할 수 있다.
3장 연산자
- 산술연산자
int n=10;
int n2=3;
System.out.println(n+n2);
System.out.println(n-n2);
System.out.println(n*n2);
System.out.println(n/n2); //3
System.out.println(n/3.0); //3.3333
System.out.println(n%n2); //1나머지
double a=0.1;
double b=0.2;
System.out.println("오류: "+(a+b));
//실수를 문자열로 변환, BigDecimal 객체로 생성후 사칙연ㅇ산 함수를 이용한 계산
BigDecimal c= new BigDecimal(String.valueOf(a));
BigDecimal d= new BigDecimal(b+"");
System.out.println(c.add(d)); //c+d
System.out.println(c.subtract(d)); //c-d
System.out.println(c.multiply(d)); //c*d
System.out.println(c.divide(d)); //c/d - 비교 연산자
실행결과는 논리값(true, false)
int xyz = 5;
int xyz2=5;
boolean result = xyz ==xyz2;
System.out.println(result ); //t
System.out.println( xyz==xyz2 ); //t
System.out.println( xyz != xyz2 ); //f
System.out.println( xyz > xyz2 );//f
System.out.println( xyz >= xyz2 );//t
글자의 내용비교는 String.equals 를 사용하자
String name1="홍길동";
String name2="홍길동";
String name3= new String("홍길동");
System.out.println(name3);
System.out.println(name1==name2); //true
System.out.println(name1==name3); //false
//글자의 내용비교는 String.equals 를 사용하자
System.out.println(name1+"\t"+name2+"\t"+name3);
System.out.println(name1.equals(name2));
System.out.println(name1.equals(name3));
System.out.println(name2.equals(name3));
- 대입연산자
int a=10;
int b=20;
a+=b;
System.out.println(a);
// == aa=a+b;
a+=1;
System.out.println(a)
int x=10;
int x2=x;
x2+= x;
System.out.println(x2); //20
x2 -= x;
System.out.println(x2); //10
x2 *=x; System.out.println(x2); //100
x2%=x; System.out.println(x2); //0 - 증감연산자
int a =3;
++a; // a=a+1
System.out.println(a);
a--;// a=a-1
System.err.println(a);
int x = 5;
int y= ++x;
System.out.println(x+" "+y);
y=x++;
System.out.println(y); //7,6
y=++x;
System.out.println(x+"\t"+y); //8,8
y=x++;
System.out.println(x+"\t"+y); // 9,8
int k=10;
System.out.println(k);
k++;
System.out.println(k);
k=k+1;
System.out.println(k); - 논리연산
System.out.println(3==4&&4>3);
System.out.println(3==3||4>3);
System.out.println(! true);
System.out.println(! false);
System.out.println("============");
System.out.println(true || true); //t
System.out.println(true || false);//t
System.out.println(false || true);//t
System.out.println(false || false);//f
System.out.println("============");
System.out.println(true && true); //t
System.out.println(true && false);//f
System.out.println(false && true);//f
System.out.println(false && false);//f
String name=null;
System.out.println( (4>2) || (name.length()==4) );
String name=null;
System.out.println( (4<2) && (name.length()==4) ); - 3향연산자
int xxx=(3==4)?100:200;
String xxx2 =(3!=4)?"A":"B";
System.out.println(xxx); → 200
System.out.println(xxx2); →A
int a1=30;
int b1=20;
int max =(a1>b1)?a1:b1;
System.out.println("큰 값: "+max);
int a1=30;
int b1=20;
int min =(a1<b1)?a1:b1;
System.out.println("작은 값: "+min);
System.out.println("이름을 입력하세요");
Scanner scan = new Scanner(System.in);
String name = scan.next(); //글 입력대기 => 입력데이터 String 으로 받아줌
System.out.println("==========");
System.out.println("입력한 이름은: "+name);
System.out.println("2. 나이 입력하세요");
String age1 =scan.next(); System.out.println(age1+10); → 나이10
int int_age= Integer.parseInt(age1);
System.out.println("10년을 더한 나이는: "+ (int_age+10)+"살 입니다.");
System.out.println("이름 입력: ");
Scanner scan = new Scanner(System.in);
System.out.println();
String name= scan.next();
System.out.println("이름은 "+name+"입니다.");
boolean isEqual = name.equals("홍길동");
System.out.println(isEqual);
System.out.println("이름 입력: ");
Scanner scan = new Scanner(System.in);
System.out.println();
String name= scan.next();
System.out.println("이름은 "+name+"입니다.");
boolean result = name.equals("홍길동");
//System.out.println(result);
String message=(result)?"이름이 같음":"이름이 다름";
System.out.println(message);
System.out.println("첫번째 입력");
Scanner scan = new Scanner(System.in);
System.out.println();
String name= scan.next();
System.out.println("두번째 입력");
Scanner scan2 = new Scanner(System.in);
System.out.println();
String name2= scan.next();
boolean result = name2.equals(name);
//System.out.println(result);
String message=(result)?"이름이 같음":"이름이 다름";
System.out.println(message);
Scanner scan= new Scanner(System.in);
System.out.println("첫번째 숫자 :");
String s_num= scan.next();
int result= Integer.parseInt(s_num)%2; //문자열 숫자를 정수로 변환 함수 중요함.
System.out.println((result==0)?"짝":"홀");
Scanner scan2= new Scanner(System.in);
System.out.println("두번째 숫자 :");
int s_num2= scan2.nextInt();
int result2= s_num2%2;
System.out.println((result2==0)?"짝":"홀");
//int max=( Integer.parseInt(s_num)>s_num2) Integer.parseInt(s_num):s_num2;
→ 숫자 두개를 int로 바서 계산
=
String max=( Integer.parseInt(s_num)>s_num2)?s_num:s_num2+"";
→ 숫자 두개를 괄호 안에서 int로 비교한 후 괄호 밖에서 비교하고
“”을 붙여서 문자로 바꾸고 String으로 max 뽑아내기
System.out.println("max 값"+max);
scan.close();