관리 메뉴

IT journey

JAVA-자료형 본문

개인공부공간/JAVA

JAVA-자료형

step 2021. 6. 5. 22:26
728x90
반응형

직접 내용 정리하고 만든 예이니 퍼가실 때는 출처를 남겨주세요 :)

1. print(), println(), printf() 의 차이

print() 출력 후 줄을 바꾸지 않습니다.
println() 출력 후 자리를 바꿉니다.
printf() printf("출력 서식",출력할 내용);

참고로, printf()에 대해 더 알아보도록 하겠습니다.

printf()는 출력 후 줄바꿈을 지원해주지 않습니다. 줄바꿈을 원할시에는 \n을 해주어야 합니다.

출력서식의 형식은 %[-][0][n][.m]서식문자 입니다.

-은 출력할 전체 자리수가 지정된 경우 왼쪽에 맞춰 정렬 후 빈칸에 공백을 출력됩니다.

0은출력할 전체 자리수가 지정된 경우 왼쪽의 남는 자리에 0을 출력합니다.

n은 출력할 전체 자리수를 지정합니다.

. m은 잘리는 자리에서 반올림 시켜서 표시하지만 원래 데이터 값은 변경되지 않습니다.

출력 서식문자에 대해 간략히 정리해 보자면 아래 표와 같습니다.

%d 정수
%f 실수
%c 문자
%s 문자열

print(), println(), printf()의 각각에 대한 예는 다음과 같습니다.

public class Main
{
	public static void main(String[] args) {
		System.out.println("Hello IT journey");
		System.out.print("Hello IT journey");
		System.out.printf("Hello IT journey");
	}
}

2. 형변환(casting)

묵시적 형변환 : 자바에서는 자료형의 크기가 더 큰 자료형으로 자동 변환하여 계산합니다. 

참고로, 1바이트 당 하나의 주소값이 할당됩니다. 

예약어(자료형) 비트 수 범위
boolean(논리형) 8 bit(1 바이트) true 또는 false를 기억합니다
char(문자형) 16 bit(2 바이트) 1문자를 기억하며, 0~65535 의 범위를 갖습니다.
byte(수치형-정수) 8 bit(1 바이트) -128~127
(-2의 7제곱~2의 7제곱-1)
short(수치형-정수) 16 bit(2 바이트) -32768~32767
(-2의 15제곱~2의 15제곱-1) 
int(수치형-정수) 32 bit(4 바이트) -2,147,483,648~2,147,483,647
(-2의 31제곱~2의 31제곱-1)
long(수치형-정수) 64bit(8 바이트) -9223372036854775808~9223372036854775807
(-2의 63제곱~2의 63제곱-1)
float(수치형-단정도 실수) 32bit(4 바이트) 소수점 아래로 6자리 정도 표현
double(수치형-배정도 실수) 64bit(8 바이트) 소수점 아래로 16자리 정도 표현
*참고로 float보다는 더 정밀한 연산이 가능합니다.

명시적 형변환 : 프로그래머가 그 순간의 자료형을 변경할 수 있습니다.

명시적 형변환에 대한 예를 들면 아래와 같이 가능합니다.

public class Main
{
	public static void main(String[] args) {
	    System.out.println(12/(double)11);
	}
}

3. 자료형

숫자

  • 정수는 자료형 int와 long을 쓰는 경우가 많습니다.
  • 실수는 자료형 float과 double를 쓰는 경우가 많습니다.
  • 8진수(숫자 0으로 시작)와 16진수(0x로 시작)는 int 자료형을 이용해 표현합니다.
  • 숫자연산,증감연산은 C언어-연산자 편에서 산술연산과 증감연산자와 같으니 넘어가겠습니다.
 

C언어-연산자

직접 내용 정리하고 만든 예제이니 퍼가실 때는 출처를 남겨주세요:) 연산자의 분류 대입 = 오른쪽을 왼쪽에 대입 산술 + - * / % 사칙연산과 나머지 연산 부호 + - 양수와 음수 표시 증감 ++ -- 증가,

step-journey.tistory.com

boolean

  • 참 또는 거짓의 값을 갖는 자료형을 말합니다.
  • 대입되는 값은 true 또는 false가 있습니다.
  • 연산의 결과를 조건문 판단기준에 넣어 이용하는 경우가 많습니다.

