학원 3일차 - Java

·2021년 3월 31일
0
post-thumbnail

2021.03.31

  • 인텔리센스, 코드 어시스트 : ctrl + space

  • 코드조각(자주쓰는 코드를 탬플릿 형태로 제공해줌)

    • 키워드 작성 -> ctrl + space

    • ex) syso 작성 -> ctrl + space -> ctrl + space

    • 사용전제 조건 : 구문은 외우고 사용할 것 -> 코드조각 기능 없어도 코드 칠 줄 알아야함.

  • 코드조각 등록법

    window - Preferences - Java - template - new

  • 포커스 이동 : 코드조각 사용 -> tap키누름 -> 녹색선으로 커서가 이동함. (코딩속도 빨라짐)


식별자 명명법 패턴

  1. 헝가리언 표기법
  2. 파스칼표기법
  3. 캐멀 표기법
  4. 스네이크 표기법
  5. 케밥 표기법
  • 캐멀 표기법

    • 식별자를 만들 때 식별자의 첫문자를 항상 대문자 표기 + 나머지 문자는 소문자로 표기
    • 식별자가 2개 이상의 단어로 조합되면 각 단어의 첫문자는 항상 대문자로 표기 + 나머지 문자는 소문자로 표기
    • 첫단어의 첫문자는 소문자로 시작한다.
    • 사용 -> 메소드명, 변수명
  byte englishScore;
  • 스네이크 표기법

    • 식별자를 만들 때 각 단어의 연결을 _를 사용해서 표기

    • 가독성 높음. 자바 개발에서는 잘 안쓰임.

    byte english_score;
  • 케밥 표기법

    • 식별자를 만들 때 각 단어의 연결을 -를 사용해서 표기

    • 자바에서는 오류가 나서 사용불가. (자바에서는 마이너스 연산자로 인식.)

    byte english-score;

  • 자료형 + 변수 + 리터럴(상수)
    • 자료형을 사용해서
    • 변수를 만든다.
    • 변수에 리터럴을 사용해서 값을 넣는다.
    • 모든 자료형에 대해서 만들어본다.(8가지)

정수형(byte, short, int, long)

  • byte
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
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 (가장 중요****함 -> 가장 많이 사용하기 때문에 외우기!!)
int n1;
		
n1 = 100;
		
n1 = 210000000;
System.out.println("int: " + n1);
		
n1 = -210000000;
System.out.println("int: " + n1);
  • long
  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);

  • 최대값 최소값 확인하는 법

    • 자료형 -> 클래스
      • byte -> Byte
      • short -> Short
      • int ->Integer
      • long -> Long
      • float -> Float
      • double -> Double

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);

  • 상수의 자료형?

    • 자바의 모든 정수형 상수의 자료형은 int이다.(★중요★)
    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, double)

  • float
  float f1;
  		
  //실수형 리터럴 표기법
  //Type mismatch: cannot convert from double to float
  //f1 = 3.14; -> 에러
  f1 = 3.14F;
  System.out.println("float: "+f1);
  • double
  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);

자바의 자료형

  1. 원시형, 값형
    정수형(4개), 실수형(2개), 문자형, 논리형

  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);



특수문자 -> Escape Sequence

  • 컴파일러와 미리 약속된 문자 -> 소스에는 특정한 문자를 작성했지만, 실행시 특정 행동을 하는 문자.
  • 자료형 : char

  • \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

    • carriage return
    • 커서(캐럿)의 위치를 현재 라인의 첫번째 열로 이동해라(Home키 눌러라~)
  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);
		
		
		



Data Type

  • 변수의 2개 -> 두 변수 +(더하기)과정을 출력
  // 변수의 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"

    • 숫자형태의 데이터

        1. 산술연산을 할 것인가?
        2. 산술연산을 안할 것인가? -> 숫자 말고 문자열이라고 생각해라. ->String을 써라
//주민등록번호 > 숫자 > 앞자리 : 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);



콘솔 입출력

  • 콘솔에서 데이터를 입출력하는 방법
  • 콘솔 입출력, Console Input Output, Console IO
    • 기본 입력 장치 : 키보드
    • 기본 출력 장치 : 모니터
  • 콘솔 출력
  • 콘솔 입력
  • 콘솔에서 데이터를 모니터(화면)에 출력하는 방법

    • System.out.println();

    • System(클래스).out(필드).println(메소드)

  • System.out.println();

    • 데이터를 출력한 뒤 엔터를 출력한다.
    • print line
  • System.out.print();

    • 데이터를 출력한 뒤 끝.(개행 없음)
  • System.out.printf();

    • print format
    • 형식 문자열 지원
    • 출력할 문자열을 보다 쉽게 구성할 수 있도록 도와주는 출력문
    • 가독성이 좋다.
  • 개행 없음 \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, "남자"); -> 데이터를 더 추가.에러는 안생기지만 이렇게 쓰면 안됨.
profile
모르면 괴롭고 알면 즐겁다.

0개의 댓글

관련 채용 정보