인텔리센스, 코드 어시스트 : ctrl + space
코드조각(자주쓰는 코드를 탬플릿 형태로 제공해줌)
키워드 작성 -> ctrl + space
ex) syso 작성 -> ctrl + space -> ctrl + space
사용전제 조건 : 구문은 외우고 사용할 것 -> 코드조각 기능 없어도 코드 칠 줄 알아야함.
코드조각 등록법
window - Preferences - Java - template - new
캐멀 표기법
byte englishScore;
스네이크 표기법
식별자를 만들 때 각 단어의 연결을 _를 사용해서 표기
가독성 높음. 자바 개발에서는 잘 안쓰임.
byte english_score;
케밥 표기법
식별자를 만들 때 각 단어의 연결을 -를 사용해서 표기
자바에서는 오류가 나서 사용불가. (자바에서는 마이너스 연산자로 인식.)
byte english-score;
byte b1;
b1 = 100; //100 -> 정수형 리터럴 = 정수형 상수 = 정수형 데이터
System.out.println("byte: " + b1);
b1 = -100;
System.out.println("byte: " + b1);
b1 = 127;
System.out.println("byte: " + b1);
//Type mismatch: cannot convert from int to byte
//b1 = 128; -> 에러
short s1;
s1 = 100;
System.out.println("short: " + s1);
s1 = 128;
System.out.println("short: " + s1);
s1 = 32767;
System.out.println("short: " + s1);
//s1 = 32768;
s1 = -32768;
//s1 = 32769;
int n1;
n1 = 100;
n1 = 210000000;
System.out.println("int: " + n1);
n1 = -210000000;
System.out.println("int: " + n1);
long l1;
l1 = 100;
System.out.println("long: " + l1);
l1 = 1000000000;
System.out.println("long: " + l1);
//The literal 1000000000000000 of type int is out of range
//l1 = 1000000000000000; -> 에러
l1 = 1000000000000000L; //접미어L을 붙여준다.
System.out.println("long: " + l1);
최대값 최소값 확인하는 법
System.out.println(Byte.SIZE); //8bit
System.out.println(Byte.BYTES); //1byte
System.out.println(Byte.MAX_VALUE); //127 최소값
System.out.println(Byte.MIN_VALUE); //-128
System.out.println(Integer.MAX_VALUE);
System.out.println(Integer.MIN_VALUE);
상수의 자료형?
byte b2 = 100;
short s2 = 100;
int n2 = 100;
//100-> int범위를 벗어나지 않았기 때문에 L생략 허용.
long l2 = 100; //long l2 = 100L;
System.out.println(b2); //byte값을 출력한다.
System.out.println(l2); //long값을 출력한다.
System.out.println(100); //? 값을 출력한다.
System.out.println(2100000000);
//정수형 상수는 int 범위를 벗어나서 사용할 수 없다.
//The literal 2200000000 of type int is out of range
//System.out.println(2200000000); -> 에러
//정수형 상수를 int범위 밖의 숫자를 표현하고 싶을때
//접미어(L)을 사용 -> long형이에요 알려주는 것
System.out.println(2200000000L); //대문자 L권장
System.out.println(2200000000l); //소문자 l비권장(숫자1이랑 헷갈림)
float f1;
//실수형 리터럴 표기법
//Type mismatch: cannot convert from double to float
//f1 = 3.14; -> 에러
f1 = 3.14F;
System.out.println("float: "+f1);
double d1;
d1 = 3.14;
d1 = 3.14D; //D를 꼭 안써도 상관 없음.
System.out.println("double:" +d1);
//모든 실수형의 기본 자료형은 double이다.
System.out.println(3.14); //실수형 상수 3.14 자료형? -> double
float f2 = 1.2345678901234567890123456789F;
double d2 = 1.2345678901234567890123456789D;
//float는 소수이하 7자리 기억 나머지는 손실
System.out.println("f2: "+f2); //f2: 1.2345679
System.out.println("d2: "+d2); //d2: 1.2345678901234567
한글자를 저장하는 자료형
char c1;
//A cannot be resolved to a variable(변수라고 착각)
//c1 = A;-> 에러
//문자형 리터럴 표기법 ''
c1 = 'A';
System.out.println("c2: "+c1);
c1 = '가';
System.out.println("c2: "+c1);
//아라비안 숫자 5하고 문자 5는 다른 값이다.(***중요***)
c1 = '5';
System.out.println("c2: "+c1);
int num1 = 5; //5 -> 00000101
char num2 = '5'; //글자 -> 문자 코드값 -> 53 -> 00110101
//Invalid character constant
//한글자 이상 사용 할 수 없음
//c1 = 'AB'; -> 에러
boolean flag;
//논리형리터럴
flag = true;
System.out.println("flag: " + flag);
flag = false;
System.out.println("flag: " + flag);
자바의 자료형
원시형, 값형
정수형(4개), 실수형(2개), 문자형, 논리형
참조형
문자열(String) : 문자들이 열을 지어 있는 형태의 자료형
//이름(홍길동) -> 변수 저장 -> 출력
//char name = '홍길동' -> 에러
char name1 = '홍';
char name2 = '길';
char name3 = '동';
System.out.println("이름: " + name1 + name2 + name3);
String name;
//홍길동 cannot be resolved to a variable
//name = 홍길동; -> 에러
//문자열 리터럴 표기법 : ""
name = "홍길동";
System.out.println("이름: " + name);
//문자형은 ''안에 반드시 무언가가 표현이 되야한다.
//char m1 = ''; -> 에러
//빈문자열(Empty String) -> 주로 문자열 변수를 초기화할 때 사용 or 그외 등등,,
String m2 = "";
System.out.println("m2: " + m2);
\n
new line
개행문자, 엔터
실행 중 \n을 만나면 즉시 엔터를 쳐라(개행을 해라)
역슬래쉬n이라고 읽는다.
char c1 = '\n';
String str = "안녕하세요.\n홍길동입니다.";
System.out.println(str);
String str1 = "안녕하세요.";
String str2 = "홍길동입니다.";
System.out.println(str1);
System.out.println(str2);
System.out.println();//빈줄 출력, 엔터역할
//문자열 리터럴내에는 ""사이에는 엔터를 입력할 수 없다.(문자열 리터럴은 단일 라인이어야 한다.)
//String str3 = "안녕하세요.
// 홍길동입니다."; -> 에러
\r
str = "반갑습니다.\r홍길동";
System.out.println(str); //홍길동니다.
//cmd에서 실행 > java.exe ex06.jar
//insert 키 : 덮어쓰기
//일반적으로 행을 바꿀때 -> 엔터키를 누른다.
//엔터는 (\r + \n)을 합친 것이다.
//-> 엔터 -> \r\n
//운영체제에 따라 다르다.(엔터 : 윈도우 - \r\n, 맥 -\r,리눅스 - \n )
cmd에서 실행하기 위해 파일 내보내기
패키지탐색기에서 우클릭 - Export - Runnable JAR file(압축동적실행파일)
\t
탭문자
탭? -> 행동이 아님.탭의 위치는 고정이 되어있다. 현재 커서의 위치에서 그 다음 탭의 위치로 이동해라
//가장 가까운 탭의 위치로 이동해라.
str1 = "이름:\t홍길동";
str2 = "나이:\t25세";
String str3 = "핸드폰:\t010-123-456";
System.out.println(str1);
System.out.println(str2);
System.out.println(str3);
\b
backspace
뒤로 한칸 커서 움직인뒤 덮어쓰기.
str = "홍길동\b입니다.";
System.out.println(str);//홍길동입니다. 홍길입니다.
//cmd에서 실행 > java.exe ex06.jar
\", \', \\
//고객의 요구사항 -> 화면에 출력해주세요 -> 홍길동 왈: "안녕하세요"
//str = "홍길동 왈: "안녕하세요""; -> 에러
str = "홍길동 왈: \"안녕하세요\"";
System.out.println(str);
//요구사항 -> 현재 수업 폴더의 경로를 출력하시오. -> D:\class\java
//Invalid escape sequence (valid ones are \b \t \n \f \r \" \' \\ )
//str = "D:\class\java"; ->에러
str = "D:\\class\\java";
System.out.println(str);
// 변수의 2개 -> 두 변수 + 과정을 출력
//10 +20 = 30
int a = 10;
int b = 20;
//변수가 문자열내에 있으면 변수가 아닌 그냥 단순한 문자열로 취급한다.
System.out.println("a + b = 30");
System.out.println(a + "+" + b + "=" + a + b); //"10+20=1020"
System.out.println(a + "+" + b + "=" + (a + b)); //10+20=30
System.out.println();
//1 + 2 + 3 + 4 + 5
//왼쪽에서 부더 오른쪽으로 더한다.
//1+2
//3+3
//6+4
//10+5
//15
// + 연산자
//값 + 값
//숫자 + 숫자 : 1 + 2
//문자열 + 문자열 : "사과" + "포도" = "사과포도" <- concat
//숫자 + 문자열 : 1 + "사과" => "1" + "사과" = "1사과"
//문자열 + 숫자 : "포도" + 2 => "포도" + "2" = "포도2"
"숫자 형태"의 데이터를 다룰 때 주의할 점
-> 100, "100"
숫자형태의 데이터
//주민등록번호 > 숫자 > 앞자리 : 950331-1234567; > 변수에 저장
//int jumin = 950331;
String jumin = "950331";
System.out.println("주민번호는 " + jumin);
//***주민등록번호를 숫자로 생각하기 때문에...
//주민등록번호로 연산을 안하기 때문에 문자열로 쓰자.
jumin = "030510";
System.out.println("주민번호는 " + jumin);
//숫자 형태이지만 숫자로 만들면 안되는 데이터 -> "문자열"로 만들어라~!!!!!!
//1. 주민등록번호
//2. 전화번호
//3. 상품번호
// ex) 0012345625 -> "0012345625"
//자바에서 숫자 상수 표기법(정수만 해당)
//- 기수법 명시 가능
//- 출력될때는 무조건 10진수로 출력된다.
//1. 10진수
//2. 8진수
//3. 16진수
//4. 2진수
int num = 10; //소스(10) -> 10진수 표현
System.out.println(num);
num = 010; //소스(0xx) -> 8진수 표현
System.out.println(num);
num = 0x10; //소스(0xXX) -> 16진수 표현
System.out.println(num);
콘솔에서 데이터를 모니터(화면)에 출력하는 방법
System.out.println();
System(클래스).out(필드).println(메소드)
System.out.println();
System.out.print();
System.out.printf();
개행 없음 \n을 써주자.
System.out.println(100);
System.out.println(200);
System.out.println(300);
System.out.print(100);
System.out.print(200);
System.out.print(300);
System.out.println();
System.out.println();
String name1 = "홍길동";
int kor1 = 90;
int eng1 = 95;
int math1 = 85;
String name2 = "거북이";
int kor2 = 80;
int eng2 = 75;
int math2 = 88;
System.out.println("=============================");
System.out.println(" 성적표");
System.out.println("=============================");
System.out.println("[이름]\t[국어]\t[영어]\t[수학]"); //테이블 머릿말, table header
System.out.print(name1);
System.out.print("\t");
System.out.print(kor1+"\t");
System.out.print(eng1+"\t");
System.out.print(math1+"\n");
//System.out.println();
System.out.println(name2 +"\t"+ kor2+"\t"+eng2 +"\t"+math2);
//요구사항) "안녕하세요. 홍길동님" -> 출력
String name = "홍길동";
System.out.println("안녕하세요. "+name+"님");
//printf()
//%s : 형식 문자, place holder
System.out.printf("안녕하세요. %s님\n", name);
System.out.printf("안녕하세요. %s님\n", "아무개");
//개발자는 항상 데이터의 변화를 미리 예측해야한다.
//수정사항) "안녕하세요.홍길동님. 반갑습니다. 홍길동님" -> 출력
//수정사항) 홍길동 -> 고구마 변환시 정적인 코드는 수정하기 어렵다.
System.out.println("안녕하세요.홍길동님. 반갑습니다. 홍길동님"); //정적인 코드
System.out.printf("안녕하세요.%s님. 반갑습니다. %s님\n", name, name); //1:1
System.out.println("안녕하세요."+name+"님. 반갑습니다. "+name+"님"); //동적인 코드, 유연한 코드
//Oracle->sql언어구문
//insert into tblMember(seq, name, age, address, tel) values (10, '홍길동', 20, '서울특별시 강남구 역삼동', '010-1236-4576')
String seq = "10";
name = "홍길동";
String age = "20";
String address = "서울특별시 강남구 역삼동";
String tel = "010-1236-4576";
//가독성이 안좋음.
//System.out.println("insert into tblMember(seq, name, age, address, tel) values ("+ seq +", '" + name + "', " + age + ",'" + address + "','" + tel + "')");
//가독성이 좋음.
System.out.printf("insert into tblMember(seq, name, age, address, tel) values (%s, '%s', '%s', '%s', '%s')\n",seq,name,age,address,tel);
//printf()
// - 형식 문자
//1. %s : String
//2. %d : Decimal(정수, 10진수)(byte, short, int, long)
//3. %f : Float(실수)(float, double)
//4. %b : Boolean
//5. %c : Char
System.out.printf("문자열: %s\n", "문자열");
System.out.printf("정수: %d\n", 100);
System.out.printf("실수: %f\n", 3.14);
System.out.printf("논리: %s\n", true);
System.out.printf("문자: %c\n", 'A');
//타입 형식에 맞게 1:1이 되게 맞추는 게 좋음.
//공부할때 다양하게 에러를 일부러 내고 왜 에러가 나는지 공부하자.
//System.out.printf("이름: %s, 나이: %d"); -> 데이타를 안써줘서 에러
//System.out.printf("이름: %s, 나이: %d", "홍길동"); -> 데이터를 하나만 써서 에러
System.out.printf("이름: %s, 나이: %d", "홍길동", 20);
//System.out.printf("이름: %s, 나이: %d", "홍길동", "20"); -> 데이터는 썼지만 정수형을 문자열로 썼기 때문에 에러
//System.out.printf("이름: %s, 나이: %d", "홍길동", 20, "남자"); -> 데이터를 더 추가.에러는 안생기지만 이렇게 쓰면 안됨.