안드로이드 자바 코틀린 기초 지식/자바 기초지식 (9) 썸네일형 리스트형 String, StringBuilder, StringBuffer 차이 Java에서 문자열을 다루를 대표적인 클래스는 아래 3가지가 있다. String StringBuffer StringBuilder 1) String 먼저 String과 다른 클래스(StringBuffer, StringBuilder)의 기본적인 차이는 String은 immutable(불변), StringBuffer는 mutable(변함)에 있습니다. 예를 들어,String을 이용해 문자열 + 문자열을 한다면 새로운 메모리영역을 만들어서 저장후 그 메모리를 가리키게 변경하고 기존에 있었던 부분은 GC에 의해 사라지게 된다. String str1 = "one "; String str2 = "two "; String str1 = str1 + str2; // "one two " str1의 "one "을 가르키던 부.. 자바의 특징과 장단점, 객체지향 언어란??, 클래스와 객체 Java는 객체지향 언어입니다. 기본 자료형을 제외한 모든 요소들이 객체로 표현되고, 객체 지향 개념의 특징인 캡슐화, 상속, 다형성이 잘 적용된 언어입니다. 장점 JVM(자바가상머신) 위에서 동작하기 때문에 운영체제에 독립적이다. GabageCollector를 통한 자동적인 메모리 관리가 가능하다. 단점 JVM 위에서 동작하기 때문에 실행 속도가 상대적으로 느리다. 다중 상속이나 타입에 엄격하며, 제약이 많다. 출처: https://dev-coco.tistory.com/153 [슬기로운 개발생활:티스토리] 객체지향 언어란??? 객체지향 언어는 프로그램을 객체 단위로 나누어서 객체를 중심으로 프로그램을 구성하는 언어를 의미한다. 객체를 조립하여 전체 프로그램을 만드는 것이다. 장점 : (1) 재사용성이 .. 객체 지향의 4대 특성(JAVA) 캡 - 캡슐화(Encapsulation) : 정보은닉(information hiding) 상 - 상속(Inheritance) : 재사용 추 - 추상화(Abstraction) : 모델링 다 - 다형성(Polymorphism) : 사용편의 추상화: '추상화'란, 어떤 실체로부터 공통적인 부분이나 특성들을 한 곳에 모은 것을 의미한다. 공통의 속성이나 기능을 묶어 이름을 붙이는 것 클래스들의 중요하고 공통된 성질들을 추출하여 슈퍼 클래스를 선정하는 개념이다 예를 들어, 개 고양이 속성 : 이름, 나이 성 : 이름, 나이 기능 : 짖는다 기능 : 짖는다 이런 공통적인 기능이나 속성이 있을때 animal이라는 추상 class에 구현해놓고 상속시키서 모델링 한다면 중복 코드가 현저히 줄어들 것이다. 상속 : 상위 .. JVM 이란? OS에 종속받지 않고 CPU가 Java를 인식, 실행할 수 있게 하는 가상 컴퓨터이다. JVM 덕분에 OS에 상관없이 어디서든 JAVA 애플리케이션을 실행할 수 있게 된다. Java 소스코드, 즉 원시코드(*.java)는 CPU가 인식을 하지 못하므로 기계어로 컴파일을 해줘야한다. Java파일이 실행되면 JVM이 인식할 수 있는 Java bytecode(*.class)로 변환된다. Java compiler 가 .java 파일을 .class 라는 Java bytecode로 변환한다. JVM이 OS가 bytecode를 이해할 수 있도록 해석해준다. 가비지컬렉션을 통해 자동적인 메모리 관리를 해줍니다. 가비지 컬렉션은 영어로 Garbeage Collection으로 줄여서 GC라고도 부릅니다. 가비지 컬렉션은 .. 추상클래스, 인터페이스 추상클래스 클래스 내 추상 메소드가 하나 이상 포함되 있으면 추상클래스이다. 추상 클래스는 미완성 설계도에 비유할 수 있습니다. 이러한 추상 클래스는 객체 지향 프로그래밍에서 중요한 특징인 다형성을 가지는 메소드의 집합을 정의할 수 있도록 해줍니다. public abstract class A {} 추상 클래스는 인스턴스, 즉 객체를 만들 수 없는 클래스 입니다. 추상 메소드는 하위 클래스에서 메소드의 구현을 강제해야 합니다. 추상 메소드를 포함하는 클래스는 반드시 추상 클래스여야 합니다. 상속하는 집합간에는 연간관계가 있습니다. 다중 상속이 불가능합니다. 인터페이스 인터페이스는 모든 메소드가 추상 메소드이다. 모든 멤버 변수는 public static final 이어야 하며, 이를 생략할 수 있습니다. .. 제어자와 접근 제어자 제어자란 메서드나 변수 클래스의 선언부에서 함께 사용되어 추가적인 의미를 부여한다. 접근제어자 : public, protected, default, private 그 외 제어자 : static, final, abstract Static : 클래스 변수(static 맴버변수)는 인스턴스에 관계없이 같은 값을 가짐. (인스턴스 변수는 하나의 클래스로부터 생성되어도 다른값 유지) static 멤버변수 모든 인스턴스에 공통적으로 사용되는 클래스 변수가 된다. 클래스변수는 인스턴스를 생성하지 않고도 사용가능하다. 클래스가 메모리에 로드될 때 생성된다. static 메서드 인스턴스를 생성하지 않고도 호출이 가능한 static 메서드가 된다. static메서드 내에서는 인스턴스멤버들을 직접 사용할 수 없다. fina.. 자바 메모리 구조 (Stack, Heap, Static) Static 영역 : 하나의 JAVA 파일은 크게 필드(field), 생성자(constructor), 메소드(method)로 구성된다. 그중 필드 부분에서 선언된 변수(전역변수)와 정적 멤버변수(static이 붙은 자료형) -> Static 영역에 데이터를 저장한다. Static 영역의 데이터는 프로그램의 시작부터 종료가 될 때까지 메모리에 남아있게 된다. 다르게 말하면 전역변수가 프로그램이 종료될 때까지 어디서든 사용이 가능한 이유이기도 하다. 따라서 전역변수를 무분별하게 많이 사용하다 보면 메모리가 부족할 우려가 있어 필요한 변수만 사용할 필요가 있다. Stack 영역 : 지역변수, 파라미터, 리턴 값, 연산에 사용되는 임시 값 등이 생성되는 영역입니다. 우리가 현재까지 작성하던 메소드 내에서 정의하.. 정적 Static Java에서 Static 키워드를 사용한다는 것은 메모리에 한번 할당되어 프로그램이 종료될 때 해제되는 것을 의미합니다. 그래서 static은 전역적으로 쉽게 재사용하는 멤버나 잘 변하지 않는 변수나, 메소드를 사용할때 주로 사용됩니다. 만들어 놓고 클래스 호출, 객체 생성을 따로 할 필요없이 바로바로 사용할 수 있기 때문에 사용성이 좋습니다. 일반적으로 우리가 만든 Class는 Static 영역에 생성되고, new 연산을 통해 생성한 객체는 Heap영역에 생성됩니다. 객체의 생성시에 할당된 Heap영역의 메모리는 Garbage Collector를 통해 수시로 관리를 받습니다. 하지만 Static 키워드를 통해 Static 영역에 할당된 메모리는 모든 객체가 공유하는 메모리라는 장점을 지니지만, Garb.. 이전 1 2 다음