[Java] 노트정리 : 비트 연산자, wrapper class, 제어문,순환문(루프문)

Young eee·2022년 12월 21일

Java

목록 보기
4/22
post-thumbnail

📖 비트연산자

  • bit : 0, 1
종류설명
&And
|OR
^XOR
<<left shift
>>right shift
~NOT

💻 비트연산자 Ex.

		// AND
		int number = 0x71 & 0x8a;
		System.out.println(number);		//0
		
		//OR
		int number1 = 0x71 | 0x8a;
		System.out.println(number1);	//251
		System.out.printf("0x%x \n", number1);	//0xfb
		
		//XOR -> 보안
		int number2 = 0x71 ^ 0x85;
		System.out.println(number2);	//244
		System.out.printf("0x%x \n", number2);	//0xf4
		
		int number3 = 0xf4 ^ 0x85;
		System.out.println(number3);	//113
		System.out.printf("0x%x \n", number3);	//0x71
		
		//left shift == *2
		short sh;
		sh = 0x1 << 1;		
		System.out.println(sh);		//2 (1*2)
	
		//right shift == /2
		sh = 0x8 >> 1;		
		System.out.println(sh);		//4 (8/2)
		
		//~ 반전 0 ->1 , 1 -> 0
		byte by = ~0x55;
		System.out.printf("%x \n", by);	//aa

📖 wrapper class

  • 일반 자료형(int, char, long 등)을 class로 만들어 놓은 것
  • class 사용시에는 동적할당을 해주어야 함
일반자료형wrapper class
booleanBoolean
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
charCharacter
char[]String

Integer, Double, String → 자주쓰이는 class

💻 Wrapper Ex.

	char c = 'a';
	char cArr[] = {'h', 'e', 'l', 'l', 'o'};
	System.out.println(cArr);		// hello
	
	int i = 123;
	Integer iobj = 123;
	Integer iobj2 = new Integer(123);
	
	System.out.println("i = " + i);			//123
	System.out.println("iobj = " + iobj);	//123
	System.out.println("iobj2 = " + iobj2); //123
	
	double d = 123.456;
	Double dobj = 123.456;
	
	System.out.println("d = " +d);			//123.456
	System.out.println("dobj = " +dobj);	//123.456
	
	String str = "hello world";
	str = "I can do it";
	
	System.out.println("str = " + str);
	
	// 문자열 -> 숫자
	String numStr = "123";
	int number = Integer.parseInt(numStr);
	System.out.println("number = "+ number);
	
	// 숫자 -> 문자열
	Integer oNumber = 12345;
	// String str1 = oNumber.toString();
	String str1 = oNumber + "";
	System.out.println("str1 = "+ str1);
	
	// 10진수 -> 2진수(문자열)
	int number1 = 67;
	String str2 = Integer.toBinaryString(number1);
	System.out.println("str2 = " + str2);		//100 0011
	
	
	// 10진수 -> 16진수(문자열)
	String str3 = Integer.toHexString(number1);
	System.out.println("str3 = " + str3);		//43
	
	// 2진수 -> 10진수
	int number2 = Integer.parseInt(str2, 2);
    //2진수, 만약 8진수, 16진수를 바꾸고 싶다면 뒤에 숫자를 바꿔서 사용
	System.out.println(number2);

💻 String Ex.

  • String : 문자열의 저장, 편집, 정보취득
	String str4 = "";	// 빈 문자열
//	String str4 = null;	 문자열의 초기화
	System.out.println(str4);
	
	String str5 = new String("hello");
	String str6 = "world";
	
	// 문자열 합하기
	String str7 = str5 + str6;
	System.out.println(str7);	//helloworld
	
	String str8 = str5.concat(str6);
	System.out.println(str8);	//helloworld
	
	// 문자열 비교
	String str9 = "world";
	String str10 = "world";
	
	boolean b = str9.equals(str10);	// 같으면 true, 틀리면 false
	System.out.println("b = " + b);
	
	// 문자의 위치
	String str11 = "abcabcabc";
	int n = str11.indexOf("c");			//앞에서 부터 문자의 위치 찾음
	System.out.println("n = " + n);		// 2
	
	int n1 = str11.lastIndexOf("c");	//뒤에서 부터 문자의 위치 찾음
	System.out.println("n1 = " + n1);	//8
	
	// 문자열의 길이
	int len = str11.length();
	System.out.println("len = " + len);	//9
	
	// 문자열의 수정
	String str12 = "A*B*C*D";
	String replaceStr = str12.replace("*", "-");
	System.out.println(replaceStr);		//A-B-C-D
	
	// 문자열 자르기
	String str13 = "홍길동-24-2001/10/16-서울시";
	
	// 범위
	String subStr = str13.substring(4, 6);	// 4번째부터 6전까지 가져와라
	System.out.println(subStr);		//24
	
	subStr = str13.substring(7);	//7번째부터 가져와라
	System.out.println(subStr);		//2001/10/16-서울시
	
	// token(=기호)
	String split[] = str13.split("-");
	System.out.println(split.length);	//4
	
	System.out.println(split[0]);	//홍길동
	System.out.println(split[1]);
	System.out.println(split[2]);
	System.out.println(split[3]);
	
	// (앞뒤)공백을 제거
	String str14 = " java java  java    ";
	String trimStr = str14.trim();
	System.out.println(trimStr);
	
	// ?번째 숫자를 넣으면 한 개의 문자를 돌려준다
	String str15 = "가나다라마";
	char c1 = str15.charAt(2);
	System.out.println("c1 = " + c1);	//다
	
	// 문자열 (비교)탐색
	String str16 = "서울시 강남구 역삼동";
	boolean b1 = str16.contains("강남");
	System.out.println(b1);

