[JAVA_Back-End]

[JAVA] JAVA 변수, 연산자, 조건문과 반복문 본문

Programming/JAVA

[JAVA] JAVA 변수, 연산자, 조건문과 반복문

너굴위 2023. 8. 21. 17:19
728x90
반응형

java  -  jsp

         - android

 

java의 개량언어  - kotlin

 

JDK - Java Development Kit: 개발자 도구

           - SE(Standard Edition) : Core

           - EE (Enterprise Edition) : 기업용 추가 라이브러리(대용량, 분산, 웹/데이터베이스)

           - ME (Micro Edition) : 모바일 추가라이브러리

* JDK는 기본적으로 SE이며 EE, ME는 따로 추가..

<JDK를 제공하는 업체>

sun - java opensource

oracle 사용권

OpenJDK - linux

 

JDK 

        자바개발도구

        JRE(Java Runtime Environment:실행환경)

                  JVM(Java Virtual Machine)

                  System Library

 

sun - 8버전

oracle -9버전

          Java - 핵심 서버

                             버전 => 안정성

java- 컴파일 언어

 소스 -.java

컴파일 - javac

파일 - .class

실행 - java(jvm 실행기)

 

소스코딩

전용 에디터- visual studio code

IDE(개발자 환경)

    - 이클립스

    - Intellij

    - netbeans

 

<암기>

문법

1. 대/소문자 구별

2. 문장 끝에는 반드시 ;

3. 주석(comment)

    //   /* ~*/

 

형태

public class 클래스명 {

       public static void main(String[] args){

                          //프로그램 시작

                          //화면 출력

                  System.out.println("문자열");

                          //프로그램 끝

       }

}

클래스명 = 파일명

식별자 규칙 = js와 동일

* 대문자로 시작

 

 


Java (Visual Studio Code로 코드 짜기) 

javac -> 클래스를 생성

java로 클래스 실행

 

-  java 파일에 한글이 있을 경우

   컴파일 명령어에 javac -encoding utf-8 HelloWorld.java  처럼 인코딩 명령어를 추가해주어야한다.

 

* 기본 출력

public class HelloWorld{
    public static void main(String[] args){
        //System.out.println("Hello java");
        System.out.print("안녕 자바");     //띄어쓰기 없음
        System.out.print("안녕 자바");
 
        System.out.println();
        System.out.println();
   
        System.out.println("안녕 자바");     //ln줄바꿈이 있기 때문에 두줄로 나옴
        System.out.println("안녕 자바");
 
        //형식화(format)된 문자열
        //%s - 문자열
        //%d - 숫자
        System.out.printf("%s - %s","Hello","World");
   
    }
}

 

상수 - final

final int x =5;    //final(상수)
        System.out.println(x);

 

 

DataTypeEx01.java    - 대소문자 구분

public class DataTypeEx01{
    public static void main(String[] args){
        //boolean (true/false)
        boolean bool1=true;     //True는 안됨
        System.out.println(bool1);
    }
}

 

DataTypeEx02.java - 문자와 문자열 / 아스키코드

**문자열 표현 시 쌍따옴표 사용하기**

public class DataTypeEx02{
    public static void main(String[] args){
       //char   - 한 자
       //String - 문자열

       char c1 = 'A';
       System.out.println(c1);

       //code
       //영어, 숫자, 특수: ascii
       //다국어: unicode

       char c2=97;
       System.out.println(c2);
       
       char c3 ='\uc790';
       System.out.println(c3);

       c2=97+2;
       System.out.println(c2);

       //char c4 ='abc';    문자 하나이기 때문에 문자열을 집어넣을 수 없다.(자료형태 안맞음)

    }
}
        // \n   -enter키      
        // \t   -tab키
        // \'   -단일 따옴표 표기
        // \"   -쌍따옴표 표기

 

DataTypeEx05.java  - 진법에 따른 숫자표현

public class DataTypeEx05{
    public static void main(String[] args){
   
      //정수
      int i =1;
      System.out.println(i);

      byte b =1;
      short s =1;
      System.out.println(b);      
      System.out.println(s);

      //long l =1;
      long l =1L;
      System.out.println(l);

      int i2=0b1010;
      int i8=030;
      int i16=0xA4;
      System.out.println(i2);
      System.out.println(i8);
      System.out.println(i16);

      //10 -> 각 진수
      int i10=100;
      System.out.printf("%o\n",i10);  //8진수 표현
      System.out.printf("%x\n",i10);  //16진수 표현

      int i3 = 1_000_000;    //실행결과 : 1000000  숫자 표기법임
      System.out.println(i3);

      //float,double

      float f1=10.1f;    //possible lossy conversion from double to float오류 발생(수용 범위가 작아서 안되는것)
      //float형태로 저장하고 싶다면 숫자뒤에 f를 붙이면 된다.
      System.out.println(f1);

      double d1=10.1;
      System.out.println(d1);

      //1000을 지수형태로 표현할 때 double사용한다.
      double d2=1.0e3;
      System.out.println(d2);  

    }
}

 

