[ java ] 자바 프로그래밍의 기본 (변수와 자료형)

Suji Kang·2023년 12월 6일
0

🐾 자바의 특징

  1. 객체 지향 언어
    자바는 객체 지향 언어로, 프로그램을 객체로 나누어 만들고 객체들을 결합하여 프로그램을 완성하는 기법을 사용한다. 이를 통해 상속, 캡슐화, 다형성과 같은 객체 지향 특징을 제공한다.

프로그래밍 언어의 종류

  • 절차 지향 언어 (C언어) -> 위에서부터 아래로
  • 객체 지향 언어 (Java, Python, C++) -> Object
  1. 단순성
    자바는 C/C++을 기반으로 개발되었지만, 포인터와 같이 복잡한 기능은 없어서 단순하게 사용된다.
  1. 이식성
    자바는 바이트코드를 생성하고 가상 머신(JVM : Java Virtual Machine)을 통해 실행되어, 어떤 운영체제에서도 동일한 결과를 얻을 수 있는 높은 이식성을 가지고 있다.
  1. 멀티 스레드(Multi-Thread)
    CPU를 최대한 활용한다(CPU를 최대한 활용하기 위해 프로그램의 2가지 이상을 동시에 실행가능)
  1. 메모리 자동정리
    가비지 컬렉터 Garbage Collector - 사용하지 않는 메모리를 주기적으로 자동으로 수거하고 관리
  1. 풍부한 오픈소스 라이브러리
    매우 많은 코드가 공개 -> 오픈 소스(무료)

🐾 자바의 단점

  • 자바는 실행을 위해 자바 가상 머신을 거쳐야 하기 때문에 다른 언어에 비해 실행 속도가 상대적으로 느리다.
  • 예외 처리는 잘 되어 있지만, 개발자가 처리를 명시적으로 지정해 주어야 하므로 편리함에 제약이 따른다.

🐾 프로그램 기본 구조

HelloWorld.java 👉 작성한 파일 이름이 메인 클래스의 이름이 된다
메인 클래스 👉 public static void main 메소드를 갖는 클래스
main 메소드 👉 자바 프로그램의 시작 지점. 한 메인 클래스에 main 메소드는 2개 이상 있으면 안됨!
System.out.println() 👉 출력문 함수
📝 자바의 모든 문장의 끝에는 세미콜론(;)이 있어야 함!
int a = 20; -> int:정수, a:변수이름, =:대입, 20:수, ;:끝 -> 변수 선언 문

HelloWorld.java

public class HelloWorld {
	public static int sum(int a, int b) {
		return a + b;
	}
	
	// main 메소드 부터 시작한다 -> 주석 (comment) + 설명을 다는 용도
	public static void main(String[] args) {
		System.out.println("Hello World!");
		
		int a = 20;
		int b = 30;
		System.out.println(sum(a, b));
	}
}

코드 작성후, 코드를 실행하려면, 실행 단추 Run 을 클릭한다. 또는 단축키 fn command F11 (mac기준)

결과값은 : Hello World!,50

출처:멘토씨리즈_자바


🐾 식별자(Identifier)

자바 코드에서 사용되는 이름 규칙을 식별자라고 한다. 식별자는 클래스(파일 이름), 메소드, 변수 등의 요소를 가리키며, 코드 작성시 몇 가지 규칙을 따라야 한다.

📝 반드시 따라야 하는 규칙

  1. 특수문자 및 공백은 사용하지 않는다. 단, 언더스코어 _와 달러 기호 $는 사용 가능하다.
int a = 20;
int hello world = 20; -> X
int $a = 20; -> O
  1. 변수 및 식별자에는 한글을 사용할 수 있다.
int a = 20;
int= 20; -> O
  1. 키워드는 변수명으로 사용할 수 없다.
 사용 불가 - if, for
  1. 숫자가 변수명의 첫 글자로 올 수 없다.
int a1 = 20;
int 1a = 20; -> X
  1. 대소문자를 구분한다.
int a = 20;int A = 20;는 서로 다른 변수이다.

📝 클래스 이름 규칙:

클래스 파일 이름은 첫 글자를 대문자로 시작하며, 각 단어의 첫 글자도 대문자로 작성한다.
예: HelloWorld.java

메소드 및 변수 이름 짓기:
메소드와 변수 이름은 첫 글자를 소문자로 시작하며, 나머지 단어의 첫 글자는 대문자로 작성한다.
예: sum, main, a, b, helloWorld, myGrade

상수 이름 규칙:
상수(값이 변하지 않는 변수)는 모든 글자를 대문자로 작성한다.
예: PI, E

Naming.java

public class Naming {
	public static void main(String[] args) {
		//특수문자 불가능, 공백 불가능 예외 _, $
		int name;
		int _a;
		int $a;
		//int a!; -> 불가능 
		
		//한글가
	    int 이름;
	    
	    //키워드 불가능
	    // int if; -> 불가능
	    
	    //대소문자 구분  
	    int Public; // 소문자 public은 키워드
	    
	    //숫자가 앞에 X
	   int a1;
	   //int 1a; ->불가능 
	}

}

🐾 자료형 (Data Type)

출처:멘토씨리즈_자바

