ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [JAVA] 기초 문법 정리 (생활코딩, 뇌를자극하는JAVA프로그래밍 발췌)
    공부 기록/프로그래밍 2019. 11. 9. 17:13
    728x90

     

    Public

    Public 모든 class 접근 가능. Private 같은 클래스 내에서만 접근 가능

    Default class 같은 pkg 안에 있는 class 사용 가능

    Public class 경우는 클래스 명과 소스코드의 파일명이 같아야함.

    public class PublicNameDemo{}  // PublicNameDemo.java 이름을 등록해야함.

    하나의 클래스 안에는 하나의 public class 존재.

     

     

    Abstract

    상속 받는 클래스를 만들어서 사용

    Abstract 클래스나 pathem 반드시 상속해서 사용하도록 강제

    추상 클레스는 객체로 만들  없다.

    객체를  이상 인스터화하지 않게 만들려면 클레스에 abstract 만들면 .

    *인스턴스화: 클래스를 가지고 객체를 만드는 

     

    디자인 패턴

     

    Final

    상속/변경을 금지

    static final double PI = 3.14 // 사용자가 절대로 바꾸지 않도록 설정

    파이널로 지정되면 overriding  없음

    Class 메소드 앞에 final 붙이면 오버라이딩도 금지할  있음.

     

     

     

    Interface

    클래스를 가지고 객체를 만드는 일을 인스턴스화(Instantiation)라고 . (인스턴스화를 막으려면 abstract 붙이면됨)

    어떤 객체가 있고  객체가 특정한 인터페이스를 사용한다면  객체는 반드시 인터페이스의 메소드를 구현해야 한다.

    하나의 클래스가 여러 개의 인터페이스   있음.

    인터페이스도 상속된다.

    인터페이스의 멤버는 반드시 public이다

    Abstract 비슷한 기능. 인스턴스는 클래스가 아닌 인스턴스라는 고유한 형태를 가지고 있음. 구체적인 로직이나 상태를 가지고 있을  없음

     

    추상클래스는 일반적인 클래스임. 구체적인 로직이나 상태를 가지고 있을  있다.

    l  선언 방법

    -    식별자 명명 관례에 따라 인터페이스의 이름은 대문자로 시작하는 명사나 형용사
    메소드의 이름으느 소문자로 시작하는 동사

    -    인터페이스에 속하는 메소드는 무조건 추상 메소드로 선언. 굳이 메소드 앞에 abstract  써도 자동으로 프로그램에 추가됨.

    -    Class [class nanme] implements [interface name]

     

     

     

    다형성

    Ex. ESC키와 ENTER  . 둘다 누르는 행위는 같지만 다른 기능을 구현

    Overlaading 같은 이름 ,다른 동작 . 같은 메소드지만 다른 방식의 메소드로 호출

    하나의 변수에 여러 종류의 데이터를 대입할  있는 성질을 변수의 다형성이라고 (from )

     

     

    Java 기능 정리

    변수

    로컬변수: 메소드 안에 선언한 변수

    연산

     Num += 3; // 좌변의 기존 값에 우변 더한후, 결과를 좌변에 대입.

    num++; / 기존값에 1더함. 증가 연산자 or ++n  가능

    num--;  or --n // 감소 연산자

    배열

    타입 식별자[];

    타입: int, float, string

    식별자: arr[], num[];, strArr;

    배열 생성:  arr = new int[10]  , 배열 사용 가능. // arr라는 배열 안에 10개의 메모리 할당. (0~9)

    배열이름[인덱스]: arr[0] = 12; / 배열 안에 변수 대입하여 메모리에 저장

    Ø  Int arr[] = new int[10]; //이렇게 한꺼번에 쓸수도 있음.

    Ø  Int arr[] = {10, 20, 30} ]; //이렇게 초기값까지 배열 변수에 대입할  있음.

    배열의 항목 수는 arr.length   있음.

    다차원 배열

    New 타입[크기1][크기2]; // 크기1: 행의수, 크기2:열의수

    Int table[][] =  new int[3][4];

    table[0][0] = 10;

    table[1][1] = 20;

    table[2][3] = table

     

    Switch

    Switch 괄호 안에 있는 식을 계산하고 나서  식의 결과와 동일한 값을 갖는 case문을 찾아  다음의 명령문을 실행. 그러다가 break 문을 만나면 switch 문을 빠져나감. break문이 없으면  다음 코드까지 연속적으로 실행됨.

    괄호 식과 일치하는 case문이 없으면 default  다음의 명령문들이 실행됨.

     

    반복문

    While(조건식) // true 또는 false 값을 산출하는             

        실행부분 // 조건식이 true 동안 반복 실행되는 부분

    For (초기화식;조건식;업데이트식)

       실행부분 //조건식이 ture 동안 업데이트식을 반복해서 실행부분 수행.

    For(;;) // 무한 루프

    for (int cnt = 0 ; cnt < arr.length ; cnt ++) ;

       System.out.println(arr[cnt])); // 배열의 항목을 순서대로 출력

     형식을 향상된 for 문을 이용해서 사용할  있음 :

    for(변수타입 변수이름: 배열이름)

       실행부분 // 변수 타임은 배열 항목과 동일한 타입이어야 하고, 변수 이름은 프로그래머가 지을  있음.

    :
    for(String str : args)

     

     

     

    Try-catch

    예외처리. 프로그램 실행  예외나 에러가 발생할 경우 처리해주는 . 예외나 에러가 발생할 경우try에서 벗어난다. 벗어나게 되면 기다리고 있던 catch 예외나 에러를 잡아 처리하는 .

    l  Try 블록을 실행해보다가(try) 익셉션이 발생하면, catch 블록이  익셉션을 잡아서(catch) 처리하고, finally 블록은 익셉션 발생 여부와 상관없이  마지막에(finally) 실행된다.

    try{

       try 블록} //  부분을 실행하다가 익셉션이 발생하면

    catch (익셉션타입 익셉션변수)

       catch블록 //  부분을 실행.

    finally {

        finally블록} // 익셉션 발생 유무와 상관없이 실행.

     

    Java.lang에서 Exeption 불러옴

    Catch(Java.lang.ArithmeticException e)

    Class

    클래스를 선언할 떄는 데이터를 필드(클래스 안에 메소드와 동등하게 선언되는 변수), 기능을 메소드로 구현.  필드: 명사 / 메소드:동사

    클래스 이름은 대문자로 시작. 메소드는 소문자로 시작.

    슈퍼클래스는 파일이름이랑 같아야하지 ? 메소드 앞에는 리턴타입(void..) 붙여줘야하는구나

    클래스의 기본 용도: 객체를 생성하느 . 클래스에 선언된 필드와 메소드는 객체를 생성하고나면 생성된 객체에 속하게 .

    객체

    GoodsStock obj; // 변수 선언

    Obj = new [GoodsStock ()]; //  [] ClassName. GoodsStock 클래스의 객체를 생성하는 . Obj 객체의 변수 이름.  // ()안에 필요데이터 없으므로 나주에 선언해주어야함.

    객체 생성  필드에  대입. 필드 이름 앞에 객체의 변수 이름과 마침표 쓰기            

    obj.goodsCode = “1234”;

    obj.stockNum = 200; //필드는 명사 소문자로 시작

    obj.addStock(1000); // 생성된 객체의 메소드 호출. 필드 이름 앞에 객체의 변수 이름과 마침표 쓰기    

    System.out.println(“상품코드:” + obj.goodsCode); /

     

     

    생성자(constructor)

    인스턴스를 생성하는자.  객체를 생성하고 초기화 하는 자. 

    객체가 생성되고 나서 객체마다 고유한 데이터값을 저장하는 대신에,
    객체가 생성되고 나서 해야할 일을 클래스 안에 써두고 모든 객체들이  로직을 이용해서 초기화 작업할수있게 만드는 부분.
    (어떤 일을 시작하기 전에 준비하는 초기화 기능을 자바에서는 생성자가 하는 것)

    어떠한 메소드보다 먼저 실행 되어 초기화 한다. 반드시 실행되는 부분을 놓치지 않도록 함

    this.left = left;

     

    메소드와 비슷하지만, 메소드 이름앞에는 void, int 같은 리턴 타입이 표시된 반면 생성자는 아무것도 없음. 생성자의 이름은 클래스의 이름과 같음. [생성자와 메소드의 구별 기준]

    this. (  ,  );

    같은 클래스의 생성자를 호출  쓰는 자바 키워드. ( ) 안에는 생성자에 넘겨지는 파라미터들. >> 생성자 안에서 이렇게 다른 생성자를 호출하면 같은 클래스에 있는 생성자  파라미터의 ,타입 , 순서가 맞는 생성자가 호출됨.  생성자 호출문은 해당 생성자의  번째 명령문에 위치하도록 해야함.

    :
    class Circle{ //
    클래스

    Double radius ; //필드

    Circle(double radius) // 생성자. method와는 다르게 리턴 타입 표시 없고 클래스 이름과 같음

     this.radius = radius; // 같은 클래스인 Circle클래스에서 Circle 생성자 호출. ( 생성자의 this.radius double radius?)

    필드

    파라미터 변수는 클래스, 생성자, 메소드 안에 모두 존재 가능. 메소드 안의 변수-> 로컬변수 (위의  참고)

    필드는 같은 클래스 내에서라면 순서에 상관 없이   있음. 클래스 외부에서도 사용할  있음

    è 외부에서 필드 못쓰게하려면 : private 키워드 사용! 객체의 구성요소를 외부로부터 감추는 자바의 정보 은닉 기술.

    필드값 앞에 final 붙이면 선언문이나 생성자 앞에 반드시 초기값 지정해야함 .

    Final int sideLength = 10;

     

    Public/Private

    Public 모든 class 접근 가능.

    Private 같은 클래스 내에서만 접근 가능

    Public class 경우는 클래스 명과 소스코드의 파일명이 같아야함.

    public class PublicNameDemo{}  // PublicNameDemo.java 이름을 등록해야함.

    하나의 클래스 안에는 하나의 public class 존재.

     

    Abstract

    상속 받는 클래스를 만들어서 사용

    Abstract 클래스나 pathem 반드시 상속해서 사용하도록 강제

    추상 클레스 객체로 만들  없다.

    객체를  이상 인스터화하지 않게 만들려면 클레스에 abstract 만들면 .

    사용목적: 기존 클래스의 인스터화를 막기 위하여 추상클래스로 만든 경우

    추상메소드: (슈퍼 클레스에?) 메소드 본체가 없는 메소드를 선언. abstract void sendMessage(String recipient); / abstract-본체가 없는 메소드를 선언할  반드시 써야하는 자바 키워드. void-메소드의 리턴타입

    사용목적: 서브클래스에서  추상 메소드를 반드시 구현하도록 만들기 위함.

    (*인스턴스화: 클래스를 가지고 객체를 만드는 )

     

    Final: 상속/변경을 금지.

    static final double PI = 3.14 // 사용자가 절대로 바꾸지 않도록 설정

    파이널로 지정되면 overriding  없음

    Class 메소드 앞에 final 붙이면 오버라이딩도 금지할  있음.

    Ø  다른 프로그래머가 상속받아서 사용하지 못하도록 막아야  경우 사용

     

    Overriding: 슈퍼클래스의 메소드와  같은 시그니쳐의 메소드를 선언해서 슈퍼클래스의 메소드를 무시하도록 만드는 것을 메소드 오버라이딩이라고 .

     

     

    Method

    클래스에 정의 기능은 -> 메소드로 선언.

    구현 방법: 메소드에 들어갈 로직 구상 > 로직을 실행하는데 필요한 데이터가 무엇인지, 로직의 실행 결과를 어떤 타입의 데이터로 산출해야할지 파악 > 메소드의 본체 안에 메소드 로직 기술 (메소드가 리턴하는 데이터 타입 표시(int). 메소드가 필요로 하는 데이터는 파라미터 변수로 선언(int amount). 로직의 실행 결과는 return 문으로 리턴).

    int withdraw (int amount) {

    If (balance <amount>

    return = 0;

    balance -= amount;

        return amount;

    main(String args[]){  >> String 타입의 배열을 만들어 main 메소드로 넘겨줌.

     

    void: 리턴 값이 없음을 표시하는 자바 키워드. method앞에 붙일  있는 리턴타입

    익셉션:

    메소드 안에서 처리하지 못한 것은 메소드 밖으로 던짐 > try문으로 묶어서 처리.

    try {}  시도해서 안되면 catch{} 받음 .

    throw new Exception(); // throw: throw문을 시작하는 자바 키워드. Exception: 익셉션 객체를 생성하는 생성식

    throw new Exception(” string “); //이렇게 sring 타입의 파라미터 받는 생성자도 있음.

     

    오버로딩(Overloading)

     클래스 내에  같은 이름의 메소드를 여러  선언할  있음. (메소드 호출문에서 사용한 파라미터의 , 타입, 순서와 -  메소드에 선언된 파라미터 변수의 , 타입 수가 맞지 않으면 메소드가 호출되지 않기에 이를 이용하여 여러  선언 가능)

    메소드 시그너쳐

    메소드 구분에 사용되는 메소드 이름, 파라미터 변수의 , 타입, 순서를 묶어서 이렇게 말함.

    Update method signature : update(int), update(int, float), update(int, float, float) ….

    정적 구성요소

    클래스의 기본 용도는 객체를 생성하느 . 클래스에 선언된 필드와 메소드는 객체를 생성하고나면 생성된 객체에 속하게 . 하지만 클래스 자체에 속하는 구성요소를 선언할 필요도 있는데 그런 구성요소를 클래스의 정적 구성요소라고 .

    정적 필드(Static field):

    필드 앞에 static 붙임. 필드에 클래스 자체에 속하는 데이터를 저장할 변수를 넣는 ? (입력한 필드와 상관 없이 같은 값만 출력?)

    정적 필드가 아닌 필드를 인스턴스(클래스를 사용해서 만든 객체) 필드라고 .

    상수필드:

     final statc 키워드를 둘다 붙여 주어진 초기값을 프로그램 실행 중에 절대 바꿀  없게 . Eg. Final static int UPPER_LIMIT = 10000; (명명법에 따라 대문자와 밑줄 사용)

    정적 메소드

    특정 개체에 종속되지 않고 기능을 수행하는 메소드.

    정적 초기화 블록

    정적 필드는 특정 객체에 속하지 않기 때문에  생성자에서 초기값을 대입하면 안됨. 이럴경우 정적 초기화 블록(static initialization block/static initializer) 사용해야함.

     

    Instance

     

    클래스를 가지고 객체를 만드는 일을 인스턴스화(Instantiation)라고 . (인스턴스화를 막으려면 abstract 붙이면됨)
    Abstract 비슷한 기능.
    인스턴스는 클래스가 아닌 인스턴스라는 고유한 형태를 가지고 있음. 구체적인 로직이나 상태를 가지고 있을  없음
    추상클래스는 일반적인 클래스임. 구체적인 로직이나 상태를 가지고 있을  있다.

    인터페이스

    어떤 객체가 있고  객체가 특정한 인터페이스를 사용한다면  객체는 반드시 인터페이스의 메소드를 구현해야 한다.

    하나의 클래스가 여러 개의 인터페이스   있음.

    인터페이스도 상속된다.

    인터페이스의 멤버는 반드시 public이다

     

     

     

     

    l  콜백 : 호출된 함수를 알려 주어 다른 프로그램 또는 다른 모듈에서 함수를 호출하게 하는 방법. 일반적으로 운영 체계(OS) 호출할 애플리케이션의 함수를 지정해 특정한 사건 또는 메시지가 발생했을  호출되도록 지정할  있다. 이런 함수를 콜백함수라 한다. (출처: 네이버 지식백과)

    l  js에서 나중에 불러하는 함수. 리턴값일수도있고, 다른 값을 불러올 수도 있음. 1급객체

    l  나중에 실행하라고 다른 함수에 인자로 넘겨주는 (!) 내부 함수에 넘겨주었다면 동기적이고, 외부 API에게 콜백을 넘기면 비동기적일수도있음. (from 코드종)

     

     

    마빈과 그레이들

    빠른 기간동안 계속 늘어나는 라이ㅡ러리의 추가와 프로젝트를 진행하며 라이브러리의 버전을 동기화하기 어렵기에 빌드도구가 등장함. 초기의 java 빌드도구로는 Ant라는 도구를 많이 사용했으나 늘어나는 라이브러리를 관리하기 위해 Maven, Gradle  기존 ant  보완한 빌드도구들이 생겨남.

    , 마빈과 그레이들을 빌드도구다.

    - Apache Maven: 프로젝트에 필요한 모든 ‘dependency(종속성)’ 리스트 형태로 마빈에게 알려 관리할  있도록 돕는 방식. Dependency 관리하고 표준화된 프로젝트를 제공

    - Apache Gradle: JVM 기반의 빌드 도구. 기존이 Ant Maven 보완. 출처: JJ’s Once a week 블로그

    //

    Groovy 언어를 기반으로 만들어진 빌드 도구. 안드로이드 스튜디오의 공식 빌드 시스템. Groovy Java 가상 머신에서 실행되는 스크립트 언ㅇㅓ. java처럼 소스코드를 작성하고 jvm에서 동작하지만 java 달리 소스 코드 컴파일 필요없이 소스 코드를 그대로 실행. Java 호환 되고 java class file 그대로 groovy 클래스로 사용할  있다. 간편하게 사용할  있는 java라고   있는 groovy 사용하여 빌드 처리 작성하고 실행하는 것이 gradle이다. (출처: 아무것도아니다) – 카톡링크

     

     

    GraphQL 페이스북에서 만든 쿼리 언어.

    The Graph API is the primary way to get data into and out of the Facebook platform. It's an HTTP-based API that apps can use to programmatically query data, post new stories, manage ads, upload photos, and perform a wide variety of other tasks. From Facebook

     

    REST API 비교.

    REST API 다양한 method, URL 조합하기 때문에 다양한 Endpoint 존재.

    GQL API 경우, 불러오는 데이터의 종류를 쿼리 조합해서 결정.

    Hashmap

    Map 구현하는 클래스로 Key value 묶어 하나의 entry 저장. Hasing 사용하기 때문에 많은 양의 데이터를 검색하는데 뛰어난 성능을 보임 (?이해안됨)

    Class HashMap<K,V>

    ·         java.lang.Object

    ·          

    ·         java.util.AbstractMap<K,V>

    ·          

    ·         java.util.HashMap<K,V>

    ·         Type Parameters:

    K - the type of keys maintained by this map

    V - the type of mapped values

    All Implemented Interfaces:

    Serializable, Cloneable, Map<K,V>

    Direct Known Subclasses:

    LinkedHashMap, PrinterStateReasons


     

    public class HashMap<K,V>extends AbstractMap<K,V>implements Map<K,V>, Cloneable, Serializable

    Hash table based implementation of the Map interface. This implementation provides all of the optional map operations, and permits null values and the null key. (The HashMap class is roughly equivalent to Hashtable, except that it is unsynchronized and permits nulls.) This class makes no guarantees as to the order of the map; in particular, it does not guarantee that the order will remain constant over time.

    This implementation provides constant-time performance for the basic operations (get and put), assuming the hash function disperses the elements properly among the buckets. Iteration over collection views requires time proportional to the "capacity" of the HashMap instance (the number of buckets) plus its size (the number of key-value mappings). Thus, it's very important not to set the initial capacity too high (or the load factor too low) if iteration performance is important.

    An instance of HashMap has two parameters that affect its performance: initial capacity and load factor. The capacity is the number of buckets in the hash table, and the initial capacity is simply the capacity at the time the hash table is created. The load factor is a measure of how full the hash table is allowed to get before its capacity is automatically increased. When the number of entries in the hash table exceeds the product of the load factor and the current capacity, the hash table is rehashed (that is, internal data structures are rebuilt) so that the hash table has approximately twice the number of buckets.

    As a general rule, the default load factor (.75) offers a good tradeoff between time and space costs. Higher values decrease the space overhead but increase the lookup cost (reflected in most of the operations of the HashMap class, including get and put). The expected number of entries in the map and its load factor should be taken into account when setting its initial capacity, so as to minimize the number of rehash operations. If the initial capacity is greater than the maximum number of entries divided by the load factor, no rehash operations will ever occur.

    If many mappings are to be stored in a HashMap instance, creating it with a sufficiently large capacity will allow the mappings to be stored more efficiently than letting it perform automatic rehashing as needed to grow the table. Note that using many keys with the same hashCode() is a sure way to slow down performance of any hash table. To ameliorate impact, when keys are Comparable, this class may use comparison order among keys to help break ties.

    Note that this implementation is not synchronized. If multiple threads access a hash map concurrently, and at least one of the threads modifies the map structurally, it must be synchronized externally. (A structural modification is any operation that adds or deletes one or more mappings; merely changing the value associated with a key that an instance already contains is not a structural modification.) This is typically accomplished by synchronizing on some object that naturally encapsulates the map. If no such object exists, the map should be "wrapped" using theCollections.synchronizedMap method. This is best done at creation time, to prevent accidental unsynchronized access to the map:

       Map m = Collections.synchronizedMap(new HashMap(...));

    The iterators returned by all of this class's "collection view methods" are fail-fast: if the map is structurally modified at any time after the iterator is created, in any way except through the iterator's own remove method, the iterator will throw a ConcurrentModificationException. Thus, in the face of concurrent modification, the iterator fails quickly and cleanly, rather than risking arbitrary, non-deterministic behavior at an undetermined time in the future.

    Note that the fail-fast behavior of an iterator cannot be guaranteed as it is, generally speaking, impossible to make any hard guarantees in the presence of unsynchronized concurrent modification. Fail-fast iterators throw ConcurrentModificationException on a best-effort basis. Therefore, it would be wrong to write a program that depended on this exception for its correctness: the fail-fast behavior of iterators should be used only to detect bugs.

    This class is a member of the Java Collections Framework.

    Since:

     

     

     

     

     

    JAVA 

    뇌를 자극하는 Java 프로그래밍, 김윤명, 한빛미디어

     

    생성자 / 인스턴스 차이점

    *생성자의 이름은 반드시 클레스와  같은 이름이어야 하고, 리턴 타입이 없어야 한다.
    obj = new ClassName ( , );

     

    동적/정적 메소드

    정적 멤버(클래스 멤버): 클래스에 고정된, 공통적인 변수 또는 메소드. 인스턴스를 생성하지 않아도 호출 가능. 모든 인스턴스에서 공통적으로 사용되는 변수. 클래스가 메모리에 로드   생성되므로 클래스 로딩이 끝나면 바로 사용 가능.   > 정적 변수가  수도 정적 메소드가  수도.

     

    JDK library > java.lang. > Object class (super class) : 모든 클레스는 object 클래스를 상속 받음. Object 클레스의 method 알아둘 필요가 있음. Override하지 않으면 Object method 상속받음.

     

    인터페이스

    여러 클래스들 중 공통점을 추출해서 인터페이스로 만들 수 있음. 클래스의 상속관계에 상관없이 인터페이스와 또 다른 관계를 맞출 수 있기 때문. 
    제약: 인퍼페이스는 클래스의 공통 기능만 표현할 수 있고, 공통 데이터는 표현할 수 없다. 
    클래스처럼 선언해야함. interface라는 키워드로 시작하는 점만 빼면 클래스 선언과 비슷. - 대문자로 시작, 명사나 형용사.
    인터페이스에 속하는 메소드는 무조건 추상 메소드로 선언해야함.

    *선언 방법

    - 식별자 명명 관례에 따라 인터페이스의 이름은 대문자로 시작하는 명사나 형용사
    메소드의 이름으느 소문자로 시작하는 동사

    - 인터페이스에 속하는 메소드는 무조건 추상 메소드로 선언. 굳이 메소드 앞에 abstract  써도 자동으로 프로그램에 추가됨.

    - Class [class name] implements [interface name]
    e.g. class SearateVolume implemens Lendabe: SepaerateVolume 클래스가 Lendable(checkIn,checkOut이라는 메소드 있음)이라는 인터페이스를 구현한다. 


    (출처: 뇌를 자극하는 java 프로그래밍)

    Class description

    Java.lang > String  class : 아주 기초적인 클래스와 인터페이스들이 들어있는 패키지라 import 문을 쓰지 않아도 자동으로 import. 따라서 String 클래스의 생성자를 사용하지 않아도 . 컴파일 하면서 자동으로 String 객체로 만들어짐.  

    StringBuilder / StringBuffer : 버퍼(데이터를 임시로 저장하는 메모리) 문자열의 내용을 저장해두고,  안에서 추가, 수정, 삭제 작업 . 새로운 객체를 만들지 않고 문자열 조작 가능.

    StringTokenizer: 주어진 문자열로부터 작은 단위의 문자열을 추출하는 기능.

    Math 클레스가 제공하는 정적 메소드(p.416)

     

    Vector 클래스사용자가 배열을 사용할  배열의 크기를 벗어나는 인덱스에 접근하면 java.lang.ArrayIndexOutOfBoundsException 발생한다. 그러므로 배열을 사용할 때는 충분한 크기로 설정해야 한다. 그러나 사용할 배열의 크기를 미리 예측하는 것은 쉬운 일이 아니다. 자바에서는 동적인 길이로 여러 데이터형을 저장하기 위해 Vector 클래스를 제공한다. Vector 클래스는 가변 길이의 배열이라고   있다.(출처: [JAVA] Vector 클래스 정리)

    StringBuffer: 문자열을 추가하거나 변경할  주로 사용하는 자료형.  apped method 문자열을 추가할  있음. > toString() method String자료형으로 변경 가능.

     

     

    Method description

    toString: 객체가 가지고 있는 값을 문자열로 만들어서 리턴.

     

    GregorianCalendar = new GregorianCalendar();  파라미터없는 생성자를 이용 하야  클래스의 객체를 생성하면 생산자 안에서 시스템 시계에 있는 시각을 읽어와

    GregorianCalendar 객체 안에 저장. (P.407)

    10. 파일 입출력에 사용되는 자바클래스

    스트림을 다루는 JDK 라이브러리의 클래스들은 java.io 있음. > 파일 입출력 클래스 선택(FileInputStraem, FileOutputStream, FileReader, FileWriter) / 파일 관리, 검색, 삭제 등을 위해서는 File 클래스 선택.

     

    PrintWriter 크래스 >

    print method: 하나의 파라미터를 받는 메소드. 파라미터가 문자가 아니면  데이터를 문자 데이터로 만들어 출력

    println method: print 비슷 but 데이터 출력  줄바꿈 문자 출력

    printf: 주어진 포맷에 따라 데이터를 포맷하여 출력. 첫번째 파라미터가 문자열이기만 하면  뒤에 오는 파라미터의 수에는 제한이 없음.  번째 파라미터는 나머지 파라미터들을 출력할 포맷을 지정하는 문자열(포맷 문자열, format string)으로 사용.

    Writer.printf(“%d %d %d”, 2006, 4, 29); // 2006 4 19

    Writer.printf(“파이=%4.2f”, Math.PI); //파이 = 3.14

    //%d 포맷 명시자(format specifier)라고 . 포맷을 지시하는 역할. 뒤에 오는 정수 파라미터로 체워지고, %f 뒤에 오는 부동 소수점 수로 채워짐. 전체 자리  4, 소수점 아래 2자리.

    %3s 문자열을 3자리로 출력, %n 줄바꿈 문자를 출력

     

     

     

    Main : 자바와 개발자 사이의 약속. 자바가 실행하도록.

    Main 파라미터: String[] args

    args  파라미터 . 그것의 타입이 String

    Void main 출력값이 존재하지 않는다.

    인자 argument 5

    매개변수 (parameter) int limit

    댓글

Designed by Tistory.