Data Type

Primitive Type vs Reference Type

8 Primitive Data Type
https://en.wikibooks.org/wiki/Java_Programming/Primitive_Types

boolean A binary value of either true or false
byte 8 bit signed value, values from -128 to 127
short 16 bit signed value, values from -32.768 to 32.767
char 16 bit Unicode character
int 32 bit signed value, values from -2.147.483.648 to 2.147.483.647
long 64 bit signed value, values from -9.223.372.036.854.775.808 to 9.223.372.036.854.775.808
float 32 bit floating point value
double 64 bit floating point value

Object Types

Data type Description
Boolean A binary value of either true or false
Byte 8 bit signed value, values from -128 to 127
Short 16 bit signed value, values from -32.768 to 32.767
Character 16 bit Unicode character
Integer 32 bit signed value, values from -2.147.483.648 to 2.147.483.647
Long 64 bit signed value, values from -9.223.372.036.854.775.808 to 9.223.372.036.854.775.808
Float 32 bit floating point value
Double 64 bit floating point value
String N byte Unicode string of textual data. Immutable

Reference Types

class A class is also a data type – a non primitive reference data type
interface An interface is a reference type in Java, it is similar to class, it is a collection of abstract methods.
array An array’s type is written as type[] , where type is the data type of the contained elements; arrays are objects, are dynamically created, and may be assigned to variables of type Object
enum An enum type is a special data type that enables for a variable to be a set of predefined constants.

 

Variables

instance variable vs static variable vs local variable

public class Hello {

private String name; // instance variable
private static int value = 10; // static variable

public int sum(int n, int m) {

int result = n + m; // result : local variable
return result;

}

public static void main(String args[]) {

Hello h = new Hello();
h.name = “Hello”;
System.out.println(h.name);
System.out.println(Hello.value);

}

}

Naming Conventions

http://www.oracle.com/technetwork/java/codeconventions-135099.html

Identifier Type

Rules for Naming

Examples


Packages

The prefix of a unique package name is always written in all-lowercase ASCII letters and should be one of the top-level domain names, currently com, edu, gov, mil, net, org, or one of the English two-letter codes identifying countries as specified in ISO Standard 3166, 1981.Subsequent components of the package name vary according to an organization’s own internal naming conventions. Such conventions might specify that certain directory name components be division, department, project, machine, or login names.
com.sun.engcom.apple.quicktime.v2

edu.cmu.cs.bovik.cheese


Classes

Class names should be nouns, in mixed case with the first letter of each internal word capitalized. Try to keep your class names simple and descriptive. Use whole words-avoid acronyms and abbreviations (unless the abbreviation is much more widely used than the long form, such as URL or HTML).

class Raster;
class ImageSprite;

Interfaces

Interface names should be capitalized like class names.

interface RasterDelegate;
interface Storing;

Methods

Methods should be verbs, in mixed case with the first letter lowercase, with the first letter of each internal word capitalized.

run();
runFast();
getBackground();

Variables

Except for variables, all instance, class, and class constants are in mixed case with a lowercase first letter. Internal words start with capital letters. Variable names should not start with underscore _ or dollar sign $ characters, even though both are allowed. Variable names should be short yet meaningful. The choice of a variable name should be mnemonic- that is, designed to indicate to the casual observer the intent of its use. One-character variable names should be avoided except for temporary “throwaway” variables. Common names for temporary variables are i, j, k, m, and n for integers; c, d, and e for characters.
int             i;
char            c;
float           myWidth;

Constants

The names of variables declared class constants and of ANSI constants should be all uppercase with words separated by underscores (“_”). (ANSI constants should be avoided, for ease of debugging.)

static final int MIN_WIDTH = 4;static final int MAX_WIDTH = 999;

static final int GET_THE_CPU = 1;

 

Eclipse Installer Error

Unfortunately the Java version needed to run Eclipse Installer couldn’t be found on your system. Java 1.8.0 (64 bit)
Please download and install a Java Runtime Environment(JRE) or a Java Development Kit (JDK)

1. 이클립스 설치 에러 발생하면 User의 이름이 한글로 되어 있는 것을 영문으로 변경
2. JRE/JDK1.8 (Window 64-bit)을 받아서 설치
https://www.oracle.com/java/technologies/javase-jre8-downloads.html
3. 오라클 JDK를 설치하면 아래 그림에서 보이듯이 환경변수 path 편집에서 C:\Program Files (x86)\Common Files\Oracle\Java\javapath가 있는데 이 부분을 삭제 (또는 %JAVA_HOME%\bin보다 아래로 재배치)
4. 이후 다시 Eclipse 2020-12 설치

