프로그래밍/- java

sysout, 자료형, scanner,for,배열, date,random

즐겁게 하하하 2022. 2. 3. 08:02
728x90
Sysout ,  /r 리턴 , %n 줄바꿈
## ==================================
===>  println(출력후 줄바꿈)
System.out.println( 0x1A ); // 26 ( 십진수 )
System.out.println( '' +7+7 ); // 77
System.out.println( 7+7 + '' ); // 14
System.out.println( 10 / 3 ); // 3
System.out.println( 10.0 / 3 ); // 3.333...
System.out.println( '3' - '0' + 1 );   // 4
System.out.println( 3 + '0' );         // 51
System.out.println( (char)(3 + '0') ); // 3 
3 + "" = "3"   ,  '3' + "" = "3"  // string 으로 변환됨
## ==================================
===>  printf(출력)
System.out.printf( "%d" , 0x1A );        // 10진수
System.out.printf( "%f" , 0.123456789 ); // 부동 소수점 0.123457
System.out.printf( "%.2f", 10.0/3 );     // 3.33
System.out.printf( "%g" , 1212.123456789 ); // 1212.12  총 7자리 출력
System.out.printf( "%c" , "a"  ); // 문자
System.out.printf( "%s" , "aaa"); // 문자열
System.out.printf( "%b" , true ); // boolean
System.out.printf( "%o" , 0x1A ); // 8진수
System.out.printf( "%X" , 0x1A ); // 16진수
System.out.printf( "%X" , 15 );  // 16진수 F
System.out.printf( "%#X" , 15 );  // 16진수 0XF  0X의 접두사가 붙음
System.out.printf( "[%5d]%n" , 10 ); // [   10]
System.out.printf( "[%-5d]%n" , 10 ); // [10   ]
System.out.printf( "[%05d]%n" , 10 ); // [00010]
System.out.printf( "[%5d]%n" , 123456789 ); // 123456789
System.out.printf( "%14.10f%n" , 0.123456789 );  //  0.1234567890
System.out.printf( "%14.4f%n" , 0.123456789 );   //        0.1235
System.out.printf( "%.4f" , 0.123456789 );       //0.1235
System.out.printf( "[%.4s]" , "www.abcdefghijklmn" ); //[www.]
## ==================================

 

 

## ==================================
final int a;  // 상수 [ 한번만 저장가능한 변수
int a = "dd";  // 변수 [  값을 저장하기 위한 공간
// dd : 리터럴  [ 값 그 자체 ]

실수형 접미사 f (float) , d (double 생략) , 정수형 접미사 L ( long )
byte a = 1;  / long a = 100_000_000L 
float a = 1.2f / boolean a = true;
int a = 0100;  // 8진수   
int a = 0x100 // 16진수
int a = 'A'; // SYSOUT > 65 출력
double a = 3.14f //double > float  Ok
## ==================================
===> 전위 , 후위 연산
int p = 5; 
int k = 1 + p--;   // k=6
System.out.println("k = " + k + " , p = " + p); // p=4	
int j = 1 + --p;  // p=3
System.out.println("j = " + j + " , p = " + p); // k=4
## ==================================
===> 형변환( 형 변환중에 범위를 벗어나면 데이터 손실 발생 )
Integer.toBinaryString( 11 );  // int형 변수 => 2bit Binary 형태의 String 변환
int num = Integer.parseInt("123");
String num = Integer.toString("123");
String num = a.toString(); // String 으로 형변환됨.
double num = Double.parseDouble("3.15");
charAt(1);  // 가리키고 있는 문자열에서 1번째에 있는 문자를 char타입으로 변환

double a = 85.7;
int aa = (int)a;
System.out.println(aa); //85	

char b = 'A';
int bb = (int)b;
System.out.println(bb); //65

// byte < int 
byte a = 10;
int b = a;        // (int)생략가능		 
byte c = (byte)b; // (byte)생략불가
## ==================================
===> 산술 변환
// 연산 전에 두 타입을 일치 시킨다.
long + int => long + long
float + int => float + float
double + float => double + double

// 피 연산자의 타입이 int 보다 작은 경우 int 로 변환하여 연산
System.out.println('2' - '0'); // 50 - 48
byte + short => int + int
char + short => int + int

===> Math.round();  // 소수점 반올림
Math.round(9.123456 * 10000) / 10000.0; 
// 9.1235 [ 91235 (int) / 10000.0 (float) => float / float ]
(int)( 9.123456 * 10000 ) / 10000; 
// 9.1234
Math.round(9.123456 * 10000) / 10000; 
// 9 [ 91235 (int) / 10000 (int) => int / int ]

===> 연산 오버플로우 
int a = 1_000_000;
int b = 2_000_000;
long c = a * b;
System.out.println(c); // int * int => -1454759936 :: 범위 초과로 오버 플로우 발생함.
long d = (long)a * b; 
System.out.println(d); // 2_000_000_000_000  // 정상