📖 제어문

📌 if

💻 if Ex.

		/*
		if문 형식 :
			 	if( 조건 ) { -> 논리(true/false)
			 		
			 			처리
			 	}
        */       
		int number = 7;
		if(number > 0) {
			System.out.println("number는 0보다 큽니다");
		}
		
		if(number == 7) {
			System.out.println("number는 7입니다");
		}
		
		if(number < 6) {
			System.out.println("number는 6보다 작습니다");
		}
		
		if(number > 0 && number <= 10)  {// 1~10
			System.out.println("number는 0보다 크고 10보다 작거나 같습니다");
		}
		
		if(number > 0 || number <= 5) {
			System.out.println("number는 0보다 크거나 5보다 작거나 같습니다");
		}
		

📌 if else

💻 if else Ex.

		/*
		 if else 형식 : 
                      	if(조건) {
                            	처리1
                      	}
                     	else {
                            	처리2
                     	}
		 
		 */
		
		int count = 8;
		if(count < 6) {
			System.out.println("number는 6보다 작습니다");
		}
		else {
			System.out.println("number는 6보다 크거나 같습니다"); //출력
		}
		
		char c = 'A';
		
		if(c == 'a') {
			System.out.println("c = 'a'입니다");
		}
		else {
			System.out.println("c = 'a'가 아닙니다");
		}
        //출력없이 종료

📌 else if

💻 else if Ex.

		count = 85;
		if (count >= 90) {
			System.out.println("A 학점입니다");
		}
		else if (count >= 80) {
			System.out.println("B 학점입니다"); //출력
		}
		else if (count >=70 ) {
			System.out.println("C 학점입니다");
		}
		else {
			System.out.println("재시험입니다");
		}

💻 2중 if문 Ex.

		count = 95;
		
		if(count >= 90) {
			if(count >= 95) {
				System.out.println("A+입니다");
			}
			else {
				System.out.println("A입니다");
			}
		}
		//위와 아래 출력값은 동일함
        
		if(count >= 95 && count <= 100) {
			System.out.println("A+입니다");
		}
		else if(count >= 90 && count < 95) {
			System.out.println("A입니다");
		}

💡 조건식 참고 Ex

		boolean b;
		
		b = true;
		
		if(b == true) {
			System.out.println("b == true 입니다");
		}
		//참을 조건으로 넣고 값이 참일 경우 변수명만 적어줘도 됨
		if(b) {
			System.out.println("b == true 입니다");
		}
		
		b = false;
		
		if(b == false) {
			System.out.println("b == false 입니다");
		}
		//거짓을 조건으로 넣고 값이 거짓일 경우 변수명 앞에 !를 붙여주면 됨
		if(!b) {
			System.out.println("b == false 입니다");
		}

💡 문자열 비교

  • 문자열을 변수와 합한 뒤 비교했을 경우 다른 문자로 인식
  • 문자열을 비교할 때에는 equals를 사용해서 비교해야 정확하게 비교할 수 있다.
		String str1 = "worl";
		str1 = str1 + "d";
		System.out.println("str1 = " + str1);
		
		if(str1 == "world") {
			System.out.println("str1 은 world 입니다"); //출력x
		}
		
		if(str1.equals("world") == true) {
			System.out.println("equals str1 은 world 입니다"); //출력
		}

📌 switch(조건 분기 제어문)

  • 값이 명확해야한다.
  • 범위를 설정할수 x, 소수(실수)값을 사용할 수 없다.
  • break을 사용하지 않으면 조건이 참이여도 건너뛴다.