OperatorEx01.java   -자료형의 오버플로우

public class OperatorEx01{
    public static void main(String[] args){
        System.out.println(10+4);    //연산결과 확인
        System.out.println(10-4);
        System.out.println(10*4);

        //연산후 자료형
        //정수 나누기 정수이기 때문에 2.5실수가 나오지 않는다.   //정수/정수 = 정수
        //2.5가 나오게 하려면 실수로 나누어 주어야 한다.    //정수/실수 = 실수
        System.out.println(10/(double)4);    // 정수/실수 = 실수

        System.out.println(1%2);   //%연산자
        System.out.println(2%2);
        System.out.println(3%2);
        System.out.println(4%2);

        //오버플로우
        int i1 = 1_000_000;
        int i2 = 2_000_000;

        //int product =i1*i2;
        long product =(long)i1*i2;    //오버플로우가 되지 않는 범위의 자료형을 사용하여 표현하도록 한다.
        System.out.println(product);  

        int i3= 10;
        int i4=20;
        int sum1= i3+i4;
        System.out.println(sum1);  

        short s3=10;
        short s4=20;
        //자바 - 산술에서의 최소 자료형 : int
        //short sum2=s3+s4;
        //int sum3=s3+s4;
        short sum4=(short)(s3+s4);

        System.out.println(sum4);  

    }
}

 

TypeCastingEx01.java   - 자료형의 형변환

class TypeCastingEx01{
    public static void main(String[] args){
        //형변환
        // 작은 자료형-> 큰 자료형: 묵시적(자동) 형변환
        // 큰 자료형 -> 작은 자료형: 명시적 형변환

        short s1 =10;
        //자동형변환
        int i1=s1;
        System.out.println(i1);

        float f1 = 10.0f;
        double d1 = f1;
        System.out.println(d1);

        char c1='A';
        int i2 =c1;
        System.out.println(i2);

       
        int i3 = 10;
        short s2 = (short)i3;
        System.out.println(s2);

        char c2='A';
        int i4=c2+3;
        System.out.println(i4);
        char c3 =(char)i4;
        System.out.println(c3);

    }
}

 

 

조건: true/false(비교연산자, 논리연산자, 부정연산자)

조건에 의한 분기

          1. 단순조건

                  if~else~

          2. 선택조건

                  if~else if~else~

      =>switch~case~default~

                   (byte, short, int, char, String)

조건에 의한 반복

 

 

ConditionEx02.java

*5~10 사이에 있으면 영역 내/ 그 밖에는 영역 외 표현

public class ConditionEx02 {
    public static void main(String[] args){
        System.out.println("시작");

        int i=9;
        if(i>5&&10>i){
            System.out.println("영역내");
        }else{
             System.out.println("영역외");
        }

        System.out.println("끝");
    }
   
}

 

ConditionEx03.java

*if~else if~ else로 성적나누기

public class ConditionEx03 {
    public static void main(String[] args){
        System.out.println("시작");

        //점수계산
        //90점 이상 A
        //if~else if~else

        int i = 60;
        if(i>=90){
            System.out.println("A");
        }else if(i<90&&i>=80){
             System.out.println("B");
        }else if(i<80&&i>=70){
             System.out.println("C");
        }else if(i<70&&i>=60){
             System.out.println("D");
        }else{
            System.out.println("F");
        }
       

        System.out.println("끝");
    }
   
}

 

ConditionEx05.java

*Switch~case문으로 출력

public class ConditionEx04 {
    public static void main(String[] args){
 

        int data=20;
        switch(data){
            case 10:
                System.out.println("10");
                break;
            case 20:
                System.out.println("20");
                break;
             case 30:
                System.out.println("30");
                break;
            default:
                System.out.println("기타");
        }


    }
   
}

 

* Ex3_17.java   -삼항연산자

