
LTS 버전 > 5-7년 장기 지원 > jdk 8, 11, 17
주의사항
- JDK 8버전 까지는 JRE 통합설치
JDK 11 이후 JRE 추가설치
JRE는 코드를 실행시켜 줌
폴더에서 위의 메뉴에서
보기 > 파일확장명 채크


ecliplse 는 로컬설치 보다는 파일로 받아서 사용
- 이유 : 로컬로 하면 프로젝트마다 나눠서 작업 못함
- 파일로 쓰면 워크스페이스 지정해서 사용하면 편리함
- ecliplse는 분기별로 최신버전이 올라오지만 최신버전의 오류등의 내용을 찾기가 힘들다
intellij
- 유료 > 추천코드가 매우 잘되어있음 > 개발속도가 빨라짐
(무료는 1달)
클라우드 공부하기
- 서버를 운영하는데 있어서 필요
네트워크에 대한 지식 필요
리눅스 알아야함 디테일하게 ㄴㄴ 기본적인 환경 등
할거라면 강사님에게 물어보기
Eclipse IDE for Java Developers : 자바만
Eclipse IDE for Enterprise Java and Web Developers : 서버까지 가능
이클립스 최신버전 다운로드 누르면 화면이 바뀜 > 서버가 한 곳에 있지 않음 > select another
자바 설치는 oracle에 로그인하여 설치
사용중인 버전 : JDK-11.0.4
java 설정
파일을 가져왔는데 세팅값이 안맞으면 깨짐
JRE 설정
Java > installed JREs > standard VM > directory > jre 파일
ctrl + n > java project > jre1.8.0_361 로 변경 > 가장 밑에 module 채크 해제

프로젝트 삭제 시 채크 해야 완전 사라짐

class 생성 후 main method 생성
public class ClassName{
public static void main(String[] args) {}
}

bin = binner 의 약자
자바는 src에 있는 파일이 실행되는 것이 아님
실제 작동되는건 bin에 있는 class 파일이 실행되는 것임(JVM)
Project 옮기는 방법
프로젝트를 압축 -> WorkSpace 파일 새로 만들고 설정 ->
복사 or 잘라내기 -> File -> import -> General -> Existing Projects into Worksapce ->
( select root directory : 그냥 파일 )
( select archive file : 압축된 파일 )
-> Browse... 에서 선택 -> finish
-> 느낌표가 떠 있음 / 이유 : 라이브러리가 없음 (jre)
기본적으로 동일한 환경으로 셋팅을 해야함
적용안되면 f5 로 새로고침
들여쓰기 습관화 > 파이썬 배울때 좋음 > 파이썬은 들여쓰기로 구역을 나눈다. 자바는 {}
주석 : //
프로그램 코드 안에 설명을 작성할 때 사용합니다
프로그램 실행에 영향을 주지 않는다. \// 는 한줄 주석
여러 줄 주석 /* */ 이 안에 모든 내용이 주석처리
사용자 정의 명칭 : class, 변수명....
class명 작성 규칙
모든 메소드는 이름 뒤에 괄호() 가 있다.
다른 언어에서는 함수라고 한다.
코드 마지막에는 세미콜론(;) 기호를 작성하세요.
실행단축키 : ctrl + f11
java에서는 메소드
main method
public static void main(String[] args) {}
System.out.println("쌍따옴표 안에 출력할 내용을 작성하세요");

print()
System.out.println("날씨가 많이 습하네");
System.out.println("건강관리 잘 해라");
System.out.print("print()는 라인변경 X");
System.out.println("ㅇㅋ?");
// print()내 연산
System.out.println(12+34);

문자들의 조합 : " " + " "
- 문자열 : 문자들의 조합. " " 로 작성
- 문자열을 더하면 이어지게 된다.
// 문자열 연결
System.out.println("abc" + "def");
// 숫자 연산 후 문자열 열결
System.out.println(1+2+"data");
// 문자열 뒤에 숫자 연산 시 문자열 취급 -> 이어짐
System.out.println("data" + 1+2);
// 문자열 뒤에서 수식을 사용하고 싶다면 () 로 묶어서 사용
System.out.println("data" + (1+2));

printf() : 문자열안에 서식지정자를 사용해서 외부의 값을 출력
정수 : %d
System.out.printf("정수 : %d\n",10);
실수 : %f
- 실수는 출력시 디폴트 6자리까지다.
- 실수값을 출력 할 때 서식지정자를 '%. 숫자f' 로 작성하면, 해당 숫자까지의 소수점자리를 술력
System.out.printf("실수 : %f\n",10.13);
System.out.printf("%.2f\n",12.1234);

문자 : %c
- 문자 하나의 데이터를 표시할 때에는 ' '로 작성
- 자바는 문자 1개가 기본 2byte 때문에 한글 적용 가능
- 1byte 기호 알파벳 숫자 1개
System.out.printf("문자 : %c\n", 'A');
// 한글도 적용 됨
System.out.printf("문자 : %c\n", '가');