===> 기본 8개 범위를 초과하는 경우
Biginteger , BigDecimal

## ==================================
===> Scanner 
import java.util.*;
Scanner scanner = new Scanner(System.in);

  char c1 = ' ';
  char c2 = ' ';
  c1 = sc.nextLine().charAt(1); // 한행 에서 첫번째
  c2 = sc.next().charAt(0); // String, 다음 토큰을 문자열로 return
  System.out.println(c1); System.out.println(c2);
scanner.close();
/* 123 Enter 456 입력 > 2 \n 4 */	
## ==================================

## ==================================
===> for
Loop1 : for(int i = 0 ; i < 9 ; i++) { 
	for (int j = 0 ; j < 9 ; j++) {				
		if(j > 5) { break Loop1; // Loop1 까지 탈출 }
		System.out.println(j);
	}
}	

for( A : B ) // B에서 차례대로 객체를 꺼내서 A에다가 넣겠다는 것
for(;;)      // 무한 반복문
## ==================================
★ Array
:: 변수만 선언 
int[] arr; 
int arr[]; 

/:: 선언과 크기 할당 
int[] arr = new int[5]; 
String[] arr = new String[5];

 ::기존 배열 초기화
arr = new int[5]; 

:: 선언 , 크기 지정 , 값 초기화 
int[] arr = new int[] {1,3,5,2,4};
int[] arr = {1,2,3,4,5}; // new int[] 생략 가능
int[] bb;   bb = new int[]{1,2,3,4}; // new int[] 생략 불가능
String[] weeks = {"월","화","수","목","금","토","일"}; 

:: 2차원 배열 선언 
int[][] arr = new int[4][3]; 

::3의 크기의 배열을 4개 가질 수 있는 2차원 배열 할당 
int[][] arr9 = { {2, 5, 3},  {4, 4, 1},  {1, 7, 3}, {3, 4, 5} };

for (int i = 0; i < score.length; i++) {
	for (int j = 0; j < score[i].length; j++) {
		System.out.printf("score[%d][%d]=%d%n", i, j, score[i][j]);
		sum += score[i][j];
	}
}

:: 배열 크기
bb.length; 

::모든 배열 요소 보여줌
int[] aa = { 1,2,3,4,5 };
System.out.println(  Arrays.toString(aa)  );  // [ 1,2,3,4,5 ]
★ Arrays :: 배열을 다루기 편리한 메서드
  => toString()
   Arrays.toString( arr );  :: 1차원 배열 []
   Arrays.deepToString( arr2D ); :: 다차원 배열 [][]

  => copyOf() , copyOfRange()
     int[] arr = { 0,1,2,3,4 }
     int[] arr2 = Arrays.copyOf( arr , 3 ); :: { 0 , 1 , 2 }
     int[] arr2 = Arrays.copyOf( arr , 7 ); :: { 0 , 1 , 2 , 3 , 4 , 0 , 0  }
     int[] arr3 = Arrays.copyOf( arr , 2 , 4 ); :: { 2 , 3 } :: 4 불포함

  => deepEquals
    boolean k = a.equals(b);  :: 문자열 비교 :: 대소문자 구분
    boolean k = Arrays.deepEquals( a , b );  :: 두 배열이 같은지 비교 (equals 금지) 
    boolean k = a.equalsIgnoreCase(b); :: 문자열 비교 :: 대소분자 구분안함

   => sort
    Arrays.sort( arr ); :: 배열안의 요소를 오름차순으로 정렬한다.
    Arrays.sort(arr , String.CASE_INSENSITIVE_ORDER); :: 대소문자 구분안함 
    int idx = Arrays.binarySearch( arr , 2 ); ::sort로 정렬후 2를 찾는다.( 정렬 필수 )
    

  => fill , setAll
    int[] arr = new int[5];
    Arrays.fill( arr, 9 ); :: [9,9,9,9,9]  :: 특정값으로 채우기
    Arrays.setAll( arr , (i) -> (int)(Math.random()*5) +1 ); ::람다식을 이용해 채우기

  => asList( Objet ) :: 배열을 읽기 전용 List로 변환
    List list = Arrays.asList(1,2,3);
    list.add(4);  :: 읽기 전용이라 추가 불가능
    List list = new ArrayList( Arrsys.asList(1,2,3) ); :: 추가 가능

## ==================================
Date today = new Date();  :: today에 날짜 객체의 주소 저장
## ==================================
Math.random()  :: 0.0 ≤ x < 1.0 사이 double 형으로 반환
Math.random() * (max - min + 1) + min // 공식
(int) (Math.random() * (max - min + 1) + min)
## ================================== 
str.chartAt(0); ## 문자열에서 해당 위치의 index 문자를 반환 0 ~ 
str.length();   ## 문자열의 길이 반환
str.substring( from , to );  ## 문자열에서 from ~ to 까지(to제외) 문자열 반환
str.substring( 0 , aa.length() );
str.toCharArray();  ## string -> char[] 
 
728x90