자바 기본 문법 개념정리

김예은·2023년 8월 24일
0

Java Programming 이란 ?

자바(Java)는 1995년 미국의 썬 마이크로시스템즈의 제임스 고슬링(James Gosling)과 다른 연구원들이 개발한 객체 지향적 프로그래밍 언어이다.

자바의 특징
1. 쉽다. ( C와 C++문법을 바탕으로 하지만 포인터와 다중상속 부분이 삭제됨)
2. 플랫폼에 독립적이다. ( JVM만 있으면 모든 운영체제에서 실행 가능)
3. 객체지향 언어다.
4. 메모리 관리를 자동으로 해준다.

변수와 계산

제어문

배열

배열은 데이터형이 같은 변수가 여러 개 필요할 때 사용함.
배열 생성방법 : new라는 키워드를 사용

1차원 배열 선언 및 사용 방법

public class ArrayExam{
	public static void main(String[] args){
    	int[] array1 = new int[100]; // array1이 배열이름, 인덱스는 100까지 사용가능
        int[] array2 = new int[]{1,2,3,4};
        int[] array3 = {1,2,3,4};
        
        int value = array3[0];
        System.out.println(value);
        
        array1[0] = 50; // 배열 array1의 0번 인덱스에 50 담기
        array1[1] = 100;
        
        // System.out.println(array1[1]);
        }
  }

배열에 값을 넣을 때는 배열의 이름과 배열의 표시인 대괄호 안에 인덱스를 적으면 됨.
📌 배열은 기본 자료형이 아니라 이 부분을 참조하라는 참조형 !!

배열 사용하기

public class ArrayWithFor{
	public static void main(String[] args){
    	int[] iarraay = new int[100];
        
        for(int i=0; i < iarrray.length; i++){
        	iarray[i] = i + 1; // 100개의 배열 안에 0부터 차례로 숫자를 할당
            }
          for(int i =0; i < array.length; i++){ 
          /* 배열인덱스는 0부터
          배열의 크기는 배열명.length를 사용*/
          sum = iarray[i];
          }
          int sum = 0;
          /* for문 안에 선언하면 for블록 밖에서는 변수를 사용하지 못함. 
          게다가 for블록을 실행하고 다시 반복하는 시점에 변수를
          매번 새롭게 선언하므로 지속적인 값 저장 X */
          for(int i =0; i < array.length; i++){ // 배열 크기만큼 반복
          sum += iarray[i]; //  반복문 밖에서 선언한 변수 누적
          }
          
          System.out.println(sum); // 변수 출력
         }
     }

2차원 배열

선언할 때 배열표시를 두 번 적으면 됨.

for each문

for(형과 값을 받아줄 변수명:출력하고 싶은 자료구조)

for (int index=0; index < array.length; index++) {
	int i = array[index];
	System.out.println(i);
    }

for (int i:array) {
	System.out.println(i);

위 두 코드는 같은 문장.
for each문
for문 내에서 인덱스를 초기화, 배열의 크기와 인덱스 크기를 비교하여 인덱스를 증가, 배열에 저장된 인덱스에 해당하는 값을 꺼내서 변수에 담음

클래스와 객체

용어정리
객체우리가 소프트웨어 세계에 구현해야 할 대상
클레스객체를 구현하기 위한 설계도
인스턴스클레스라는 설계도에 따라 소프트웨어 세상에 구현된 실체
인스턴스화클레스를 메모리에 올려 인스턴스를 만드는 과정

클레스 선언

public class 클레스 명 { //  클레스 블록
	public static void main (String[] args){
    	Car c1 = new Car();
        /* new 뒤의 Car은 생성자,
           c1이라는 객체를 생성,
           --> 메모리에 객체가 만들어졌고 이를 인스턴스라고 함.
        }
        /* c1은 가리키는 변수, 참조하는 변수, 레퍼런스하는 변수이고
        변수가 인스턴스를 가지는 것이 아니라 말 그대로 가리킨다는 의미 */
}

참조형

기본형 : 논리형, 문자형, 정수형, 실수형
참조형(=래퍼런스형, 클래스 타입, 사용자 정의형 타입) : 배열, 클레스 ... 등등
==> 주로 객체 연결을 위한 타입

Q : 객체를 변수에 담으면 안되나 ?
A : 객체는 하나의 변수에 담기에 너무 크다. 뿐만 아니라 그 크기가 유동적이다. 때문에 자바는 객체 접근을 위해 어드레싱(addresing) 방식 즉, 주소지를 통한 접근 방식을 취한다.

  • String 클레스 정리
  1. new 키워드 없이 인스턴스를 만드는 경우
String str1 = "hello"; 
String str2 = "hello";
/* "hello"라는 문자열은 상수를 저장하는 영역에 저장됨.
두번째 문장이 실행될 때 hello라는 문자열 상수는 이미 만들어졌으므로
str이 참조하는 인스턴스를 str2도 참조함.*/
  1. new 키워드로 인스턴스를 만드는 경우
String str1 = new String("hello"); 
String str2 = new String("hello");
/* 인스턴스는 무조건 새로 만들어진다.
두 번째 문장이 실행될 때도 새로 만들고, str3과 str4는 서로 다른 인스턴스를 참조
*/
String str5 = "Hello World"; 
String str6 = str5.substring(3);
/* String은 불변 클레스
메서드를 호출해도 내부의 값은 변하지 않고 모두 새로운 String을 생성해서 반환
*/

필드 선언


1. 이름과 번호를 필드로 가진 Car 클래스 선언

public class Car{
	String name;
    int number;
 }
  1. Car 클래스를 인스턴스화하기
Car c1 = new Car();
Car c2 = new Car();
// Car라는 인스턴스가 메모리에 두 개 만들어진다.
// 객체별로 name과 number라는 필드를 가진다.
  1. 속성 이용하기

c1.name = "소방차"; // c1.name은 c1이 참조하는 객체의 name을 의미한다.
c1.number = 1234; // c1.number는 c1이 참조하는 객체의 number을 의미한다.

c2.name = "구급차"; 
c2.number = 1111;

System.out.println(c1.name);
System.out.println(c2.number);

메서드 선언

사물 = 상태 + 행동
사물 = field + Method

  • 매서드 실행 : 객체.메서드명();
  • 메서드 정의
public calss MyClass{
	public 리턴형 메서드명 (매개변수들){
    // 리턴형 : 메서드를 실행한 다음 결괏값을 되돌려줄 때 사용하는 자료형
    실행될 코드
    }
}
public class HelloWorld{ // HelloWorld 클래스 : 프로그램의 최소단위
	public static void main(String args[]){ 
    	//메인 메서드 : 프로그램의 시작점
    	System.out.println("Hello World");
        }
    }

변수의 스코프와 static

profile
소프트웨어공학 / 정보통신공학

0개의 댓글

관련 채용 정보