식별자와 데이터형, 연산자

2023. 11. 29. 23:29Daily 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)(10
1.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장 연산자

  1. 산술연산자

    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


  2. 비교 연산자

    실행결과는 논리값(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));


  3. 대입연산자

    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

  4. 증감연산자

    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);

  5. 논리연산

    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) );

  6.  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();

'Daily Codig Reminder' 카테고리의 다른 글

배열  (0) 2023.12.04
문장  (1) 2023.11.30
CSS+ JAVA  (1) 2023.11.29
CSS  (0) 2023.11.28
html 마무리  (1) 2023.11.27