문자열 : %s
- 여러개 사용 가능, 구분은 쉼표(,) 로 한다.
System.out.printf("문자열 : %s, %s\n", "안녕 나는 문자열이야", "안녕");

서식지정자 안에 '%숫자d'를 하면,
출력시 해당 위치에 '숫자'만큼의 공간을 확보 하고 출력
- : 오른쪽 맞춤(디폴트)
- : 왼쪽 맞춤
System.out.printf("공간확보 :%5d\n",1);
System.out.printf("공간확보 :%5d\n",12);
System.out.printf("공간확보 :%-5d#\n",123);

실수값을 출력 할 때 서식지정자를 ' %. 숫자f '로 작성하면,
해당 '숫자'까지의 소수점자리를 술력
// 공간확보와 소수점자리수 같이 사용 가능
System.out.printf("%.2f\n",12.1234);
System.out.printf("%7.2f\n",12.1234);

상수 : 코드 안의 고정된 데이터
- 값 변경 불가
자료형
- 데이터를 저장하는 공간을 생성할 때 사용하는
기본자료형
- 이름과 값이 하나
- 데이터 공간의 크기가 고정
| 1byte | 2byte | 4byte | 8byte | |
|---|---|---|---|---|
| 논리형 | boolean | |||
| 문자형 | char | |||
| 숫자형 | byte | short | int(기본) | long |
| 실수형 | float | double(기본) |
참조자료형
변수
- 자료형을 사용해서 만들어 쓰는 데이터
형식 : 자료형 변수명;
Ex) int a;
빨간줄 : 에러
노란줄 : 주의사항 > 실행은 돌아감
저장소 하나를 만들어 숫자형태의 공간 확보
// 메모리 어딘가에 고정되기 때문에 다시 쓸 수 없음
System.out.println(10);
변수 선언(생성)
- 이상태에서는 cpu가 연산할 수 없는 데이터가 들어가있음
int a;
쓰레기 데이터 >> 초기화를 해야함
System.out.println("a : " +a); Error
모든 변수는 초기화 후에 사용
초기화
// 모든 변수는 기본적으로 1개의 값만 가질 수 있다.
a = 10;
System.out.println("a : " +a);
a = 20;
System.out.println("a : " +a);

변수생성과 초기화를 바로 가능
int ia = 11;
System.out.println("ia : "+ia);
// 128이상 쓸 수 없음 -> 에러 뜸
// 이유 : 1byte = 8bit -> 2^8 = 256
// -128 ~ 127 , 0포함
byte ba = 127;
System.out.println("ba : "+ba);
short sa = 31111;
System.out.println("sa : " + sa);
long la = 2147483648L; //~까지
//long la = 2147483648; // 오류
System.out.println("la : " + la);
// int 4byte 까지만 메모리에 가능
// 8 넘으면 메모리에 올라갈 수 없어서 오류
// long타입의 리터럴을 사용할 때에는 데이터 뒤에 L을 작성

실수
double dd = 1.2;
System.out.println("dd : "+ dd);
float ff = 1.2F;
System.out.println("ff : "+ ff);
// float 타입 리터럴을 사용할 때에는 'F'를 작성

한 글자만 가능
char ch = 'a';
System.out.println("ch : " + ch);
ch = '가';
System.out.println("ch : " + ch);

boolean
- true(참) / false(거짓) 의 값만 사용 가능
boolean judge = true;
System.out.println("judge : " + judge);
judge = false;
System.out.println("judge : " + judge);

문자열 : String
- 문자열을 기본자료형처럼 다루게 해주는 class
// 참조이기 때문에 변수가 값을 갖는 것이 아니라 위치정보를 가짐
String stnA = "Hi";
System.out.println("stnA : "+stnA);
stnA = "데이터 수정";
System.out.println(stnA);
String textA = "new";
String textB = "java";
String title = textA + " " +textB;
System.out.println("title : " + title);
// 문자 수 확인 : .length()
System.out.println("title 문자수 : "+title.length());

문제
아래의 내용을 변수에 저장해서 출력하는 코드를 작성하세요
- String : 이름, 주소
- int : 생일(년, 월, 일), 나이
- char : 성별(m,f)
- double : 키
Ex) --- 고 객 정 보 ---
이름 : test
주소 : 서울시 강남구
생일 : 2003년 8월 24일
나이 : 20세
성별 : m
* 키 : 123.4
String name, ad;
int y, m, d, age;
char s;
double h;
name = "윤범헌";
ad = "남양주시 화도읍";
y = 1996;
m = 6;
d = 4;
age = 27;
s = 'm';
h = 123.4;
System.out.println("--- 고 객 정 보 ---");
System.out.printf("이름 : %s\n",name);
System.out.printf("주소 : %s\n",ad);
System.out.printf("생일 : %d년 %d월 %d일\n",y,m,d);
System.out.printf("나이 : %d세\n",age);
System.out.printf("키 : %.1f cm",h);