문자

  • 1문자를 기억하는 자료형 char를 이용합니다.

위에 나온 자료형의 예들을 살펴보겠습니다.

class Main {
  public static void main(String[] args) {
    //정수의 예
    int number=5;
    long count = 155555;

    // 실수의 예
    float e=2.718281F;
    double d1=1.23e4; //1.23*10의 4제곱
    
    //8진수의 예
    int o=020;
    
    //16진수의 예
    int h=0xA;
    
    //부울의 예
    boolean isFinsh=true;
    
    //문자의 예
    char n='z';
  }
}

---- 위에 나온 자료형들은 new 키워드로 새로 생성할 수 없습니다.

문자열

  • String을 이용합니다.
import java.util.Scanner;

class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        
        String animal="";
        System.out.print("동물을 입력하세요");
        animal=sc.next();
        String feed="";
        System.out.println("먹이를 입력하세요");
        feed=sc.nextLine();
        int age=0;
        System.out.println("나이를 입력하세요");
        age = sc.nextInt();
        
        System.out.println(animal+"은"+age+"살입니다.");
        sc.close();
    }
}

위 코드에 나온 내용을 간략히 설명히 덧붙여 보겠습니다.

Scanner는 키보드를 통해서 입력받는 스캐너입니다.

next()는 띄어쓰기 전까지 문자열(단어)을 입력받습니다.

nextLine()은 문자열을 입력받습니다. 이 메소드는 키보드가 비어있을 경우 입력을 요구하며 대기하고

키보드 버퍼가 비어있지 않으면 키보드 버퍼의 전체 내용(라인)을 읽습니다. 쉽게 말해, 키보드 버퍼를 비웁니다.

nextInt()는 숫자(정수)를 입력받습니다.

sc.close는 scanner를 종료한다는 의미입니다.

  • String animal="monkey"; 가 최초로 문자열이 만들어지고 나면 메모리 어딘가에 있고 그 주소값이 변수값에 저장됩니다. 그리고 String animal1="monkey"; 처럼 같은 내용의 문자열)이 있으면 기존에 있는 문자열의 주소값이 변수에 저장됩니다. 
  • String 메소드 다룬 예 관련 코드는 아래와 같습니다.
#new 키워드로 새로 생성할 때 메모리에 같은 내용이 있는지 상관하지 않기 때문에 무조건 만들어집니다.
class Main{
    public static void main(String[] args){
        String word1="IT journey";
        String word2=new String("IT journey");
        System.out.println(word1==word2);
        System.out.println(word1.equals(word2));
        System.out.println(word1.indexOf("journey"));
        System.out.println(word1.length());
        System.out.println(word1.trim());
        System.out.println(word1.trim().length());
        System.out.println(word1.toUpperCase());
        System.out.println(word1.toLowerCase());
        System.out.println(word1.charAt(4));
        System.out.println(word1.replaceAll("IT","Step"));
        System.out.println(word1.substring(3,10));
    }
}

위 코드에 나온 메소드의 설명을 간략히 덧붙이겠습니다.

○ ==  연산자를 사용하여 비교한 경우 에는 변수에 저장된 문자열을 비교한것이 아니라, 변수에 저장된 주소를 비교하게 됩니다. 주소를 새로 할당하여 만들어진 것이므로, false가 나옵니다.

○ equals()는 두 개의 문자열을 비교한 뒤 true나 false가 나옵니다.

○ indexOf()는 문자열에서 괄호 안의 문자나 문자열이 최초로 나타내는 위치를 얻어옵니다. 없으면 -1을 반환합니다. 참고로, 자바는 숫자를 0부터 셉니다.

○ length()는 변수에 저장된 문자열을 구성하는 문자의 개수가 나옵니다.

○ trim()는 문자열 앞 뒤의 불필요한 공백을 제거하나, 중간에 있는 공백은 제거하지 않습니다.

○ trim().length()는 문자열 앞 뒤의 불필요한 공백을 제거한 문자열을 구성하는 문자의 개수가 나옵니다.

○ toUpperCase()는 영문자를 모두 대문자로 변환합니다.

○ toLowerCase()는 영문자를 모두 소문자로 변환합니다.

○ charAt(index)는 문자열에서 index번째 문자를 한 개 얻어옵니다.

○ replaceAll(old,new)는 old를 new로 바꾸고 싶을 때 사용합니다.