📌 기본 자료형(primitive type):

  • 실제 데이터 값을 저장하는 자료형으로, 정수, 실수, 논리 타입 등 8개의 종류가 있습니다.
  • 각 자료형은 저장 크기와 기본값이 미리 정해져 있습니다.
  1. 논리 타입 (boolean): true, false
    참/거짓을 표현하는 데 사용되며, 1비트(1바이트)의 크기를 가진다.
  1. 문자 타입 (char): 문자: a, b, c, 가, 나, 다
    2바이트의 크기를 가진다
    C/C++언어 1바이트 (문자 표현 방식 = ASCII 방식)
    Java언어 2바이트 (문자 표현 방식 = Unicode 방식)
    - 문자 타입을 표현할 때에는 반드시 '''작은따옴표'''로 표현
    - 문자열을 표현할 때에는 반드시 """큰따옴표"""로 표현

정수 타입:
3. byte: -128부터 127까지, 1바이트의 크기
4. short: -32768부터 32767까지, 2바이트의 크기
5. int: -2147483648부터 2147483647까지, 4바이트의 크기 (기본값)
6. long: -922경부터 922경까지, 8바이트의 크기

실수 타입 (부동소수점 방식):
7. float: -3.410^38부터 3.410^38까지, 4바이트의 크기
8. double: -1.710^308부터 1.710^308까지, 8바이트의 크기

출처:멘토씨리즈_자바

📌 참조 자료형(reference type):

  • 메모리에 저장된 데이터의 메모리 주소를 저장하는 자료형입니다.
  • 사용자가 직접 정의한 자료형으로, 기본값이 정해져 있지 않아 null 값이 존재할 수 있습니다.

레퍼런스 타입: 3개

  • Array
  • class
  • interface

String 클래스 (문자열) (-> 레퍼런스 타입)

  • 여러 개의 문자를 합친 것

DataTyple.java

public class DataType {
	public static void main(String[] args) {
		// 기본타입
		//논리타입
		boolean b1 = true;
		boolean b2 = false;
		System.out.println(b1);
		System.out.println(b2);
		
		
		// 문자 타입
		char c1 = 'a';
		char c2 = '가';
		String c3 = "Hello";
		
		System.out.println(c1);
		System.out.println(c2);
		System.out.println(c3);
		
		
		//정수타입
		byte b3 = 100;  //-128~127
		short s1 = 32000;   //-32768~ 32767
		int i1 = 2100000000;  //대충 -21억 ~ 21억 (0 8 개)
		long l1 = 922000000000L; //대충 -992경 ~ 922경 (0 12개)
		System.out.println(b3);
		System.out.println(s1);
		System.out.println(i1);
		System.out.println(l1);
		
		
		//실수타입
		float f1 = 3.14F;
		double d1 = 3.14;
		System.out.println(f1);
		System.out.println(d1);	
	
		//정수 리터럴
		//10진수
		int i2 = 15;
		System.out.println(i2);
		//2진수: 0 과 1
		int i3 = 0b101;
		System.out.println(i3);
		// 8진수 : 0~7
		int i4 = 017;
		System.out.println(i4);
		//16진수 : 0~9 + A~F
		int i5 = 0x25;
		System.out.println(i5);
		int i6 = 0x1a;
		System.out.println(i6);
		int i7 = 0x1A;
		System.out.println(i7);
	}
}

출력값:


🐾 리터럴 (literal)

프로그램에 직접 표현한 값

  • 정수 리터럴
    long 변수의 값 뒤에 붙이는 L
    long l = 100L;

2진수, 8진수, 16진수, 10진수

  • 2진수 0b~~ (0또는1)
    binary
  • 8진수 0~~ (0~7)
    octal
  • 16진수 0x~~ (0~9, a~f)
    0X~~ (0~9, A~F)
    hexadecimal

Assignment1.java

public class Assignment1 
{
	    public static void main(String[] args) {
	        // 1. Hello Java를 출력하는 코드를 작성하세요.
	    	String print = "Hello Java";
	    	System.out.println(print);
	        
	        // 2. 식별자 이름 규칙 5개를 각각 만족하는 변수를 int형으로 5개 작성하세요.
	    	int $a = 25;
	    	int= 25;
	    	int a3 = 25;
	    	int a = 25;
	    	int A = 25;	
	    	System.out.println($a);
	    	System.out.println();
	    	System.out.println(a3);
	    	System.out.println(a);
	    	System.out.println(A);
	      
	        // 3. 파이 (3.14) 값을 저장하는 상수 변수를 작성하세요.
	       	final double PI = 3.14;
	    	System.out.println(PI);
	       
	        // 4. false 값을 저장하는 변수를 작성하세요.
	    	boolean abc = false;
	    	System.out.println(abc);
	       
	        // 5. 200000 을 저장하는 변수를 두 개의 다른 자료형을 이용해 작성하세요.
	    	int num = 200000;
	    	System.out.println(num);
	    	long num2 = 200000;
	    	System.out.println(num2);
	       
	        // 6. 10.24 를 저장한은 실수 변수를 두 개의 다른 자료형을 이용해 작성하세요.
	    	float f = 10.24F;
	    	double d = 10.24;
	    	System.out.println(f);
	    	System.out.println(d);
	    	
	        // 7. 출력 했을 때 40이 나오도록 16진수 리터럴 정수 변수를 작성하세요.
	    	long l = 0x28; // 🌟 0x는 16진수를 나타냄, 28은 16진수로 40
	    	System.out.println(l);
	    }
}
profile
나를위한 노트필기 📒🔎📝

0개의 댓글