본문 바로가기

JAVA/기본다지기

JAVA 2일차 필기

import java.lang.System패키지.클래스


class HelloWorld{

HelloWorld( ){ } (=default constructor(생성자))

void main()

System.out.print(" "); ( System 클래스는 Static이기 때문에 new System(); 으로 호출하지 않아도 된다 )

}


클래스명() = 생성자


heap 영역 : Hard와 같은 영역

stack 영역 : RAM과 같은 영역


모든 클래스에는 생성자가 반드시 필요하며, 생성자를 호출하지 않아도 Default 생성자가 자동으로 생성된다.


Eclipse 실행해 보기


1. Workspace

Workspace는 계정 디렉토리 안에 생성하여 보안을 도모하는 것이 권장사항.


2. 환경설정

Windows - preferences - java - installed JREs 에서 jdk1.8.0_101로 설정.


Windows - preferences - General - Workspace 에서 인코딩을 UTF-8로 설정


3. 프로젝트 생성하기


New Java Project를 생성.


New Package 생성. com.javalesson.ch01helloworld

왜 이렇게 만들까? 패키지는 왜 만들어야 하는가? 

domain을 구매해서 작성 한다는 가정 하에 com이라고 명명.(domain은 전세계에서 고유해야한다.)

패키지명.클래스명은 고유해야한다. 배포시 중복을 일으키면 문제가 발생한다.

패키지를 만듦으로써 경로를 지정 할 수 있다.

패지키명.클래스명은 클래스를 고유하게 만들어주는 경로이다.

패키지 내부에서는 동일한 이름의 클래스가 존재할 수 없다.


패키지명은 왜 대문자를 권장하지 않는가?

패키지명과 클래스명을 구분지어주기 위해서.


New Class 생성. HelloWorld (클래스 이름은 대문자로 시작!)

package com.javalesson.ch01helloworld;


//import static java.lang.*; //The import java.lang is never used

                                  //class에 이미 java.lang이 포함되어 있기 때문에 import 할 필요가 없다.


public class HelloWorld {//public => java문서의 주인 public은 생략이 가능하다.

         //모든 class는 extends Object가 생략되어 있다. = java.lang.Object가 Superclass이다.

public static void main(String[] args){

//jvm을 호출 == java명령어를 실행가능 (main( )이 없으면 java를 실행할 수 없다.)

//1thread를 가진다 == 1의 실행단위를 가진다.

String hello = "안녕하세요";    //선언
System.out.println(hello);        //동작

//java Helloworld를 실행하면 "안녕하세요"가 console 창에 출력

}//main end

}//class end


class A{ } //The public type A must be defined in its own file : 클래스 A를 public으로 설정하려 할때 생기는 오류

             //클래스 A를 public으로 설정하려면 java문서의 주인이어야 한다. = 파일명과 같이아야 한다.


새로운 패키지 생성 com.javalesson.ch02datatype

새로운 클래스 생성 L01Variable.java

package com.javalesson.ch02datatype;

public class L01Variable {
    public static void main(String[] args){
        int a = 0;//변수 a,dataType int(정수) Integer
        String b = "";//변수 b,dataType String(문자열)
        //a = "안녕하세요";
        //b = 0;
        //Type mismatch: cannot convert from String to int
        //데이터타입과 다른 값을 대입할 수 없다.
        a = 10; //a의 값은 항상 변할 수 있다. -> 그래서 변수다.
        System.out.println(a);
        b = "안녕하세요. ";
        b += "자바강의입니다."; //b = b + "자바강의입니다.";
        //값을 대입하는 것 -> 초기화
        System.out.println(b);
    }//main end
}//class end

java_lesson 

  |--src  -> 프로그래머의 영역(보안 필요) 프로그램언어 -> 읽고 쓴다.

    |--com.javalesson

      |--ch01helloworld

      |--ch02datatype

         |--L01Variable.java  -> 컴파일 -> L01Varibale.class

  |--bin  -> 프로그램영역 (컴퓨터의 영역)   -  보이지 않지만 존재 하는 영역

    |--com.javalesson

      |--ch01helloworld

      |--ch02datatype

         |--L01Variable.class  -> App배포. 보안


ch02에서 새로운 클래스 생성 L02DataType.java

package com.javalesson.ch02datatype;