산술연산자
int ia = 10, ib = 3;
System.out.println("ia : " + ia + " - ib : "+ ib);
System.out.println();
System.out.println(ia + " + " + ib+" = "+(ia+ib));
System.out.println(ia + " - " + ib+" = "+(ia-ib));
System.out.println(ia + " * " + ib+" = "+(ia*ib));
System.out.println(ia + " / " + ib+" = "+(ia/ib));
System.out.println(ia + " % " + ib+" = "+(ia%ib));

복합 대입 연산자
int ic = 10;
System.out.println("ic : " +ic);
System.out.println();
ic +=5;
System.out.println("ic : " +ic);
System.out.println();
// 연산 후에 나온 결과를 왼쪽에 대입하기 때문에,
// 왼쪽에는 항상 변수가 있어야 한다.
5 += ic; << Error
int id = 2;
ic *= id;
System.out.println("ic : "+ ic );

비교 연산자
조건식에 따른 결과는 true, false > boolean 값임
int ie = 10, ig = 7;
System.out.println("ie : "+ie + " - ig : "+ ig);
System.out.println();
System.out.println("ie >= ig : " + (ie>=ig));
System.out.println("ie <= ig : " + (ie<=ig));
System.out.println("ie == ig : " + (ie==ig));
System.out.println("ie != ig : " + (ie!=ig));

논리 연산자
&& (and 연산)
조건식_a && 조건식_b
: 조건식_a, 조건식_b 둘다 참이면 true
2개뿐만 아니라 3개 이상도 가능
|| (or 연산)
조건식_a || 조건식_b
조건식_a, 조건식_b 둘중 하나라도 참이면 true
! (not 연산)
!(조건식)
: 참이면 거짓으로, 거짓이면 참으로 변경
: true -> false / false -> true
int na = 10, nb = 7;
System.out.println("na : "+na + " - nb : "+ nb);
System.out.println();
boolean res;
res = na > 9 && nb >9;
System.out.println("res = na > 9 && nb > 9 : "+ res);
res = na > 9 || nb >9;
System.out.println("res = na > 9 || nb > 9 : "+ res);
res = !(na>9);
System.out.println("res = !(na>9) : "+ res);

증감 연산자
int data = 5;
System.out.println("data : " + data);
int res = 0;
res = ++ data;
System.out.println("data : "+ data + " - res : "+ res);
res = data++; // 대입이 먼저 -> data +1
System.out.println("data : "+ data + " - res : "+ res);
res = -- data;
System.out.println("data : "+ data + " - res : "+ res);
res = data--; // 대입이 먼저 -> data -1
System.out.println("data : "+ data + " - res : "+ res);

int a = 5;
++a ;
System.out.println("a : " + a);
int b=5;
int z = ++b * b++;
System.out.println("b : " + b + " - z : " + z);

컴파일 : 자바 소스코드르 바이트코드화 시킴
줄단위로 순차적으로 진행 > 인터프리터 방식
System.out.println();
int c = 5;
boolean r = (++c > 6) && (++c > 6);
System.out.println(r);
// 논리연산자는 앞의 조건이 중요 && 에서 앞이 false 면 뒤의 조건식은 계산하지 않음
int d = 5;
boolean r1 = (++d > 5) || (++d > 6);
System.out.println(r1);
// || 앞의 조건식이 참이므로 뒤의 조건식은 계산하지 않음

System.out.println();
int e = 7;
double f = e>>1;
System.out.println("f : "+f);
// double 로 바꿔도 안됨 >> int만 받음

int 와 int를 연산하면 int 타입
그렇기 때문에 double 타입에서 2.5가 아니라 0이 나옴
자동 형변환
- 자료형이 큰쪽에 맞춰 연산을 한다.
Ex) int < double / long < double / int < float- 결과를 실수로 출력하고 싶으면 계산식에 실수를 넣어라
Ex) int와 double를(서로 다른 자료형) 연산하면 내부적으로 타입을 맞춤
int va =5, vb = 2;
System.out.println("va : " + va + " - vb : " + vb);
double div;
div = va/vb;
System.out.println("div : " + div);
double da = 2;
div = va/da;
System.out.println("div : " + div);

주의사항
실수 데이터(double)를 정수 변수(int)에 넘길 수 없음
int ir = va / da; <- Error
강제 형변환
- 이 수식에서만 일시적으로 자료형을 바꿈
- 사용하려는 데이터 왼쪽에 '(변환자료형)' 을 써주면,
실행시에 ()안의 자료형으로 형변환되어 실행된다.
int va =5, vb = 2;
div = (double)va / vb;
System.out.println("div : " + div);

고객님~ 키 123.4 풉키풉키🤭