○ substring(시작위치, 끝 위치)는 시작위치에서 끝 위치까지 문자를 뽑아냅니다.

이 때 , 시작위치는 포함되지만 끝 위치는 포함하지 않고 나옵니다.

StringBuffer -문자열을 추가하거나 변경할 때 주로 사용되는 자료형 

public class Main{
    public static void main(String[] args){
        StringBuffer sb = new StringBuffer();
        sb.append(" IT journey");
        System.out.println(sb.toString());
        sb.insert(0,"Hello");
        System.out.println(sb.toString());
        System.out.println(sb.substring(0,5));
    }
}

위 코드에 나온 메소드의 설명을 간략히 덧붙이겠습니다.

○ append()는 문자열을 추가할 때 씁니다.

○ insert(index,문자열)는 index 위치에 문자열을 삽입한다는 의미입니다.

맵(Map)

참고로, Python-자료형(사전형,집합) 편에서 배웠던 사전형을 보고 오시면 이해가 수월합니다.

맵 역시 Key와 Value를 한쌍으로 갖습니다.

#여기에서 key는 animal,feed,ZooKeeper이고
#value는 동물,먹이,사육사입니다.
import java.util.HashMap;

public class Main{
    public static void main(String[] args){
        HashMap<String,String>map = new HashMap<String, String>();
        map.put("animal","동물");
        map.put("feed","먹이");
        map.put("ZooKeeper","사육사");
        
        System.out.println(map.get("feed"));
        System.out.println(map.containsKey("먹이"));
        System.out.println(map.remove("animal"));
        System.out.println(map.size());
    }
}

위 코드에 나온 메소드의 설명을 간략히 덧붙이겠습니다.

○ put(key,value)는 맵을 추가할 때 씁니다.

get(key)는 key에 해당하는 value값을 얻어올 때 씁니다.

containsKey()는 맵에 해당하는 key가 있는지 판단하여 true나 false를 반환합니다. 

○ remove(key)는 key에 해당되는 맵을 삭제 후 그 value값을 보여줍니다.

  size()는 Map의 갯수를 보여줍니다.

4. 자료형의 집합

배열

○ 정의

같은 이름으로 여러 개의 기억 장소를 만들어 사용할 수 경우에 사용됩니다.

○ 자동 초기화

배열을 선언하게 되면 숫자는 0으로, 문자는 공백, boolean은 false로, 클래스로 만든 배열은 null로 됩니다.

○ 인덱스(index)

0부터 시작합니다.

참고로, 배열의 값을 접근할 때는 배열명[index]를 이용합니다.

○ 1차원 배열 형태 

자료형 [] 배열명 = new 자료형[배열의 크기] 

자료형 [] 배열명 = {초기치}

--> 초기치 개수만큼 자동으로 배열을 만들고 초기치의 개수만큼 초기화 시켜줍니다.

○ 특징

배열의 크기는 고정되어 있습니다.

배열의 길이를 알고 싶을 때는 배열명.length를 쓰면 됩니다.

리스트

배열과 비슷한 기능을 합니다.

import java.util.ArrayList;

public class Main{
    public static void main(String[] args){
        ArrayList<String> word = new ArrayList<String>();
        word.add("animal");
        word.add("Zookeeper");
        word.add("IT journey");
        word.add(0,"Hello");
        
        System.out.println(word.get(3));
        System.out.println(word.size());
        System.out.println(word.contains("Step"));
        System.out.println(word.remove("IT journey"));
        System.out.println(word.remove(0));
    }
}

위 코드에 나오는 메소드를 간략히 덧붙이겠습니다.

○ add(index,객체)

- index를 입력하게 되면 index위치에 객체를 추가합니다.

- index를 입력하지 않으면 객체 추가만 이루어집니다. 

○ get(index)는 특정 index의 값이 나옵니다.

○ size()는 변수에 담긴 갯수가 나옵니다.

○ contains()는 해당 내용이 있는지 여부를 true나 false로 반환합니다.

○ remove(객체)는 해당 항목을 지운 후 true가 나옵니다.

○ remove(index)는 해당 객체를 삭제 후 해당 객체를 보여줍니다. 

 

728x90
반응형

'개인공부공간 > JAVA' 카테고리의 다른 글

JAVA - 클래스  (10) 2021.06.08
JAVA-제어문(feat.파일 입출력)  (4) 2021.06.07
Comments