728x90
반응형

프로그래밍 언어 1445

[JAVA] 자바의 Static

static 정적(static) 멤버 변수 = 클래스 멤버 변수 클래스가 메모리(메서드 영역)에 로딩될 때 함께 로딩되는 멤버변수 인스턴스 생성과 상관없음 인스턴스 생성 없이 클래스명만으로 접근 가능 클래스명.정적멤버변수명 또는 클래스명.정적메서드명() 정적 멤버변수의 경우 모든 인스턴스에서 하나의 값을 공유함 공유 메모리 공간을 사용하므로 모든 인스턴스가 주소값 공유 로컬변수는 메서드 호출 및 종료와 관계있고 인스턴스변수는 인스턴스 생성 및 소멸과 관계있고, 클래스변수는 클래스 로딩(프로그램 시작) 및 클래스 제거(프로그램 종료)와 관계있다. class StaticEx { static int a = 10; // 클래스(static = 정적) 멤버변수 선언 int b = 20; // 인스턴스 멤버변수 선..

[JAVA] 자바의 추상 클래스 & 메서드

추상메서드 메서드 구현부(바디, {}) 가 없는 메서드 실행할 코드가 없는 메서드 구현부가 없기 때문에 외부에서 호출해도 실행할 코드가 없음 따라서, 추상메서드를 포함하는 클래스는 반드시 추상클래스로 선언해야한다 추상메서드 정의 시 리턴타입 앞에 abstract 키워드를 붙임 추상메서드 정의 기본 문법 [접근제한자] abstract 리턴타입 메서드명([매개변수..]); 추상클래스 인스턴스 생성이 불가능한 클래스 인스턴스 생성이 가능할 경우 추상메서드 호출이 가능하므로 인스턴스 생성을 못하도록 막아놓은 클래스 상속을 통해 서브클래스에서 추상메서드를 구현하도록 강제하는 용도의 클래스로 주로 사용 추상클래스가 가질 수 있는 멤버 생성자, 일반 멤버변수, 상수, 일반 메서드, "추상 메서드" 추상클래스 정의 시..

[JAVA] 자바의 참조형변환 (레퍼런스 형변환)

[JAVA] 참조형변환(래퍼런스 형변환) 클래스 간의 형변환(참조형 변수끼리의 형변환) 반드시 상속 관계에서만 가능한 변환 업캐스팅 Up Casting 슈퍼클래스 타입으로 서브클래스의 인스턴스를 참조하는 것 서브클래스 인스턴스를 슈퍼클래스 타입으로 변환하는 것 기본 문법 슈퍼클래스타입 변수명 = 서브클래스인스턴스; 묵시적(자동) 형변환이 일어남 참조 가능한 영역이 축소됨 (슈퍼클래스 타입에서 선언된 변수, 메서드만 접근 가능함) 하나의 슈퍼클래스 타입으로 여러 서브클래스 인스턴스의 공통된 멤버에 접근 가능하도록 해준다 일반적인 레퍼런스 형변환을 의미 자식(서브클래스) 타입에서 부모(슈퍼클래스) 타입으로 변환 시 "자동 형변환(업캐스팅)"이라고 하며, 부모(슈퍼클래스) 타입에서 자식(서브클래스) 타입으로 ..

[JAVA] 자바의 final

final 키워드 클래스, 메서드, 변수 선언 시 변경의 마지막을 표시 멤버변수에 final 사용 시 : 변수 값 변경 금지(= 상수로 취급됨) => final 키워드가 붙은 변수(상수)는 일반 변수와 구분하기 위해 대문자로 변수명을 작성함(단어 구분은 언더스코어(_) 사용) 메서드에 final 사용 시 : 메서드 변경 금지(= 오버라이딩 금지) 클래스에 final 사용 시 : 클래스 변경 금지(= 상속 금지) => 대표적인 final 클래스 : java.lang.String, java.lang.Math 등 // 1. 멤버변수에 final 키워드 사용 => 값 변경 불가(상수로 취급) class FinalVariable { int num1 = 10; // 일반 멤버변수(차후에 값 변경 가능) //fina..

[JAVA] 자바의 this & super

this this 키워드 자신의 인스턴스를 가리키는 목적으로 사용됨 객체(인스턴스) 생성 시 참조변수 this 에 자동으로 인스턴스 주소가 저장됨 레퍼런스 this 자신의 인스턴스 주소가 저장되는 참조 변수 모든 인스턴스에 자동으로 생성되는 변수이며 객체(인스턴스) 생성 시 자동으로 자신의 인스턴스 주소가 저장됨 인스턴스변수와 로컬변수의 이름이 같을 때, 로컬변수가 선언된 메서드 내에서 인스턴스변수를 가리키는 용도 메서드 내에서 인스턴스변수와 이름이 중복되는 변수가 없으면 레퍼런스 this 를 생략할 수 있다. 기본 사용 문법 this.인스턴스변수 또는 this.인스턴스메서드() class Person3 { String name; int age; public Person3(String name, int ..

[JAVA] 자바의 상속 Inheritance

[JAVA] 상속 Inheritance 슈퍼클래스(부모클래스, 상위클래스)가 가진 멤버(변수, 메서드)를 서브클래스(자식클래스, 하위클래스)가 물려받아 선언없이 사용할 수 있도록 하는 것 서브클래스를 정의할 때 물려받을 슈퍼클래스를 지정하여 표현 is-a 관계라고도 함 상속을 통해 슈퍼클래스의 멤버를 물려받기 때문에 직접 메서드 또는 변수를 생성할 필요가 없어서 코드 중복 최소화됨 또한, 슈퍼클래스의 멤버를 수정하면 서브클래스에는 슈퍼클래스에서 수정된 내용이 그대로 적용되므로 유지보수가 용이 상속 적용 기본 문법 class 서브클래스명 extends 슈퍼클래스명 {} // 슈퍼(부모) 클래스 정의 public class Parent { public void parentPrn() { System.out.p..

[JAVA] 자바의 패키지 Package

패키지(Package) 및 package 문 클래스 파일이 위치하는 물리적 폴더 구조 패키지가 다르면 같은 이름의 클래스도 각각 별도로 관리가 가능함 패키지명은 상위패키지와 하위패키지로 구분하여 패키지 내에 또 다른 패키지를 생성할 수 있음 각 패키지 단계를 마침표(.)로 구분하여 지정 패키지명은 보통 각 회사의 도메인 이름을 사용하며 도메인 이름을 상위도메인부터 역순으로 나열하여 지정 ex. samsung.com 일 경우 com.samsung 으로 지정 특정 패키지에 소속된 클래스의 소스코드 최상단에는 반드시 package 키워드를 사용하여 소속 패키지의 이름을 명시해야함 단, 하나의 클래스는 하나의 패키지에 소속되므로 package 문은 소스 코드 최상단에서 단 한 번만 선언됨 특정 클래스의 이름을 ..

[JAVA] 자바의 생성자 Constructor

생성자 Constructor 객체를 생성할 때 new 연산자 뒤에 붙어서 호출되며, 객체 초기화를 담당하는 메서드의 일종 객체 생성 시 단 한 번만 호출 가능(임의로 호출 불가능) 메서드와 다른 점 생성자의 이름은 반드시 클래스명과 동일해야한다 리턴타입을 기술하지 않는다 (void 도 사용하지 않음) 클래스 정의 시 생성자를 하나도 정의하지 않을 경우 컴파일러에 의해 기본 생성자 Default Constructor가 자동으로 생성됨 매개변수가 없고, 중괄호 블록 내에 코드가 없는 빈 생성자 생성자 정의 기본 문법 [접근제한자] 클래스명([매개변수...]) { // 생성자 호출(객체 생성) 시 수행할 코드들... } 기본 생성자 형태 public 클래스명() {} /* * Person 클래스 정의 * 멤버..

[JAVA] 자바의 접근제한자 Access Modifier

접근제한자 Access Modifier 클래스 또는 인터페이스의 멤버에 접근을 제한하는 키워드 4가지(public, protected, (default), private) 로 구성되며 default 접근제한자는 별도의 키워드 없이 변수 또는 메서드 선언 public : 외부의 모든 클래스에서 접근 가능하도록 지정 private : 자신의 클래스에서만 접근 가능하도록 지정 (다른 클래스에서 접근 불가능하도록 지정) default(package) - 같은 패키지 내의 클래스에서 접근 가능 패키지 선행학습후 공부하기 private - 자신의 클래스에서만 접근 가능 (다른 클래스에서 접근 불가) 주로, 클래스 내의 멤버변수는 private 접근제한자를 사용하여 외부에서 접근할 수 없도록(내부에서만 접근 가능하도..

[JAVA] 자바의 클래스 Class

클래스 class 클래스를 정의한 뒤 반드시 인스턴스를 생성하여야만 해당 클래스에 대한 실체화가 되고, 실체화 된 인스턴스를 통해 변수에 데이터를 저장하거나 메서드를 호출하여 동작을 수행 가능 객체 사용 순서 클래스타입(참조형) 변수 선언 new 연산자를 사용하여 클래스의 인스턴스 생성 => 생성된 인스턴스의 주소를 참조 변수에 저장 주소가 저장된 참조 변수를 통해 인스턴스에 접근하여 사용 클래스타입(참조형) 변수 선언 기본 문법 클래스명 변수명; 클래스 인스턴스 생성 및 주소 저장 기본 문법 변수명 = new 클래스명(); 클래스 변수 선언 및 인스턴스 생성을 동시에 수행하는 문법 클래스명 변수명 = new 클래스명(); 생성된 인스턴스 접근 방법 변수명.멤버변수명 또는 변수명.메서드명() /* * 분..

[JAVA] 자바의 메서드 Method

메서드 Method 객체의 동작(기능)을 담당하는 요소 반드시 호출되어야만 사용 가능(호출당해서 작업을 수행하는 메서드 : Worker 메서드) (특정 메서드를 호출하는 메서드 : Caller 메서드) 메서드 구현부(바디) 내에서 작업을 수행하는 도중 작업을 중지하고 호출한 곳으로 되돌아가려면 return 문을 사용 단, 리턴타입에 따라 return 문 뒤에 데이터를 명시할 수도 있고 return 문 자체를 생략할 수도 있음 매개변수는 1개 이상의 변수를 선언할 수 있지만 리턴값은 1개만 리턴 가능(동시에 2개 이상 리턴 불가) 메서드 정의 기본 문법 [제어자] 리턴타입 메서드명([매개변수선언]...) { // 메서드가 호출되면 실행될 코드들... [return [값];] } 제어자 : 생략이 가능하며,..

[JAVA] 자바의 배열 Array

배열(Array) 같은 타입의 여러 데이터를 하나의 묶음으로 다루는 것 동일한 데이터타입 변수들의 집합 배열은 메모리 상의 연속된 공간에 생성됨 따라서, 한 번 생성한 배열의 크기를 변경할 수 없다 기본 데이터타입과 참조 데이터타입 모두를 배열로 생성 가능 저장된 데이터들은 **배열명(변수명)**을 사용하여 관리 배열의 크기는 배열명.length 속성을 사용하여 알아낼 수 있다 배열 생성 시 각 데이터 저장공간에는 **인덱스(첨자)**라는 번호가 붙는다 따라서, 배열의 인덱스 범위는 0 ~ 배열크기-1 까지 자동 부여됨 배열을 사용하려면 배열 선언 -> 생성 -> 초기화 단계를 거쳐야한다.기본값 : byte&short&int = 0, long = 0L, float = 0.0f, double = 0.0 b..

[JAVA] 자바의 반복문 for & while

반복(loop) 문 특정 조건에 따라 문장 또는 블록을 반복 실행하는 문 for문, while문으로 구분됨 for문은 주로 반복 횟수가 정해져 있는 반복문에 사용되며, while문은 주로 반복횟수가 정해져 있지 않은 반복문에 사용됨 초기식, 조건식, 증감식, 실행문(블록)으로 구성됨 for문 초기식, 조건식, 증감식의 위치가 정해져 있는 반복문 (초심자에게 유리) 초기식으로 제어 변수를 초기화 한 후, 조건식을 통해 반복 여부를 결정한 뒤 결과가 true 이면 반복할 문장을 실행하고 증감식을 통해 제어변수를 증감시킴 이후 조건식 -> 실행문 -> 증감식 순으로 반복 수행하다 조건식 결과가 false 가 되면 반복문을 종료하고 빠져나감 기본 문법 for(초기식(1); 조건식(2); 증감식(4)) { // ..

[JAVA] 조건문 if & switch

조건문 특정 조건에 따라 문장의 실행 여부를 결정하는 문 단일 if문 조건식에 따라 특정 문장 실행 여부를 결정하는 기본적인 조건문 조건식 판별 결과가 true 이면 블록( { } ) 문 내의 문장들을 실행하고 조건식 판별 결과가 false 이면 블록 문을 생략함 기본 문법 문장1; if(조건식) { 문장2; // 조건식 판별 결과가 true 일 때 실행할 문장들... } 문장3; 조건식 판별 결과가 true 일 때 : 문장1 -> 문장2 -> 문장3 조건식 판별 결과가 false 일 때 : 문장1 -> 문장3 if ~ else 문 조건식 판별 결과에 따라 서로 다른 문장을 실행하는 if문 조건식 판별 결과가 true 이면 if 문의 중괄호 블록문{} 을 실행하고 false 이면 else 문의 블록문{}..

[JAVA] 자바의 비교&논리 연산자

비교(관계) 연산자 두 피연산자 간의 대소 관계 비교를 수행하는 연산자 연산 수행 결과는 true 또는 false 값으로 나타냄 => 연산 결과를 출력문에서 출력하거나, boolean 타입 변수에 저장 == (동등 비교 연산자) : 두 피연산자가 같은지 비교 != (Not Equal) : 두 피연산자가 같지 않은지(다른지) 비교 >, >=, a 와 b 는 다르므로(같지 않으므로) true 가 리턴되어 출력됨 System.out.println(a > b); // a 가 b 보다 큰지 판별 // => a 가 b 보다 크므로 true 가 리턴되어 출력됨 System.out.println(a >= b); // a 가 b 보다 크거나 같은지 판별 // => a 가 b 보다 크거나 같으므로 true 가 리턴되어 출..

[JAVA] 자바의 연산자

산술 연산자(+, -, *, /, %) *기본 사칙연산(+, -, , /) 과 나머지 연산자로 구성 나눗셈 연산자(/)는 나눗셈 결과 중 몫만 계산하고, 나머지 연산자(%)는 나눗셈 결과 중 나머지만 계산 덧셈연산자의 경우 일반적인 덧셈 기능 외에 문자열에 사용 시 문자열 결합 연산자로 동작함ex) "문자열" + 정수 = "문자열정수" 실수 + "문자열" = "실수문자열" (문자열과 특정 데이터타입간에 덧셈연산시 두 데이터를 결합하여 하나의 문자열로 만들어준다) int a = 10, b = 3, c; c = a + b; System.out.println(a + " + " + b + " = " + c); c = a - b; System.out.println(a + " - " + b + " = " + c);..

[JAVA] 자바의 형변환 Type Casting

형변환 Type Casting 어떤 데이터 타입을 다른 데이터 타입으로 변환하는 것 기본 형변환 기본 데이터 타입 8가지 중 boolean을 제외한 나머지 7가지 타입끼리의 형변환 작은 타입에서 큰 타입으로 변환 시 자동 형변환 묵시적(암시적) 형 변환 = 자동 형변환 작은 데이터 타입 데이터를 큰 데이터 타입으로 변환하는 것 별다른 추가 작업 없이 그대로 전달하면 컴파일러에 의해 자동으로 변환됨 변환된 후에도 데이터의 변형이 없음 큰 타입에서 작은 타입으로 변환 시 강제 형변환 명시적 형변환 = 강제 형변환 큰 데이터 타입 데이터를 작은 데이터 타입으로 변환하는 것 값의 손실(= 넘침(Overflow))이 발생할 가능성이 있으므로 컴파일러에 의해 자동으로 형변환 되지 않는다. 형변환 연산자를 사용하여 ..

[JAVA] 자바의 변수와 상수 (Variable & Literal)

변수 Variable 데이터가 저장되는 메모리 공간 (변할 수 있는 메모리 공간) 데이터 타입과 크기에 따라 각각 다른 공간을 사용 변수 사용을 위해서는 변수 선언, 변수 초기화 단계를 거쳐야 한다. 변수 선언 데이터를 저장하기 위한 메모리 공간을 할당받기 위한 작업 저장할 데이터의 타입에 따라 적정한 변수를 선언해야 함 변수 선언 기본 문법 : 데이터 타입 변수명; 변수 초기화 생성된 변수(메모리 공간)에 새로운 데이터를 저장하는 작업 변수는 항상 한 번에 하나의 데이터만 저장 가능 변수 선언 기본 문법 : 데이터타입 변수명; 변수 사용 변수를 선언하고 초기화까지 완료된 경우 해당 변수명을 사용하여 변수에 저장된 데이터에 접근 가능 // 변수 선언 int a; //정수형 데이터를 저장하기 위한 int형..

[JAVA] 자바의 데이터 타입

처음 공부할 때 엄청 헷갈렸던 변수의 데이터 타입.. 자바에서 변수는 태어날 때부터 돌잡이 때 물건을 쥐는 아기처럼 자신이 담을 데이터 쥐어줘야 한다. 연필을 잡았지만 공부를 못했던 나와는 달리 자바의 변수들은 지정해준 데이터 타입을 충실히 지킨다. 자바에서 실행되는 모든 코드들은 RAM이라고 하는 메모리에서 실행된다. (RAM의 특정 공간을 할당받아 사용) 자료형 Data Type 기본 데이터 타입 Primitive Type 자바에서 사용하는 기본적인 데이터타입 8가지(기본형) 1. 정수형 - 소수점이 없는 데이터 표현 가능한 정수 범위에 따라 4가지 타입으로 분류 byte (1Byte = 8bit) : -128 ~ + 127까지 표현 가능 short (2Byte = 16bit) : -32768 ~ +..

[JAVA] 주석 comment

/* * 이 곳은여러 줄 주석 범위 내이므로 * 모든 문장이 주석으로 처리되어 실행 대상에서 제외 됩니다. * 따라서, 프로그램의 초기 설명문을 작성하는데 유용합니다. */ /** * 이 곳은 자바 도큐먼트 주석 범위 내이므로 * 여러 줄 주석과 마찬가지로 모든 문장이 주석 처리됨 * 단, 일반적인 주석 용도는 아니고, 특수한 설명서를 만드는데 사용됨 */ System.out.println(1); System.out.println(2); //System.out.println(3); System.out.println(4); /*System.out.println(5); System.out.println(6); System.out.println(7);*/ System.out.println(8); //Syste..

728x90
반응형