3-1. 演算子


<<演算子>>
  • 算術演算-四則演算(+-/*)+%(残り)
  • コンピュータ演算+
    5-3=5+(-3)->3をバイナリ形式に変換して2の報酬で計算~
    5*3 = 5 + 5 + 5
    15/4=15+(-4)+(-4)+(-4)=シェア3

    演算子えんざんし:演算子えんざんし
    オペランドオペランドオペランドオペランドオペランドオペランド

    進捗:左->右
    優先演算:*/%=>+-
    優先度:()-最優先度

    単項演算たんこうえんざん:1項演算1項えんざん

  • 表示可能
  • :シンボル演算
  • ++、--増減演算子
    ++a:線を増やした後の処理->a=10;->++a; -> aを11-に置き換えるしょり
    a++:前処理後に増加->a=10;->a++; ->処理(コードレス処理)->後にaを11に変更

    コンソールで実行する場合はpackageを作成し、ファイル名を記入する必要があります.
    public class IncreaseDecreaseOperatorExample {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    
    		int x = 10;
    		
    		System.out.println("--------------------------");
    		x++; //11  선처리(x) 후증가(o)  
    		
    		++x; //12  선증가(O) 후처리(x)
    		System.out.println("x = " + x); //12 // String x = ("x = " + x);
    		
    		System.out.println("x = " + x++);  // 12 출력(처리) -> 이후 증가 13
    		System.out.println(x);  //후증가된 x 13
    		
    		//먼저 문자열 연결 출력하고 다음 줄에서 증가시킨 것과 같다.
    		System.out.println("x =" + x); //13
    		x++; // 14
    		
    		System.out.println("x = " + x++ + "x = " + x++); // 선처리(문자열 연결 14 출력)->후증가 ->  15 -> 15출력 -> 후 증가 16
    		
    		// x= 16 
    		System.out.println("x = " + ++x); // 17 선증가 -> 후 처리 (문자열과 연결)
    		
    		++x; //18
    		
    		System.out.println("x = " + x); //18
    		
    		int y;
    		y = x++;
    		
    		System.out.println(x + "," + y);  //x=19 y=18
    		
    		System.out.println(--x); //x 18 선 감소 -> 후 처리출력 18
    		System.out.println(x--); // x 18 선 처리(출력 18) -> 후 감소17
    		
    		x= 10;
    		
    		x= x + 1; // x++; ++x -> 11
    		
    		x += 1;  // x + 1  과 같다  //12
    		x++;
    		System.out.println(x);  //12
    		
    		x = 10;
    		x = x +5; //15
    		x += 5; //20
    		
    		System.out.println(x);
    		
    	}
    
    }
    しじえんざん
    System.out.println(num1 + "+ "+ num2 + "= "+ (num1 + num2));
    整数+文字列=>文字列に置き換えます.文字列を指定する必要はありません.

    --0で割るとエラー
    1/0->Thread main javaでエラーExceptionを実行します.lang.ArithmeticException:/by zero
    「異常処理」8章より
    どうしてもやってみる

    --double小数点ではなく1.0*の小数点が必要です
    System.out.println(num1 + "/"+ num2 + "= "+ ((double)num1/num2));
    1.0 * num1
    import java.util.Scanner;
    
    public class ArithmeticOperatorExample {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    
    		// 2개의 숫자를 받아서 앞에 숫자에서 뒤에 숫자를 더하는, 빼는, 곱하는, 나누는, 나머지를 구하는 결과를 출력
    		
    		//1. Scanner 생성(new)
    		Scanner scanner = new Scanner(System.in);
    		
    		
    		//2. 숫자(문자열 -> 숫자) 를 키보드로 입력 받는다. 2개를 받아야 하므로 숫자변수 2개를 선언해야 한다
    		System.out.println("숫자를 입력하세요 -> ");
    		String strNum1 = scanner.nextLine();
    		
    		System.out.println("숫자를 입력하세요 -> ");
    		String strNum2 = scanner.nextLine();
    		
    		int num1 = Integer.parseInt(strNum1);
    		int num2 = Integer.parseInt(strNum2);
    		
    		//3. 5칙연산한 결과를 출력한다.
    
    		System.out.println(num1 + " + " + num2 + " = " + (num1 + num2));
    		System.out.println(num1 + " - " + num2 + " = " + (num1 - num2));
    		System.out.println(num1 + " * " + num2 + " = " + (num1 * num2));
    		
            System.out.println(num1 + " / " + num2 + " = " + ((double)num1 / num2)); 
            //둘중 하나는 소수점 있어야 소수점이 생김 / double 대신 1.0* 로 소수점 가능
    		
            System.out.println(num1 + " % " + num2 + " = " + (num1 % num2));
    		
    		//4.Scanner를 닫는다.		
    		scanner.close();
    		
    		
    	}
    
    }
    比較演算(>、<、>=、<=、=、!=)
    へんすう
    -デフォルト変数:テキストと比較(同じ値の場合はtrue)
    -参照変数:アドレスと比較(実際の値は同じですが、アドレスがfalseとは異なります)
    結果:true/false->booleanタイプ

    このクリップでctrl+alt+方向キーの下を押す->現在の行を貼り付けます(画面が反転している場合は、ウィンドウのショートカットを閉じます)
    参照型変数
    String s 1=名前;->静的でnewと宣言しなくても宣言できます
    s 1とs 2は静的クラスとして宣言され、同じアドレスに置かれる(s 2が既存のs 1で上書きされる場合)

    新String classはnewで作成したs 3,s 4で宣言されているため,アドレス値自体が異なる.
    文字列は同じですが、アドレスを比較する==演算子はfalseを返します.


    s1.equals(s 3)比較でtrue(純文字列比較)が表示されます
    public class CompareOperatorExample {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    
    		int num1 = 10;
    		int num2 = 10;
    		
    		
    		//기본 변수의 값을 비교
    		boolean result1 = (num1 == num2); //4단계 // == 먼저 연산되어 () 없어도 된다
    		
    		System.out.println(num1 == num2); //4
    		System.out.println(result1); //4 + 1
    
    		System.out.println(num1 == num2); //4 +4
    		System.out.println(result1);// 4+1+1 같은 변수를 사용해야 할때마다 효율성 높아진다.
    		System.out.println(num1 != num2);
    		System.out.println(num1 > num2);
    		
    		String s1 = "이름"; // static 으로 들어간것
    		String s2 = "이름";
    		String s3 = new String("이름");
    		String s4 = new String("이름");
    		
    		System.out.println("s1 = " + s1);
    		System.out.println("s2 = " + s2);
    		System.out.println("s3 = " + s3);
    		System.out.println("s4 = " + s4);
    		
    		System.out.println("s1 == s2 : " + (s1 == s2)); //직접 같은 문자열을 넣으면 같은 주소가 나온다
    		System.out.println("s1 == s3 : " + (s1 == s3)); // new 클래스가 올라가 주소 데이터와 다른 주소가 나온다
    		System.out.println("s3 == s4 : " + (s3 == s4)); //
    		
    		//데이터가 같으면 같다라고 해주는 메서드(equals)를 사용해서 처리한다.
    		System.out.println("s3.equals(s4) : " + s3.equals(s4));
    		System.out.println("s1.equals(s4) : " + s1.equals(s4));
    		
    		//	
    	
    	}
    
    }
    各演算子には、キーボードで入力された2つの演算子と数値が自動的に返されます.

    ローカル変数として宣言するのではなく、グローバル変数にアップグレードし、損失を回避するためにstaticにアップグレードします.
    よく言う
    public static Scanner scanner = new Scanner(System.in);
    ここで宣言したstaticは、変数スキャンプログラムであるstaticをclassにアップロードします.
    Scannerクラスをnewで個別にアップロードするのでnew演算子を書きました...
    後で勉強して理解するつもりです.
    import java.util.Scanner;
    
    public class InputOperatorOperateExample {
    
    	//public static Scanner scanner = new Scanner(System.in);
    	
    	
    	
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    
    		//요구사항 정의
    		//입려 객체 new Scanner 생성
    		//로컬 변수로 선언하지말고 전역변수로 올리고 static으로 올려서 없어지지 않도록선언하는게 편하다
    		Scanner scanner = new Scanner(System.in);
    		
    		//연산자를 입력받는다 + - * / % 중 1개를 입력받는다
    		System.out.println("연산자를 입력해주세요 ( + _ / * % ) : ");
    		String op = scanner.nextLine();
    		
    		//숫자를 2개 입력 받는다  int 변수 선언 (String -> int 변환)
    		System.out.println("숫자를 입력해주세요 :");
    		String strNum1 = scanner.nextLine();
    		String strNum2 = scanner.nextLine();
    		
    		int num1 = Integer.parseInt(strNum1);
    		int num2 = Integer.parseInt(strNum2);
    		
    		//처리결과 변수를 선언한다 int 변수 (result)
    		int result = 0;
    		
    		
    		//연산자에 따른 연산을 처리해서 저장한다 조건문(if 사용해서
    
    		
    		if (op.equals("+")) {
    			System.out.println("더하기 연산");
    			
    			result = num1 + num2;
    		
    		}else if(op.equals("-")) {
    			System.out.println("빼기 연산");
    			
    			result = num1 - num2;
    			
    		}else if(op.equals("*")) {
    			System.out.println("곱하기 연산");
    			
    			result = num1 * num2;
    			
    		}else if(op.equals("/")) {
    			System.out.println("나누기 연산");
    			
    			 result = num1 / num2;
    			 
    		}else if(op.equals("%")) {
    			System.out.println("나머지 연산");
    		
    			result = num1 % num2;
    	
    		}
    		else {
    			System.out.println("산출연산 기호 : + - / * % 중에 하나를 입력하셔야 합니다.");
    			
    			scanner.close();
    			//return; 쓰면 main() 메소드를 빠져나가서 종료한다
    			return;
    			
    		}
    					
    		//처리된 결과를 출력한다
    		System.out.println(num1 + " " + op + " " +  num2 + " = " + result);
    		scanner.close();
    		
    		//처리 메서드의 끝까지 오면 호출한 곳으로 되돌아 간다.-> main()을 호출한 곳으로 간다는 것은 종료를 의미한다
    		//return => void 타입 메서드다 (아무것도 없다)
    		
    		
    	}
    
    }
    /,%が実数のコードのみ
    その結果,実数型計算も四則演算から得られた.
    この方式であれば、二重処理が最も効率的だと思います.
    import java.util.Scanner;
    
    public class InputOperatorOperateExample2 {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    
    		//요구사항 정의
    		//입려 객체 new Scanner 생성
    		Scanner scanner = new Scanner(System.in);
    		//연산자를 입력받는다 + - * / % 중 1개를 입력받는다
    		System.out.println("연산자를 입력해주세요 -> ");
    		String op = scanner.nextLine();
    		
    		
    		//숫자를 2개 입력 받는다  int 변수 선언 (String -> int 변환)
    		System.out.println("숫자를 입력해주세요 ->");
    		String strNum1 = scanner.nextLine();
    		String strNum2 = scanner.nextLine();
    		
    		int num1 = Integer.parseInt(strNum1);
    		int num2 = Integer.parseInt(strNum2);
    		
    		//처리결과 변수를 선언한다 int 변수 (result)
    		int result = 0;
    		double resultd = 0;
    		
    		//연산자에 따른 연산을 처리해서 저장한다 조건문(if 사용해서
    
    		
    		if (op.equals("+") || op.equals("-") || op.equals("*")) {
    
    			if (op.equals("+")) {
    				System.out.println("더하기 연산");
    
    				result = num1 + num2;
    
    			} else if (op.equals("-")) {
    				System.out.println("빼기 연산");
    
    				result = num1 - num2;
    
    			} else if (op.equals("*")) {
    				System.out.println("곱하기 연산");
    
    				result = num1 * num2;
    
    			}
    
    			else {
    				System.out.println("산출연산 기호 : + - / * % 중에 하나를 입력하셔야 합니다.");
    
    				scanner.close();
    				// return; 쓰면 main() 메소드를 빠져나가서 종료한다
    				return;
    
    			}
    			// 처리된 결과를 출력한다
    			System.out.println(num1 + " " + op + " " +  num2 + " = " + result);
    			scanner.close();
    
    		} else if (op.equals("/")) {
    			System.out.println("나누기 연산");
    
    			resultd = (double) num1 / num2;
    
    		} else if (op.equals("%")) {
    			System.out.println("나머지 연산");
    
    			resultd = num1 % num2;
    
    		} else {
    			System.out.println("산출연산 기호 : + - / * % 중에 하나를 입력하셔야 합니다.");
    
    			scanner.close();
    			// return; 쓰면 main() 메소드를 빠져나가서 종료한다
    			return;
    
    
    		}
    
    		// 처리된 결과를 출력한다
    		System.out.println(num1 + " " + op + " " +  num2 + " = " + resultd);
    		scanner.close();
    
    	}
    }