public class L02DataType {
    public static void main(String[] args) {
        System.out.println("1+1="+(1+1));//정수 우선순위의 문제
        System.out.println("\"일\"+\"일\"="+("일"+"일"));//문자는 ''
        //문자열 + 문자열 = 문자열
        System.out.println("\'1\'+\"1\"="+'1'+"1");//문자열은 ""
        //문자 + 문자열 = 문자열
        System.out.println("5+\"오\"="+(5+"오"));
        //정수 + 문자열 = 문자열
        System.out.println("1.2+1.3="+(1.2+1.3));//실수
        System.out.println("5*10="+(5*10));
        System.out.println("6/2="+(6/2));
        System.out.println("5%3="+5%3);
    }//main end
}//class end
 


ch02에서 새로운 클래스 생성 L03Number.java

package com.javalesson.ch02datatype;

public class L03Number {
    public static void main(String[] args) {
        /** <-HTML 문서 작성 주석
         * 사용설명서 제작 (Web에서 동작)
         * */
        /* <-- 여러줄 주석
         * 정수란
         * 숫자 중에서 소수점이 없는 것, 0과 마이너스를 포함하는 것
         *
         * 정수 자료형(데이터타입)의 종류
         * byte, short, int(*), long
         */
        byte a = 127; //1byte == 8bit
        //1bit == 0 or 1 ( 전기가 들어왔거나 들어오지 않았거나 )
        //ibyte => 총 경우의 수 2^8;
        //2^8 = 256;
        //-128 ~ a ~ 127 => 0이 포함
        System.out.println(Byte.MAX_VALUE);
        System.out.println(Byte.MIN_VALUE);
        short b; //2byte == 16bit =>2^16
        //정수 데이터 타입의 범위 계산식 -2^(n-1) ~ ((2^(n-1))-1)
        System.out.println(Short.MAX_VALUE);//wrapper CLASS가 가지는 상수 MAX_VALUE
        System.out.println(Short.MIN_VALUE);


        int c;
        System.
out.println(Integer.MAX_VALUE);
        System.
out.println(Integer.MIN_VALUE);
       
        long d;

        d=9223372036854775807L;

        System.out.println(Long.MAX_VALUE);
        System.
out.println(Long.MIN_VALUE);
        //기본데이터 타입의 wrapper class는 대체로 앞에 대문자만 붙이면 된다.


        //기본데이터 타입이 나온 이유??
        //정수 데이터 타입 중에 int가 특별한 이유 -> int를 많이 사용하는 이유

        //자바에서 기본적으로 지원하는 데이터타입이 int이기 때문
        //long 데이터 타입에 L을 붙이는 이유

        //자바가 기본적으로 지원하는 데이터타입이 int 이기 때문에 int를 초과하는 값을 long으로 입력하면

        //수치 뒤에 L을 붙여 주어 long형임을 명시해 주어야 한다.
       
        //fload double

        float f = 3.14f;
              f = 3.14F;
              f = (float)3.14; //명시적, 선언적 형변환
        double e = 3.14;
        //실수의 기본 데이터 타입중에 자바가 지원하는 것??
        System.out.println("Float.MAX_VALUE="+Float.MAX_VALUE);
        System.out.println("Float.MIN_VALUE="+Float.MIN_VALUE);
        System.
out.println(Double.MAX_VALUE);
        System.
out.println(Double.MIN_VALUE);
        //4.9E-324에서 E는 무엇일까?  E-N => 10의 N승
        //float, double이 차지하는 메모리 크기 4Byte, 8Byte
        //실수 계산법 -> 컴퓨터가 실수를 계산하는 방법이 따로 있다.
        //float -> 소수점이 둥둥 떠있다. ->부동(浮動) 소수점=>E와 연관
        //정수를 가장 앞에 표시 하고 소수점을 표시 하면 계산 하는 방법이 가장 빠른 이유

        관련 글 링크

    }//main end
}//class end

tip. package 보기 설정하는 방법

     Package Explorer에서 PackagePresentation -> Hierarchical로 설정


     syso -> ctrl+space -> System.out.println();으로 자동완성 시킬 수 있다.


'JAVA > 기본다지기' 카테고리의 다른 글

JAVA 5일차 필기  (1) 2016.08.05
JAVA 4일차 심화  (0) 2016.08.04
JAVA 4일차 필기  (0) 2016.08.04
JAVA 3일차 필기  (0) 2016.08.03
JAVA 1일차 필기  (0) 2016.08.01