public class Ex3_17 {
    public static void main(String[] args){
 
        int x,y,z;
        int absX, absY,absZ;
        char signX, signY, signZ;

        x=10;
        y=-5;
        z=0;

        absX = x>=0?x:-x;
        absY = y>=0?y:-y;
        absZ = z>=0?z:-z;
        signX =x>0?'+':(x==0?' ':'-');
        signY =y>0?'+':(y==0?' ':'-');
        signZ =z>0?'+':(z==0?' ':'-');
     
        System.out.printf("x=%c%d%n",signX,absX);
        System.out.printf("y=%c%d%n",signY,absY);
        System.out.printf("z=%c%d%n",signZ,absZ);
       

    }
   
}

 

*LoopEx05.java  -중첩(문자 A부터 정해진 반복 횟수대로 문자열 출력하기)

public class LoopEx05 {
    public static void main(String[] args){
 
        //중첩
        for(int row=1;row<=10;row++){
            for(int col=1;col<=row;col++){
                System.out.print('*');
            }
            System.out.println();
        }

         System.out.println();
       
         for(int row=1;row<=10;row++){
             for(int gon=1;gon<row;gon++){
                System.out.print(" ");
               }
            for(int col=1;col<=11-row;col++){
               System.out.print('*');
            }
           System.out.println();
        }


        for(int row=1;row<=10;row++){
            int i=65;                           //새로운 행이 시작될때마다 65로 설정하여 A부터 뜨게하고
            for(int col=1;col<=row;col++){
                char al=(char)i;
                System.out.print(al);
                i++;                           //i의 값을 증가시켜 열의 반복에서는 증가될때마다 다른 알파벳이 뜰 수 있도록 한다.
            }
            System.out.println();
        }

   
    }    
}


 

*LoopEx06.java  - while과 do while문

public class LoopEx06 {
    public static void main(String[] args){
 
        //while
        int i =1;
        while(i<=10){
            System.out.println(i);
            i++;
        }

        int j=1;
        //do-while
        do{
            System.out.println(j);
            j++;
        }while(j<=10);
    }    
}

 

*LoopEx09.java  - break, continue, label 사용

public class LoopEx09 {
    public static void main(String[] args){
 
       System.out.println("시작");

       int n = 0;

       //라벨
       outer:
       while(n<=5){
        n++;

        int m =0;
        while(m<=5){
            m++;

            if(m==3)    //반복문이 두개 있을 때 가장 가까운 반복문이 break/continue된다
            {
               //break outer;     //outer 이후부터는 출력안됨
               continue outer;     //outer만 빠져나감
            }
            System.out.println(n+" / "+m);
        }
     
        System.out.println(n);
       }
       System.out.println("끝");

    }    
}

 

#연습문제

Q4_2.java

- 1부터 20까지의 정수 중에서 2또는 3의 배수가 아닌 수의 총합을 구하시오

public class Q4_2 {
    public static void main(String[] args){

        int sum=0;
        for(int i=1;i<=20;i++){
            if(i%2==0||i%3==0){
                continue;
            }
            sum+=i;
        }
        System.out.println(sum);
    }
   
}

 

Q4_3.java

- 1+(1+2)+(1+2+3)+(1+2+3+4)+...+(1+2+3+...+10)의 결과를 계산하시오

public class Q4_3 {
    public static void main(String[] args){

        int sum=0;
        for(int i=1;i<=10;i++){
           for(int j=1;j<=i;j++){
                sum+=j;
           }
        }
        System.out.println(sum);
    }
   
}

 

Q4_4.java

- 1+(-2)+3+(-4)+... 과 같은 식으로 계속 더해나갔을 때, 몇까지 더해야 총합이 100이상이 되는지 구하시오

public class Q4_4 {
    public static void main(String[] args){

        int sum=0;
        int i =0;    
        while(sum<=100){

            if(i%2==0){
                sum=sum-i;
            }else{
                sum=sum+i;
            }
            System.out.printf("%d .... %d%n",i,sum);
            i++;
        }
     
    }
   
}

 

 


.............JAVA 언어... 이전에 학교에서 배운 언어와 별다를 게 없어서 내용은 쉬운 편이었다............

 

 

728x90
반응형

'Programming > JAVA' 카테고리의 다른 글

[JAVA] 에러처리 + ArrayList  (0) 2023.08.29
[JAVA] 프로세스  (0) 2023.08.25
[JAVA] 패키지 (import) + API (Object)  (0) 2023.08.24
[JAVA] 클래스와 인스턴스 + 생성자  (0) 2023.08.23
[JAVA] 배열, 객체지향 프로그래밍  (0) 2023.08.22