개발공부

JAVA쪼렙탈출기: 여러가지의 출력 함수들과 자료형 구조

Yuniverse. 2023. 5. 11. 14:15
Python과 SQL만 써본 주니어 분석가. '개발공부를 해보고 싶다', '개발도 공부하긴 해야하는데...'는 말만 한지 어연 1년이 넘어가는 중, 이대로는 안되겠다 싶어 냅다 JAVA 수업 수강에 카드를 긁었다. 쪼렙 중의 쪼렙이 JAVA를 배워나가는 여정을 "JAVA 쪼렙 탈출기"라는 시리즈로 남길 예정이다.

 

JAVA 사용시의 규칙들

  • 하나의 코드가 끝나는 마지막에는 반드시 ;(세미콜론)을 작성해야 한다.
  • 주석
    • 한줄 주석: //
    • 여러줄 주석: 시작시 /* 을 쓰고 끝날 때에 */ 를 쓴다.
  • 사용자 정의 명칭
    • 영문 대소문자 숫자, _(밑줄), $ 만 사용 가능하다.
    • 이름의 첫글자로 숫자를 사용할 수 없다.
    • 이름 중간에 공백을 사용할 수 없다.
    • 영문 대소문자를 구분한다. (Name, name은 다르게 인식)
    • 예약어 (JAVA에서 사용중인 이름) 를 사용할 수 없다.
  • class명
    • 이름의 첫글자는 영문 대문자로 시작한다.
    • 단어를 조합해서 작성할 시에는, 2번째 이상의 단어의 첫글자는 대문자로 시작한다.

 

println( )   vs.   print( )

println() 과 print() 는 둘 다 출력함수이다. println() 은 출력 후 라인을 변경해주는 반면, print() 는 출력 후 라인을 변경해주지 않는다는 차이점이 있다.

 

public class Ex02Print {

	public static void main(String[] args) {
		
		System.out.println("Hello Java world!");
		System.out.println("Let's study hard.");
		
	}
	
}

[결과값]

Hello Java world!

Let's study hard.

 

public class Ex02Print {

	public static void main(String[] args) {
		
		System.out.print("Hello Java world!");
		System.out.println("Let's study hard.");
		 
	}
	
}

[결과값]

Hello Java world!Let's study hard.

 

숫자를 덧셈하면 결과값이 나오고, 문자열을 덧셈하면 이어지게 된다.

public class Ex02Print {

	public static void main(String[] args) {
		
		System.out.println(12 + 34);
		System.out.println("abc" + "def");
		 
	}
	
}

[결과값]

46

abcdef

 

문자열 뒤에 '+'를 적용하면 모두 문자열로 인식한다. *(괄호)를 쓸 경우엔 숫자로 인식

public class Ex02Print {

	public static void main(String[] args) {
		
		System.out.println(1 + 2 + "data");
		System.out.println("data" + 1 + 2);		
		System.out.println("data" + (1 + 2));
		 
	}
	
}

[결과값]

3data

data12

data3

 

printf( )

printf()는 문자열 안에 서식지정자를 사용해서 외부 값의 출력형태를 지정한다.

printf()는 print(), println()과 달리  , 로 값을 연결한다는 것을 잊지 말자.

public class Ex03Printf {

	public static void main(String[] args) {
		
        // 정수
		System.out.printf("숫자 : %d\n", 10);
		
        // 실수
        System.out.printf("실수 : %f\n", 2.3);
		
		// 문자
		System.out.printf("문자 : %c\n", 'A');
		System.out.printf("문자 : %c\n", '가');
		
		// 문자열
		System.out.printf("문자열 : %s\n", "hello");
		
	}
	
}

[결과값]

숫자 : 10

실수 : 2.300000

문자 : A

문자열 : hello

 

문자 하나의 데이터를 사용할 때에는 ' '로 작성한다.

문자열 데이터를 사용할 때에는 " "로 작성한다.

 

public class Ex03Printf {

	public static void main(String[] args) {
		
		System.out.printf("%d\n", 123);
		System.out.printf("%5d\n", 123);
		System.out.printf("%-5d#\n", 123);
		
		System.out.printf("%.1f\n", 12.1234);
		System.out.printf("%7.2f\n", 12.1234);
		
	}
	
}

[결과값]

123

     123

123     #

12.1

     12.12

 

서식지정자 안에 정수값을 상요하면, 출력시 해당 위치에 정수값만큼의 공간을 확보하고 값을 출력한다.

 

