자바는 씨언어 기반으로 만들어진 언어
자바의특징
1. 객체지향 언어
2. 플랫폼 독립적
3. 멀티스레드 지원
4. 간단한 코드
5. 뛰어난 보안성
6. 고성능
객체= 여러가지 데이터 뭉치. 구조체보다 큰 개념
플랫폼이 종속적인 것은 묶여있는것, 설치 프로그램 같은거
즉, 독립적이면 어디서든 돌아가는 것.
멀티태스킹이 가능하다.
C언어에 비해 간단하다.
동적할당 같은거 그냥 자동으로 할 수 있음.
자바는 컴파일 언어 / 문법으로 권한 설정할 수 있음
웹이 본격적으로 커지기 시작할 때 많이 사용된 언어
특히 우리나라에서 정말 많이 씀
안드로이드, 웹, 마인크래프트 같은거 ㅋㅋ 만드는데 쓰인언어
절차지향 / 객체지향
1. 절차지향 프로그래밍 - 대표적으로 C 언어.
순서가 중요한 것들. 위에서 아래로!
- 예 : 자동차를 만들 때 전체를 하나의 몸체로 만든다
- 단점 : 한 부분이 고장나면 전체가 동작하지 않는다
유지보수에 어려움이 있다. 확장하기가 어려움, 순서대로 해결해서 만든것이기때문
개발 기간이 오래 걸리고 비용이 많이 든다
협업이 어렵다
- 장점 : 섬세한 코딩이 가능하다
메모리 사용이 적다 . 직관적임
2. 객체지향 프로그래밍
- 예 : 자동차를 만들 때, 부품별로 미리 만들어 두고, 나중에 한번에 조립하는 형태
- 장점 : 한 부분이 고장나도 다른 부분 동작 가능
유지 보수가 쉬움. 문제가 생겨도 생긴 부분만 확인하면된다.
개발기간이 짧고 비용도 적게 든다
협업이 가능
- 단점 : 메모리의 사용이 좀 더 많음
불필요한 부분까지 프로그램에 포함된다. 교집합이 생길 수도 있음 중복데이터!->섬세하지못함
대규모의 프로그램에 적합
자바 컴파일러를 실행해야 자바 프로그램을 실행할 수 있음.
javac.exe ==>>영어문법을 컴퓨터가 알아들을 수 있게 번역
이걸 매번 실행하기는 너무 힘들기 때문에 환경변수를 해줘야함
개발환경 설정
1. JDK 설치 (java.sun.com)
- 환경변수 설정 (집에가서 하기!)
내 컴퓨터 우클릭-> 속성-> 고급시스템 설정-> 고급탭-> 환경변수 설정
-> 시스템 변수에 추가-> 변수이름 JAVA_HOM,
변수 값 JDK 가 설치된 디렉토리 입력(jdk1.8.0폴더까지만)
-> 시스템 변수 안에 Path (더블클릭) 에 -> %JAVA_HOME%\bin 추가
2. 개발도구 eclipse 설치 (eclipse.org)
이클립스실행하기~
글자크기 설정 컨트롤쉬프트 키패드 + -
아니면 그냥 컨트롤 + -
대소문자 철저히 구분해야함
파일기본 저장물들은 src 폴더에 저장되고 클래스로 만들어주면 된다
주석문과 식별자
주석문(Comment) :
주석은 프로그램의 실행에는 전혀 영향을 미치지 않습니다
코드를 입력한 후 그 코드를 이해하기 쉽도록 첨언하는 기능입니다
코드에 주석을 달아 프로그램을 수정하거나 변경할 때 시간과 노력을 절감할 수 있습니다.
주석의 종류
한줄 주석(//) : 주석내용이 한줄 일때 사용. // 다음부터 그 줄의 끝까지의 내용이 주석으로 간주됨
여러 줄 주석(/* */) : 여러줄의 주석이 필요할 때 사용.
document 생성용 주석 (/** */) : API 문서 생성용 주석
세미콜론(;) , 블록({}) , 공백(whitespace)
: 논리적인 한 문장이 끝날 때 반드시 세미콜론을 붙인다.
블록은 중괄호로 묶은 부분을 말하며, 복합문을 구성하는 요소입니다
즉, 종속된 문장이 다수 개일때, '{' 로 시작하고 '}' 로 닫는다
공백은 빈칸, 탭, 빈 줄 등이 있으며 이런 공백은 소스코드를 보기 좋게 하고 알아보기 쉽게 하는데 사용한다
즉, 프로그램을 구조화 형태로 표현하는데 유용하다.
출력함수
System.out.println("내용");
단축키 = sysout + Ctrl + space
실행 단축키 = Ctrl + F11
실행하기 전에 항상 저장하고 실행하는 습관들이기!
빠른 주석처리 = 주석처리하고 싶은 행에 Ctrl + /
----------
//이 파일은 주석을 연습하는 소스코드 파일입니다.
public class CommentsExample {
public static void main(String[] args) {
/*# main함수(메서드)는 프로그램 실행시 자동으로 동작하는
* 함수이며, 반드시 필요한 함수입니다.
# 자바코드를 해석하여 실행시키는 자바 가상 머신(JVM)은
프로그램 실행 시 자동으로 main 함수를 불러서 내부의 코드를
실행시킵니다.
메인함수가 제일먼저 불리는 함수이기때문에 이 함수를 꼭 사용해주기
*/
// sysout + Ctrl + space : 빠른 출력함수를 생성
// Ctrl + F11 : 실행 단축키
// Ctrl + / : 빠른 주석 처리
// System.out.println("반갑습니다~!");
System.out.println("안녕히 가세요~");
}
}
----------
2일차
변수(variable)
>> 변수는 프로그램이 실행되는 동안 어떤 값을 저장하기 위해 사용하는 공간
변수는 프로그램이 실행될 때마다 저장되어 있는 값이 바뀔 수 있다
변수에는 복수 개의 값을 저장할 수 없고, 하나의 값만 저장할 수 있다
변수에는 다양한 타입의 값을 저장할 수 없고, 한가지 타입의 값만 저장할 수 있다
자주사용하는 데이터를 공간에 넣어놓고 쓸 때 꺼내서 사용하기 위해 이름을 붙인것.
변수 선언방법
>> <데이터유형><변수식별자이름>;
같은 타입의 변수는 콤마(,) 를 사용하여 한꺼번에 선언할 수 있다
예 > int a,b,c
====까먹지말기====
sysout 컨트롤 스페이스 =출력
컨트롤 f11 =실행
컨트롤 / =빠른주석처리
자바는 퀵픽스를 해주는데 남발하지말기, 뭐가 잘못됬는지 알면 해도 상관없는데 아닐경우는 쓰지말기
=> 오류를 자바가 직접 잡아줌.
----------
public class VariableExample {
public static void main(String[] args) {
/*
# 변수(variable)
1. 변수는 데이터가 저장되는 공간에 이름을 붙여놓은 것입니다.
2. 변수는 생성할 때 변수에 저장되는 데이터의 크기와 모양에 따라
적당한 데이터 타입을 선언합니다.
ex) int : 4바이트의 정수, String : 문자열(문장)
3. 변수는 동일한 이름으로 중복 선언할 수 없습니다.
4. 변수 내부의 값은 언제든지 변경이 가능합니다.
*/
// 변수의 선언 : [자료형(데이터 타입)] [변수명];
// 중간에공백한칸있음 ****
int age;
// 변수의 초기화 : [변수명] = [값];
age = 30; // 대입-할당연산자
// 변수의 값 참조(사용)
System.out.println(age);
// 변수는 선언과 동시에 초기화 할 수 있습니다.
int score = 90;
// int score = 95; (x) 중복된 이름 안됨
// 데이터 타입을 붙였다는 것은 새롭게 변수를 선언하는 것을 의미합니다.
score = 95; // 데이터타입을 안붙이면 다시 초기화되는 것
// 변수는 값을 두개 이상 저장할 수 없습니다. (하나만 가능)
// 변수에는 다른 변수의 값도 저장이 가능합니다.
int doubleScore = score * 2;
System.out.println(doubleScore);
// 변수의 자료형에 맞지 않는 데이터는 저장이 불가능합니다.
// int count = "한번"; (x)
// int count = 23.5; (x)
// String str =100; (x)
// 변수는 자료형이 달라도 이름이 동일하다면 중복 선언 할 수 없습니다.
String name = "홍길동";
// int name = 1004; (x)
// 선언 및 초기화 하지 않은 변수는 사용이 불가능합니다.
// int result = doubleScore + num; (x) num을 선언한 적 없음.
int result;
// System.out.println(result); (x) 초기화가 필요합니다.
}
}
----------
식별자 (identifier)
>> 자바 언어에서 식별자는 클래스명, 변수명, 메서드 명 등 사용자가 만들어서 이용하는 고유한 이름을 식별자라고 한다
식별자 생성 규칙 (꼭 지켜야할 규칙)
1. 대 소문자를 구분하고 길이 제한은 없습니다
2. 문자와 숫자, 밑줄(_), 달러기호($)를 포함할 수 있다
3. 문자, 밑줄, 달러 기호로 시작할 수 있다
4. 숫자로는 시작할 수 없음
5. 공백을 포함할 수없음
6. 키워드(예약어)는 식별자로 사용할 수 없음.
----------
public class Identifier {
public static void main(String[] args) {
// 꼭 지켜야 할 규칙 (안 지킬 시 에러가 발생할 수 있습니다.)
// 1. 식별자의 이름은 중복을 허용하지 않습니다.
// 그리고 대/소문자를 철저하게 구분합니다.
int age = 35;
// int age = 40; (x)
int Age = 40;
System.out.println(age);
System.out.println(Age);
// 클래스나 함수도 마찬가지임
// 2. 식별자 이름은 숫자로만 지정하거나 숫자로 시작할 수 없습니다.
// int 700 = 365; (x)
// int 7number = 7; (x)
int number7 = 7;
int num7ber = 7;
// 3. 식별자 이름에는 공백을 포함할 수 없습니다.
// int my birth day = 19921013; (x)
int mybirthday = 19921013;
int myBirthDay = 19921013;
// 카멜케이스 표기법 : 공백이있는 곳에 대문자로 표현 / 자바에서 많이 쓰이는 표기법
// 개발자 룰임...
// _언더바이용은 스네이크케이스 표기법 일반적으로 C언어등에쓰임
// 4. 식별자 이름에 쓸 수 있는 특수 문자는 밑줄(_), 달러기호($) 뿐입니다.
// 하지만 사용을 권장하지는 않습니다. 이미쓰고 있는 곳이 있어서 안씀 !
String $hello_ = "안녕";
// 5. 키워드(예약어)는 식별자 이름으로 사용이 불가능합니다.
// 키워드 -> 이미 어떠한 기능을 내포하고 있는 특수 단어.
// String class = "클래스"; (x)
String className = "클래스";
// 6. 한글이나 한자 같은 식별자 이름도 지정이 가능합니다.
// 그러나 사용을 권장하지는 않습니다.
int 숫자 = 10;
String 名 = "홍길동";
System.out.println(숫자);
System.out.println(名);
// 두 언어 이상 섞이면 가독성이 좋지 않음. 기본적으로 JAVA 는 영어기반이기때문
// 협업과정이 어려움.
// UTF-8 파일이 없는 컴퓨터도 있음
}
}
----------
식별자 이름 규칙 (개발자들의 약속)
1. 클래스/인터페이스 이름 규칙
- 명사나 형용사를 서술적으로 연결하여 사용
- 첫글자는 대문자로 표기한다
- 연결된 단어의 첫글자도 대문자로 표기한다
ex> HelloWorld , MyCalculator
2. 변수 이름 규칙
- 명사적 의미를 갖게 만든다
- 첫글자는 소문자, 연결단어의 첫글자는 대문자로 표기한다
ex> customerAge , phoneNumber
3. 메서드 이름 규칙
- 동사적의미를 갖게 한다
- 첫글자는 소문자, 연결 단어의 첫글자는 대문자로 표기한다
- 메서드 이름 뒤에는 반드시 한 쌍의 괄호 "()"가 뒤따른다 (괄호없으면 변수임)
- 일반적으로 메서드 이름에는 "_" 를 사용하지 않는다 (변수도 마찬가지)
ex> writeView() , join()
4. 상수 이름 규칙
- 모든 문자는 대문자로 표기한다
- 단어와 단어 사이는 "_"로 연결한다 ( 다 대문자라 구분하기 힘들기때문)
ex> NUMBER_ONE, LOGIN_OK
정수형 데이터 타입
- 4가지 유형이 있음 (기본데이터타입)
- 정수형 , 실수형, 논리형, 문자형
정수형(Integral) - byte (1) / short(2) / int(4) / long(8)
실수형(Floating-Point) - float(4) / double(8)
논리형(Logical) - boolean(1) : T/F 참/거짓
문자형(Textual) - char(2) : 단어 한개!
** String 은 문자형처럼 쓰이지만 엄밀히 따지면 데이터가아님. 근데 문자열 은 스트링씀~
비트8개가 1바이트라서 범위가 2^7 / 2^15 이런가보당
아 정수는 맨앞비트가 1인지 0인지에 따라서 음수 양수로 나눠서 씀. MSB
그래서 정수는 -128~127 // 공식 ; -2^x-1 ~2^x-1 -1 (이 -1은 0때매)
short는 잘안쓰임
int 타입을 가장 많이씀
double 타입 더 많이씀
----------
public class integerExample {
public static void main(String[] args) {
/*
# 리터럴 : 변수에 저장되기 전의 상수값. 정수 리터럴의 기본 타입은 int.
int 보다 더 큰 범위의 수를 표현하기 위해서는 L을 붙여서 long 타입으로 인식시켜야 합니다.
*/
byte a = 127;
short b = 32767;
int c = 2147483647;
long d = 2147483648L;
}
}
----------
public class FloatExample {
public static void main(String[] args) {
// 실수 리터럴의 기본 데이터 타입은 double입니다.
// 그래서 float은 뒤에 F를 붙여줘야함.
float f1 = 7.12345F;
double d1 = 7.12345;
System.out.println(f1);
System.out.println(d1);
System.out.println("---------------------------");
float f2 = 1.234567891234F;
double d2 = 1.234567891234;
System.out.println(f2);
System.out.println(d2);
}
}
결과
7.12345
7.12345
---------------------------
1.2345679
1.234567891234
----------
public class BooleanExample {
public static void main(String[] args) {
boolean b1 = true;
boolean b2 = false;
// boolean b3 =True; (x) //자바에서는 소문자로 작성해야함
// boolean b4 = False; (x)
// boolean b5 = 0; (x) //자바에서는 c언어처럼 숫자로 표현안됨
// boolean b6 = "논리형 타입"; (x)
}
}
----------
public class TextualExample {
public static void main(String[] args) {
/*
# 단일 문자를 저장하는 데이터 타입 char
- 저장하고 싶은 문자를 홑따옴표('')에 담아 대입합니다.
*/
char c1 ='A'; // "" 로 감싸면 스트링으로 인식하기 때문에 절대안됨. 문자 여러개 안됨
System.out.println(c1);
char c2 = 65; // 아스키코드 A 문자표가 있어서 정수도 받음.단,128가지밖에 안됨
System.out.println(c2);
// 유니코드 문자표 = 0~ 65535 까지 존재. 전세계 모든언어 표현,
// 한글은 44032 부터 시작
// char은 유니코드 문자표를 기반으로 출력한다.
/*
# 문자열을 저장할 수 있는 데이터 타입 String
- 저장하고 싶은 문자열을 겹따옴표("")에 담아 대입합니다.
- String 은 기본데이터타입은 아니지만 자주 쓰이기 때문에
기본 데이터 타입처럼 사용합니다.(사실은 객체타입)
*/
String s1 = "my dream ";
String s2 = "is a programmer";
System.out.println(s1);
System.out.println(s2);
// 자바에서는 문자열의 덧셈 연산을 제공합니다.
// 연산결과로 문자열을 연결하여 결합한 형태가 도출됩니다.
System.out.println(s1 + s2 + "hahahaha");
// 문자열과 다른 데이터 타입간의 덧셈 연산
System.out.println("-----------------------");
System.out.println(100 + 100);
System.out.println("100" + "100");
System.out.println("100" + 100); // 문자열과 더하면 무조건 문자로 출력된다 (결과: 100100)
System.out.println(3.14 + "hi"); // 결과: 3.14hi
int month = 10;
int day = 13;
// 내 생일은 10월 13일 입니다.
System.out.println("내 생일은 " + month + "월 " + day + "일 입니다.");
// int 형과 문자열을 더해서 출력할 수 있음
}
}
----------
만든 프로젝트 가져가려면 파일- export 그다음 뽑고싶은거 체크하고 경로설정하기
그거 키려면 import: 이클립스 file -> import , 제너럴, Existing ~~ 누르고 select Archive file -> 압축파일 로드