Eclipse를 한글이 포함된 디렉토리에 설치 시 문제 발생, 이런 경우 한글명이 없는 디렉토리에(예시 C:\temp 안으로 eclipse-inst-jre-win64.exe를 이동후, 다시 설치 시작한다. 이 때 설치 디렉토리를 Program Files\eclipse) 바꿔서 시도한다.

그래도 Eclipse 설치가 안된다면,
https://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/2020-12/R/eclipse-java-2020-12-R-win32-x86_64.zip 
1. 이 파일을 다운로드 받아서, unzip하시고
2. eclipse-java-2020-12-R-win32-x86_64안에 eclipse 폴더 전체를 copy해서 C:\Program Files 안에 paste해주시고
3. C:\Program Files\eclipse\eclipse.exe 의 shortcut를 desktop에 만들어준다.

Lab0

JDK + Eclipse IDE + HelloJava

1.자바 OpenJDK(Java Development Kit) 15.0.2 다운로드 설치

https://jdk.java.net/15/

1) 환경변수 설정 JAVA_HOME 추가
컴퓨터 – 오른쪽 버튼 – 속성 – 고급시스템 설정 – 환경변수
시스템변수 – 새로 만들기
변수이름 : JAVA_HOME
변수값 : C:\Program Files\Java\jdk-15.0.2 (JDK설치폴더명)
2) 환경변수 설정 PATH 설정
시스템변수 – Path 변수값 수정
세미콜론(;) 추가 후 %JAVA_HOME%\bin 추가
3) 설치된 자바 버전 확인
cmd 창 열고, 설치된 자바 버전 확인 java -version

2.Eclipse IDE 2020-12 다운로드 설치
https://www.eclipse.org/downloads/

1)인스톨러에서 Eclipse IDE for Java Developers 선택해서 설치
최초 실행시 workspace 경로 설정 (C:\Users\park\eclipse-workspace\java21)

3.Hello Java 작성
1) 이클립스 File – New – Java Project – Project name: Lab0 & Use an execution environment JRE JavaSE-15 & Finish 버튼 – Create module-info.java “Don’t Create” 버튼 => Lab0 프로젝트 생성
2) Lab0 프로젝트 우클릭 – New – Class – Package에는 아무것도 적지말고 & Name: Hello & public static void main(String[] args) 체크 & Inherited abstract methods 언체크 – Finish 버튼 => Hello 클래스 파일 생성
3) Hello.java의 main 메소드 안에 System.out.println(“Hello World”);
4) Hello 프로젝트 우클릭 – Run as – Java Application
5) 이클립스 Console 창에서 Hello World 출력 확인

4.Lab0 프로젝트 안에 보고서 작성해서 넣고, Lab0 디렉토리 전체를 Lab0_분반_학번_이름.zip으로 만들어서 e-learning으로 제출

Command-Line Arguments (C vs Java)


/* command line arguments in C */
void main(int argc, char** argv)
{
    char name[128]; 
    int age = 0; 
    if (argc >= 2) { 
        strcpy(name, argv[1]); 
        age = atoi(argv[2]); 
        printf("%s, name = %s, age = %d\n", argv[0], name, age); 
    } 
}

~>person.exe Park 20

argv[0] = “person.exe”

argv[1] = “Park”

argv[2] = “20”

 


// command line arguments in Java
public class Person {
    public static void main(String[] args) {
        String name = ""; 
        int age = 0; 
        if (args.length >= 2) { 
            name = args[0]; 
            age = Integer.parseInt(args[1]); 
            System.out.printf("name = %s, age = %d\n", name, age); 
        } 
    }
}

~>java Person Park 30

args[0] = “Park”

args[1] = “30”

 

Homework Grading Policy

숙제 Grading 기준

  • 보고서, 소스코드, 프로젝트 파일 폴더 전체가 없음 -7
  • 소스코드 컴파일 에러 -7
  • 코드 실행 에러 및 잘못된 결과 -1
  • 소스 코드에 주석 없음 -1
  • Your Code 없음 -1
  • 소스코드 첫부분에 Lab이름, 과목명, 분반, 날짜, 본인이름 적을것
  • 보고서표지에 Lab번호, 분반번호, 제출일, 학번, 이름을 적을것
  • 보고서 제출안함 -3
  • 보고서에 내용을 작성하지 않고 소스코드 사진캡쳐해서 붙여넣기 -3
  • 보고서에 소스코드 내용을 작성하지 않고 다른 것 적기 -3
  • 보고서에 Your Code 설명 없음 -1
  • 보고서에 실행결과창 없음 -1
  • 보고서파일포멧 (hwp/doc(x)/pdf 아닐시) -10