※ 개인적인 개발 수업 정리글입니다. 꾸준히 정리할 예정이고 틀린 부분이 있다면 언제든지 댓글 환영입니다.
Eclipse IDE
<복기>
https://www.eclipse.org/downloads/packages/release/2020-12/r/eclipse-ide-java-developers
Eclipse IDE for Java Developers 2020.12 Windows로 다운받음
개오래걸림; 왜 EE보다 오래걸림..?
New - Java Project : 01Day 생성
- Build Path - Configure Buil Path - Library - Execution environment : JavaSE-1.8(jre)
- src - class HelloTest.java / ▣ public static void main함수 체크 후 Finish
public class HelloTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("hello");
}
}
- ctrl+F11
- Console : hello
원래는
①직접 컴파일을 해야함. 영어로 만든 코드를 바이트코드인 기계어(.class)로 만드는 것도 직접 해줘야함.
영어로 만든 코드가 번역이 되어서 (.class)파일이 만들어지고 문법적 오류(=컴파일 오류)가 없어야 실행준비완료
② class파일로 실제로 실행. 컴파일로 할땐 javac명령어로 class?만들고, java명령어로 실행
=>①,②를 이클립스의 ctrl+f11가 한꺼번에 해줌.
최종적으로는 class 파일로 실행을 해주는거임. (.java)로만하는게 아님
물론 오류가 날 수는 있음, 논리오류가 있으면 에러가 남
ex) 10/0 class의 문법오류는 어디가 오류라고 보여주지만, 논리오류는 찾기가 어려움
플랫폼에 [독립적으로 컴파일된 바이트코드]를 실행 [ ] 가 .class파일
★class 누른채로 ctrl+f11눌러도 결과값이 뜨는데
프로젝트의 시작점이 main이기 때문에
main의 1라인부터 시작해줌
★원래 1개의 프로젝트 안에는 main이 하나여야함.
교욱 중엔 1개의 프로젝트 안에 여러개 클래스 만들때마다 다 main으로 해서 공부하는거임
ㄴ만약 실제로 중복으로 넣고 실행해버리면 마지막 main 클래스가 실행됨
★클래스이름=식별자
<예약어를 단축키로 추가>
window -> preference -> Java -> Editor -> Templates ->New
sysp ====> System.out.print(${word_selection}${});${cursor}
( )? ====> ${word_selection}${} : ;${cursor}
System.out.println( ); 단축키 : syso + ctrl키 + space키
println : 문자열 출력 후 개행(줄바꿈) // 90% ln으로 사용
print : 문자열 출력 후 개행X, 옆에 나열만
printf : 문자열 출력 후 개행X, 서식에 맞춰서 순서대로 나열 // 잘 안쓰지만 있다고 알고만 있기
문자 표시 방법 : ' ' 작은 따옴표
문자열 표시 방법 : " " 큰 따옴표
문자랑 문자열은 완전 다른거니까 따옴표 잘 붙여야함
[ (printf 쓸 때) 출력타입 ]
%s : 문자열 String
%d : 정수 digit? decimal?
%f : 소수 float 소수 / 3.3 은
%c = 문자 char ' '
%b = blooean 참이냐 거짓이냐
★문자열 안에, 역슬래쉬n을 하면 강제개행이 된다는데... \가 역슬래쉬
= \n
★강제개행 외우기 어려우면 new line의 약자라고 생각하기
2장. 식별자와 데이터형
■ class 이름이나, main 같은 함수이름 => 식별자
ㄴ대소문자 구분, 반드시 영문자,
ㄴ예약어도 안됨. class 이름으로 'class' 이런거 사용 안됨
ㄴ _ 와 $ 특수문자만 가능. 그외 특수문자 불가능
=> 식별자 이름 오류나면 컴파일에서 알려줌
사용자 지정 식별자: class이름 함수이름 변수이름
ㄴ클래스 이름 : 첫글자는 대문자로 습관들이기. 오류는 안나지만
낙타 목처럼 내려온다고 Camel표기법
ㄴ변수와 메서드(=함수) : 첫글자는 소문자로 표현.
ㄴ상수 : 모두 대문자
시스템 정의 식별자: 예약어
■ 오라클은 3가지 문자숫자날짜 정도...
자바는 [기본 데이터형]이 5가지
■ 자바 데이터형 2가지 ( 기본데이터형 or 참조데이터형 )
자바 기본데이터형 총8가지 byte,short,int,long / float,double / boolean / char
-이거 8개 제외하곤 다 참조라고 보면됨
-primitive data type : PDT
- 숫자형 byte,short,int,long / float,double
- 정수형 : byte(1), short(2), int(4), long(8바이트) *기본은 int임!
바이트를 담을 수 있는 용량이 다름,
*전부 8바이트한다고 무조건 좋은게 아님... 용량이 커짐
- 실수형(소수) : float, double *기본은 double임!
- 정수형 : byte(1), short(2), int(4), long(8바이트) *기본은 int임!
- 논리형 : boolean true나 false만 나옴 ( 0, 1이 아님)
- 문자형 : char ' ' 작은 따옴표
- 참조데이터형 String, refVar ...
-실제값을 갖고 있는게 아니라, 실제값이 갖고 있는 곳의 주소를 표시
-reference data type : RDT
-위에 기본데이터 8개 제외하고, 클래스, 배열, 인터페이스 등등...
■ 기본데이터형
쌍땀표로 묶은건: " 문자열(String) "
작땀표로 묶은건: ' 문자 '
문자(chracter) : 'a' , 'b ', 'c' , '$'' , '#' , '@' 등과 같은 단일 기호
문자열(string) : "nice" , "!!!" , "hello" 등과 같은 두 개 이상의 문자 결합 구조
ㄴ차이점은 크게 2가지로 글자수의 제한과 내용물의 차이
char : 내용물이 1개의 문자로 제한
String : 그런 제한이 없이 문자를 담을 수 있음
<내용물의 차이>
char : 해당 변수 안의 값을 직접적으로 가지고 있고 해당 값이 있는 기본데이터형
String : 해당 변수 안의 값을 가지는 게 아니라, 그 값이 들어있는 위치의 좌표를 내용물로 가지는 참조데이터형
char a= 'a' 면 a라는 변수 안에는 a라는 값이 있지만
String abc='abc'는 abc라는 변수 안에는 'abc'가 아니라 'abc'라는 텍스트가 위치한 좌표 "xxxxxxx(임의)' 를 가짐
이 차이점에서 발생하는 것이 ==의 사용가능 여부
char 같은 경우는 값이 같다면 ==를 사용할 수 있지만
String은 내용이 같더라도 String 생성시마다 서로 다른 좌표가 생성되기에 ==를 사용하면 같지 않다는 결과가 나옴.
★★★이를 위한 해결책 : .equals( ) 를 이용하여 String의 내용물이 실제 같은지를 확인★★★
■ 참조 데이터형
-실제값을 갖고 있는게 아니라, 실제값이 갖고 있는 곳의 주소를 표시
ㄴSystem.out.println(new Date());
new date() 도 유틸리티임!!! 기존에 자바에 설치되어있고 이걸 컴퓨터에있는 시간을 끌어와주니까!
■ class 이름 바꾸는 방법 : 이름 바꾸면 빨간 밑줄 뜨고, 마우스 올렸을 때 Rename 뜸. 그거 눌러주면 파일명도 변경됨
■ 변수 : 숫자가 아니고, 데이터 저장에 사용됨. 기억공간이 생긴다는 뜻
■ ① 변수 선언 : 변수 이름 앞에 어떤 타입으로 형태를 줄건지 선언.
- 문법 : 데이터형 변수명;
ex) int num ; //숫자를 저장하는, 기본데이터형 변수 선연
변수+변수명
String name ; //문자열을 저장하는, 참조형 변수
ㄴ문자열을 참고할거다, 안에 데이터는 아직 없음=>이게 참조데이터형 선언
■ ② 변수 초기화 : 선언된 변수에 초기값을 넣어줌. '할당'한다고도 함.
멤버변수는, 기본값으로 자동초기화 되지만,
지역변수는, 변수 선언이 안되면 초기값을 넣어줄수 없음
int num은 변수 선언 하고 꼭 초기화 후에 사용해야함
sum은 a+b인 또다른 저장공간이 되는, 변수가 되는거임
근데 int sum= a+b;하면 선언&초기화까지 된거임
보통은 왼쪽->오른쪽으로 읽지만,
프로그램 언어는 왼쪽<-오른쪽 으로 읽는게 이해하기 좋음
복사하려는 줄 끝에 커서를 두고,
[ ctrl키 + alt키 + 넣을곳으로 위아래방향키 ] 하면 붙여넣기 됨
에러나는 경우. 근데 이렇게 쓸 일은 거의 없지만 알고만 있기
① 변수 선언
② 변수 초기화
3. 출력
①,② 변수선언과 동시에 초기화
*첫번째 줄과
*마지막 줄은 같은 출력이 나오지만, 마지막 출력이 더 편하고 이걸 많이 사용하기
(예제 복습해보기) 복습1번완료(7/19)
아래 [변수선언&초기화]로, println 사용해서 출력결과 + 연산자 사용
String name="홍길동";
int age=20;
String address="서울";
char gender='남';
boolean isMarried=false;
float height=185.63F;
double weight=78.25;
■ 리터럴 아래 [역슬래쉬+문자] 임!!! \t \n \"
★워크샵00 복습 [문제1] 복습2번완료(?, 7/19)
■ 변수에는 단 하나의 값만 저장 가능 (복수 저장하려면 배열 or 컬렉션 사용)
변수에는 단 하나의 타입만 저장가능
언제든지 변경 가능해서 "변수" / 변경 불가능한 수 " 상수 "
■ 기준값보다 큰 값을 표현하기 위해선 마지막에 명시적으로 그 큰 값의 첫글자 대문자로 적어주기
num값이 최종 출력값으로 바뀌긴 바뀌는데,
일단 syso을 하면, 그 위까지 변수초기화했던 건 무조건 출력을 해줘야함
그래서
변수초기화 ;
syso (변수) ;
변수초기화
syso (변수) ;
하면 출력이 마지막 syso(변수) 만 뜨는게 아니라
위변수도 출력, 아래변수도 출력인거임..
근데 현재 변수의 값은 아래변수의 값으로 int 에 저장되어 있는거고..
∴ 그래서 변수 사용은 3단계로 보면
1. 변수 선언 int num ;
2. 값 할당(초기화) num=10;
3. 값 다시 초기화 num=20;
★워크샵00 복습 [문제2] - 복습2번완료(?, 7/19)
ex) long ssn= 8310202182637L;
System.out.println("나의 주민번호:"+ssn);
★워크샵00 복습 [문제3] - 복습2번완료(?, 7/19)
■ 자바는 블럭 { } scope (자바스크립트는 함수 scope)
블럭 안에서만 선언, 선언 블럭 안에서만 사용됨
{ //A블럭 시작
이 블럭 안에서만 사용됨
} //A블럭 종료
//밖에 system.out.println 으로 num을 블럭 밖에서 쓰면 인식불가
ㄴ블럭 안의 num변수 10은 위 syso로 출력되고 종료되기 때문에
블럭 밖의 아래 syso은 num 변수가 없어서 안된다는거임 (자바는 안되는데 자바스크립트는 또 된대.....)
{
int num=10;
System.out.println("in block ===== "+num);
}
System.out.println("in block ===== "+num);
ㄴ이건 또 가능
int num=10;
{
System.out.println("in block ===== "+num);
}
System.out.println("in block ===== "+num);
ㄴ이건 또 안됨. 위 syso가 먼저 출력이 되어야하는데, num이란 변수가 블럭 안에는 없기 때문에...
{
System.out.println("in block ===== "+num);
}
int num=10;
System.out.println("in block ===== "+num);
ㄴ이러면 위 syso도 아래 syso도 변수가 준비되어있지 않기 때문에 오류남
'Govern > Eclipse SE -설치,문장,배열' 카테고리의 다른 글
07-14(수) 배열, Arrays API (0) | 2021.07.14 |
---|---|
07-13(화) for문,break,continue (0) | 2021.07.13 |
07-12(월) 문장 (0) | 2021.07.12 |
07-09(금) 형변환 연산자_valueOf,parseInt,전치후치,&& (0) | 2021.07.09 |
07-07(수) 자바 시작 (0) | 2021.07.07 |