자료형 데이터

  • 상수 : 값 변경 불가
  • literal : 소스 코드 안에 직접 작성해서 사용하는 데이터
  • 자료형 : 데이터를 저장하는 공간을 만들 때 사용하는 이름
    • 기본 자료형 : 이름과 값이 하나. 데이터 공간의 크기가 고정
        1byte 2byte 4byte 8byte
      논리형 boolean      
      문자형   char    
      정수형 byte short int (기본) long
      실수형     float double (기본)
    • 참조 자료형 : 기본 자료형을 제외한 모든 자료형. 이름과 실제 데이터 있는 곳이 분리되어 있다.
  • 변수 : 자료형을 사용해서 만들어 쓰는 데이터

 

논리형

public class Ex08Boolean {

	public static void main(String[] args) {
		
		// boolean
		boolean judge = true;
		System.out.println("judge : " + judge);
		
		judge = false;
		System.out.println("judge : " + judge);
		
	}
	
}

[결과값]

judge : true

judge : false

 

논리형에서는 참(true), 거짓(false) 의 값만을 사용할 수 있다.

 

정수형

public class Ex04Integer {

	public static void main(String[] args) {
		
		int a; // 변수 선언(생성)
        
        a = 10;
        System.out.println("a : " + a);
        
		a = 20;
		System.out.println("a : " + a);
		
		byte ba = 127;
		System.out.println("ba : " + ba);
		
		short sa = 32767;
		System.out.println("sa : " + sa);
		
		long la = 2147483648L;
		System.out.println("la : " + la);
		
	}
	
}

[결과값]

a : 10

a : 20

ba : 127

sa : 32767

la : 2147483648

 

*long 타입 리터럴을 사용할 때에는 데이터 뒤에 'L'을 작성한다.

 

실수형

public class Ex05Float {

	public static void main(String[] args) {
		
		// 실수
		double dd = 1.2;
		System.out.println("dd : " + dd);
		
		float ff = 1.2F;
		System.out.println("ff : " + ff);
		
	}
	
}

[결과값]

dd : 1.2

ff : 1.2

 

*float 타입 리터럴을 사용할 때에는 데이터 뒤에 'F'를 사용한다.

 

문자형

public class Ex06Character {

	public static void main(String[] args) {
		
		// 문자
		char ch = 'a';
		System.out.println("ch : " + ch);
		
		ch = '가';
		System.out.println("ch : " + ch);
		
	}
	
}

[결과값]

ch : a

ch : 가

 

public class Ex07String {

	public static void main(String[] args) {
		
		// 문자열 : String class
		String stnA = "hi";
		System.out.println("stnA : " + stnA);
		
		stnA = "데이터 수정";
		System.out.println("stnA : " + stnA);
		
		String textA = "new";
		String textB = "java";
		String title = textA + " " + textB;
		System.out.println("title : " + title);
		
		System.out.println("title 문자수 : " + title.length());
		
	}
	
}

[결과값]

stnA : hi

stnA : 데이터 수정

title : new java

title 문자수 : 8

 

String : 문자열을 기본자료형처럼 다루게 해주는 class 

문자형 하나의 데이터를 쓸 때는 '  '를, 문자열 리터럴은 "  "를 사용한다.

length() : 문자열의 길이를 알려주는 함수

 

equals() : 문자열이 같은지 확인하는 함수

public class Ex07String {

	public static void main(String[] args) {
		
		String wordA = "abc";
		String wordB = "abc";
		String wordC = "abf";
		System.out.println(wordA.equals(wordB));
		System.out.println(wordA.equals(wordC));
		
		
	}
	
}

[결과값]

true

false

 

주의사항

public class Ex09Variable {

	public static void main(String[] args) {
		
        // 1번 케이스
        int a, b, c;
		
        // 2번 케이스
        int d = 1, e = 2;
		
        // 3번 케이스
        int f, double da;
		
        // 4번 케이스
        int data = 0;
        double data = 0; Error
		
	}
	
}

1번 케이스, 2번 케이스는 에러 없이 잘 작동되는 올바른 코드이다.

하지만 3번 케이스와 4번 케이스는 Error가 발생한다.

  • 3번 케이스 : 자료형이 다를 때 한 줄에 연달아 입력해서는 안 된다. (-> 여러 줄에 걸쳐서 입력해야 한다.)
  • 4번 케이스 : 자료형이 다르다고 해서 같은 이름의 변수를 만들 수 없다.
public class Ex09Variable {

	public static void main(String[] args) {
		
		int ia = 1;
		double da = 2.2;
		System.out.println("ia : " + ia + " , da : " + da);
			
	}
	
}

[결과값]

ia : 1 , da : 2.2