💻 switch Ex.

	/*
				형식 :
		 		switch ( 변수 ) {
		 			case 1(값):		if(변수 == 1) 과 동일
		 				처리
		 				break;
		 			case 2:
		 				처리2
		 				break;
		 			case n:
		 				처리n
		 				break;
		 				
		 			default : 			== esle
		 				해당되는 값이 없을 시 실행
		 				생략가능
		 		}
		 */
		
		
		int choice;
		
		choice = 2;
		
		switch( choice ) {
		case 1:
			System.out.println("처리 1 입니다");
			break;
		case 2:
			System.out.println("처리 2 입니다");	//출력
			break;
		case 3:
			System.out.println("처리 3 입니다");
			break;
		default:
			System.out.println("1 ~ 3이 아닙니다");
		}

📖 순환문(루프문)

📌 for

  • 원할 때까지(조건이 참) 반복처리하는 제어문

💻 for Ex.

			/*
		 	형식 :
		 			for( 초기화 ; 조건식 ; 연산식 ) { 
		 				처리
		 			 }
		 	
		 	*/
		
		int i;
		for(i = 0; i < 5; i++) {
			System.out.println("for loop i = " + i);
		}
		
		for(i = 0; i < 10; i = i + 2) {
			System.out.println("for loop " + i);
		}
		
		for(i = 10; i > 0; i--) {
			System.out.println("for loop " + i);
		}
		
		for(int j = 0; j< 10; j++) {// j는 for문 안에서만 사용할 수 있는 변수로 선언
			System.out.println("for loop "+ j);
		}

💻 2중 for문 Ex.

		// 2중 for
		for(int n = 0; n < 5; n++) {
			System.out.println("for n = " + n);
			
			for(int k = 0; k < 3; k++) {
				System.out.println("\tfor k = " + k);
			}
		}

💻 for문 활용 Ex.

  • for + if + array 활욜을 가장 많이 사용
		int array[] = {2, 4, 5, 6, 8 };
		
		for(i = 0; i < array.length; i++) {
			System.out.println(array[i]);
		}
		
		for(i = 0; i < array.length; i++) {
			if(array[i] == 6 ) {
				System.out.println("6을 찾았습니다");		//출력
			}
		}
		
		for(i = 0; i < array.length; i++) {
			if(array[i] % 2 == 1) { //나머지가 1인 것이 홀수
				System.out.println("홀수가 있습니다 " + array[i] + "입니다");
			}
		}

📌 while

💻 while Ex.

			/*
		 	형식 :
		 			초기화
		 			
		 			while(조건) {
		 				처리
		 				연산식
		 			}
		 	*/
		
		int w;
		w = 0;	//초기화
		while(w < 5) {
			System.out.println("while loop" + w);
			
			w++;
		} //4까지 증가하고 5가 되어 식을 빠져나감
		
		//무한루프 -> 연산식이 없어 무한 루프에 빠짐
	/*	while(true) {
			
		}*/
		

💻 2중 while문 Ex.

		//2중 while문
		int w1, w2;
		w1 = 0;
		
		while(w1 < 5) {
			System.out.println("w1 = " + w1);
			w2 = 0;
			while(w2 < 3) {
				System.out.println("\t w2 = " +  w2);
				w2++;
			}
			w1++;
		}

💻 while문 활용 Ex.

		//array 활용
		int array [] = { 2, 4, 5, 6, 8};
		
		int w4 = 0;
		while(w4 < array.length) {
			System.out.println(array[w4]);
			w4++;
		}
		//if문 활용
		int w5 = 0;
		while(w5 < array.length) {
			if(array[w5] == 6) {
				System.out.println("6을 찾았습니다");
			}
			w5++;
		}
		int w6 = 0;
		while(w6 < array.length) {
			if(array[w6] % 2 == 0) {
				System.out.println("짝수가 있습니다 " +array[w6] + "입니다");
			}
			w6++;
		}

📌 do while

💻 do while Ex.

		/*
		 형식 :
		 		do{
		 			처리
		 			연산식
		 		}while(조건);
		  
		 */
		
		int w3;
		w3 = 0;
		
		do {
			System.out.println("do while = " + w3);
			w3++;
		}while(w3 < 5);
		//조건식이 아래에 있기 때문에 위에 처리식이 무조건 한 번 실행되고 난 뒤 조건이 안맞으면 빠져나간다

1개의 댓글

comment-user-thumbnail
2023년 5월 8일

감사합니다. 많은 도움 되었습니다.

답글 달기