반응형
<Java SE>
*제어문
-조건문
-반복문
-분기문
*제어문
-
프로그램의 순차적인 흐름을 변경할수 있는 문장들 <언어가 달라도 문법만 바뀔뿐 정의가 바뀌진 않는다.
-
조건문, 반복문, 분기문
field class 클래스 {
local public static void main (String[] args){ //<main mathod가들어있는 클래스를 보고 java application이라고 한다.
}
}
-
<프로그램은 연산과 제어의 혼합
-
조건문 : if, switch~case
-
반복문 : for, while, do
-
분기문 : break, continue, return
-
<AL_UTF-8 character set /Mysql은 UTF-8?이 아니니까 나왔겠지 euckr
-조건문
-if
-
자바에 존재하는 모든값을 비교할수 있다.
-
if : 모든값 비교할수 있다. <객체, 문자열값, 문자값, 등등
-
=>정수, 실수, 문자, boolean, 문자열, 객체 다~~
-
<상황제어시에 주로 사용하게 된다.
-
조건에 맞을 때 실행될 코드를 작성하고 실행하게 만드는 문장(상황제어) <한문장일수도 여러문장일수도
-
if(단일 if), if~else(if~else문), 다중 if 3가지로 사용 <(문법은다르지만 흐름은 같다.)
-
관계연산자로 여러조건 판별할수도 있다.
-단일 if
-
조건에 맞는 경우에만 코드가 실행되어야 할때
-
문법) if (조건식) {
-
조건에 맞을때 수행할 문장들;
-
...
-
}
|
//java
if (조건식) {
조건에 맞을때 수행할 문장들;
...
} |
//PL/SQL
if 조건식 then
...
end if; |
//Python
if 조건식;
수행 코드;
//아마도 |
-
if 는 플로우 차트를 그려서 보게 되는데 만국공통어 처럼 플로우차트 하나보고 다양한 언어로의 코딩이 가능하다.
-
좀있다가, gliffy 라는 프로그램이 플로우차트 만드는 어플리케이션이 있는데 깔면 유료라서 윈도우에 크롬으로 추가하여 윈도우에서 무료로..야매사용
-
if ex)
|
<java>
class 클래스 {
public static void main (String[] args){
int i = 5;
if(i<0){
i = -i;
}
System.out.println(i);
} |
<오라클>
declare
i number;
begin
if i <0 then
i:=-i;
end if;
dbms.output.put_line(i);
end;
/ |
-
eclipse 실행)
-
나중엔 플러그인이 255자 넘어가는게 있어서 그거깔기 전까진 전처럼 백업/255자 넘어가면 백업이 안된다?
-
이클립스 열고 컨트롤 w로 class다닫고 새 패키지 만들기
-
TestIfTest <= 이렇게 단어 연결시에 첫글자 대문자/나머지 소문자 => 낙타체
-
gliffy 실행)
-
co/ beebee6656@gmail.com으로 가입(크롬 웹으로 추가해서 사용)
-
Flow chart)
-
메소드 호출이 안돼고, 복잡한 코드는 그릴수 없다. 태생적 한계
-
UI그릴수도 있지만 무료인 오븐을 가지고 할예정..
*주석 (Coment)
-
<주석을 걸면 컴파일러가 해석을 안한다.
-
<우리가 실행하는 컴파일러는 javac.exe 인데, 실행시 클래스명.class가 되어 bytecode에는 주석이 생기지 않느다. 소스코드에만!
-
주석은 compiler가 해석하지 않는다.
-
=>byte code에는 주석이 생성되지 않는다. (class파일에는 없다는 말)
-
코드의 부연설명을 붙일때(자세하게 적어야), 코드의 실행을 막을때(디버그용)
-
(일주일만 지나도 까먹게 되어서, 다른사람이 유지보수를 하게 될떄 개발은 SI가 유지보수는 SM이 하게 될떄)
-
자바의 주석은 3가지
-
주석의 형태
-
//한줄주석 단축키 : ctrl+/
-
/*
-
여러줄
-
주석
-
단축키 : ctrl+shift+/
-
*/
-
/**
-
*java Doc 주석
-
*닥주석인 경우 javadoc.exe를 사용하여 API Document를 생성할때 사용
-
*클래스명에 마우스를 올리면 설명해준다
-
*단축키 : alt+shift+j
-
*/
-
if ex)
package day1119; //패키지가 들어갔고 퍼블릭이 클래스에 붙었다.자바닥 만들때 퍼블릭 안붙은건 안나온다.
//닥주석에는 넣어야 한다. 줄바꿈
/**
* 조건문의 사용
* 단일 if문 : 조건에 맞는 경우에만 코들를 실행해야할때.
* 문법) if (조건식) {
* 조건에 맞을때 수행 문장들...;
* }
* 자바닥= 닥주석(alt shift j)
* 이걸로 나중에 닥을 만들게 된다?doc?
*
* @author owner
*/
public class TestIf {
//Constant : 변수를 상수처럼 사용할때.(값을 변경하지 못하는 변수) 바뀌지 않아야 하는값들
public static final int FLAG_VALUE = 1250;
public static final int FLAG_CNT = 20;
//constant명은 대문자!!블럭잡고 ctrl shift x 대문자~!
//ctrl shift y 소문자
public static void main(String[] args) {
/*
int i = 10;
if (i < 0) {//단일 if ex
i = -i;
} // end if
System.out.println("i= " + i);
*/
//이름을 입력받아 이름이 이재찬이면 이름을 출력하기전에 반장을 출력하고 그렇지 않다면 이름만 출력
//입력받는것이기 때문에 Run의 화살표 configuration 눌러서 Argument값 입력
if (args[0].equals("이재찬")) {
System.out.print("반장 ");
}//end if
System.out.println(args[0]);
//숫자형태의 문자열을 정수로 변환하고 싶을때 Parse double도있고 long도있고 여러매소드 존재
int i = Integer.parseInt(args[1]);
int j = Integer.parseInt(args[2]);
System.out.println(i+" + "+j +" = "+(i+j));
//args[3]을 입력받아 그수가 20이내라면 1250과 입력수를 곱하여 출력하고
//그렇지 않으면 20보다 크다면 1250에 10%를 더한 값과 입력수를 곱하여 출력.
// int ii = Integer.parseInt(args[3]);
// if (ii<=20) {
// System.out.println("args[3]은 20이내 " + ii*1250);
// }
// if (ii>20) {
// System.out.println("args[3]은 20외 " + (1250+(1250*0.1))*ii);
// }
// //무조건 정수일땐 캐스팅~!
// //자바는 형에대해서 오라클보다 엄격
//답)
//<기준값은 constant => 상수 => 필드에 선언
//java day1119.TestIf 문자열 정수 정수 정수 <타고들어오는 args가 문자열이라 비교가 되지 않는다.
// 0 1 1 3
int input_value = Integer.parseInt(args[3]);
int sum = TestIf.FLAG_VALUE;
if(input_value>TestIf.FLAG_CNT) {
sum = (int)(TestIf.FLAG_VALUE + TestIf.FLAG_VALUE* 0.1);
//0.1은 8byte의 자리로 다른 값들마저도 8byte의 double로 다바뀌어 연산이 되어 casting해줌
}//end if
System.out.println(sum*input_value);
}// main
}// class
<ctrl F11 코드실행
<ctrl shift f 정리 main method 안에서만..? 나중엔 난리난다.
<==는 참조형과 기본형이 다른결과?
<args[0] equals("비교할 문자열") 여러개발자가 같이보는거니까 문자열 비교
<args[0] == "이재찬" 으로 썼다.
<자바에서 입력되는 문자열을 정슈ㅜ로바꿀때는 IntergerMethod에 ParseInt
<ctrl+spacebar로 바로 원하는단어 찾을수 있고, 자주쓰이는것도 알수있다.>
<gliffy_Test>
-if~else
-
둘중 하나의 코드가 반드시 실행되어야 할때
-
문법)
if (조건식) {
조건이 맞을때 수행코드;
...
}else {
조건이 맞지 않을때 수행코드;
...
}
-
<어느쪽도 한줄이면 괄호 생략가능하지만 가독성측면에서 넣는게 좋다.
-
if는 실행되어야할 코드가 한줄이라면 { } 를 생략할수 있다.
-
ex)
package day1119;
/**
* if~else : 둘중 하나의 코드를 실행해야할 때 사용
* 문법) if (조건식){
* 조건에 맞을 때 수행할 문장; 들...
* } else{
* 조건에 맞지 않을때 수행할 문장들;
* }
*
* @author owner
*/
public class TestIfElse {
public static void main(String[] args) {
int i = 16;
//변수에 존재하는 수가 음수인지 양수인지를 판단
System.out.print(i+"는(은) ");
if (i < 0) {
System.out.println("음수");
}else {
System.out.println("양수");
}//end if
//변수에 존재하는 수가 홀수인지 짝수인지를 판단
//수행하는 행수가 1행 이라면 중괄호{}는 생략할수 있습니다.
if(i%2==0) {
System.out.println("짝수");
//System.out.println("홀수우우우ㅜㅇ");//이자리에 적게되면 괄호가 없어 벗어남 else를 끊어서 Error
} else {
System.out.println("홀수");
}//end if
//System.out.println("홀수우우우ㅜㅇ");//괄호없으면 한줄만 else의 수행코드
//입력하는 수가 3의 배수라면 "짝"을 출력하고 그렇지 않다면 입력한 수를 출력하세요.
int a = Integer.parseInt(args[0]);
if (a%3 == 0) {
System.out.println("짝");
} else {
System.out.println(a);
}//end if
}//main
}//class
-다중 if (else~if)
-
연관된 여러 조건을 비교할 때
-
문법)
if (조건식) {
조건에 맞을때 수행문장;
} else if (조건식){
조건에 맞을때 수행문장;
} else {
모든 조건이 맞지 않을때 수행문장;
}
-
마지막 else는 생략 가능
-
ex) 0~100사이 값인지 판단
-
ex)
package day1119;
/**
* else~if : 연관된 여러 조건을 비교할 때.
* 문법) if(조건식){
* 조건에 맞을때 수행 문장;
* } else if(조건식) {
* 조건에 맞을때 수행 문장;
* }
* } else if(조건식) {
* 조건에 맞을때 수행 문장;
* }
* } else if(조건식) {
* 조건에 맞을때 수행 문장;
* }
* .
* .
* }else {
* 모든 조건에 맞지 않을 때 수행 문장;
* }
* //br>이라는건 document에서 줄띄움
* @author owner
*/
public class TestElseIF {
public static void main(String[] args) {
//입력받은수가 홀수인지 짝수인지
int i = Integer.parseInt(args[0]);
System.out.print(i+ "는(은)");
if(i<0) {
System.out.println("0보다 작아서 실패");
}else if(i>100) {
System.out.println("100보다 커서 실패");
}else {
System.out.println("입력 성공");
}//end else
//이름을 입력받아 "이재찬"이면 반장을 "이봉현, 박영민, 김정운, 오영근" 이면 조장을
//그렇지 않으면 "평민"을 이름앞에 출력 하세요. "직책 이름"
if(args[1].equals("이재찬")) {
System.out.print("반장 ");
} else if(args[1].equals("이봉현")){
System.out.print("조장 ");
} else if(args[1].equals("박영민")){
System.out.print("조장 ");
} else if(args[1].equals("김정운")){
System.out.print("조장 ");
} else if(args[1].equals("오영근")){
System.out.print("조장 ");
} else {
System.out.print("평민 ");
}//end else
System.out.println(args[1] + "님 안녕하세요.");
//else if(args[1].equals("이봉현"))||(args[1].equals("박영민"))||
//(args[1].equals("김정운"))||(args[1].equals("오영근")) {
//문자열은 equals만 가능..같다만
//태어난 해(1995)를 입력받아 띠(12) 구하기
//11-양, 10-말, 9-뱀, 8-용, 7-토끼, 6-호랑이, 5-소, 4-쥐, 3-돼지, 2-개, 1-닭, 0-원숭이
int b = Integer.parseInt(args[2]);
System.out.print(b+"년도의 띠는(은) ");
if (b%12==0) {
System.out.println("원숭이");
} else if (b%12==1) {
System.out.println("닭");
} else if (b%12==2) {
System.out.println("개");
} else if (b%12==3) {
System.out.println("돼지");
} else if (b%12==4) {
System.out.println("쥐");
} else if (b%12==5) {
System.out.println("소");
} else if (b%12==6) {
System.out.println("호랑이");
} else if (b%12==7) {
System.out.println("토끼");
} else if (b%12==8) {
System.out.println("용");
} else if (b%12==9) {
System.out.println("뱀");
} else if (b%12==10) {
System.out.println("말");
} else if (b%12==11) {
System.out.println("양");
}
}//main
}//class
-Switch~case
-
<자바 버전에 따라 다르긴한데
-
일치하는 정수를 비교할때 주로 사용.
-
JDK1.7 이상, 에서부터 (일치하는) 문자열도 비교할수 있게됨. <JDK 는 Java Development ket의 약어
-
문법)
switch (변수명) {
case 상수 : 수행할 문장;
case 상수 : 수행할 문장;
case 상수 : ...
.
.
default : 일치하는 상수가 없을때 수행할 문장;
}
-
<변수에는 정수를 저장할수 있는 변수가 온다. (byte, short, int, long)...이지만 long은 정수를 저장하긴하지만 쓸수 없다. + char +(JDK1.7부터 String)
-
<option으로 break문 사용.
-
<일치하는 것을 찾아서 거기서부터 수행해서 아래까지 쭉탄다...
-
<break; 라는건 분기문인데, 반복문, 조건문 빠져나갈때 사용. 만나면 나감.
-
break 분기문을 사용
-
=>switch~case, for, while, do~while을 빠져나갈때 사용. <오라클에서의 exit와 같다.
-
<딱 떨어지는 정수 비교시 if 보다 빠르다
-
<태생적으로 범위는 물어보기 힘들다. 코딩량이 많아짐
-
<default도 옵션???
-
case는 입력되는 변수(의 데이터타입)에 따라 다른 범위를 가진다.
-
ex)
package day1119;
/**
* switch~case : 정수를 비교할 때.(JDK1.7에서부터는 문자열도 비교가능)
* 문법) switch(변수명 {
* case 상수 : 수행문장;
* case 상수 : 수행문장;
* .
* .
* default : 일치하는 상수가 없을 때 수행문장;
* }
* @author owner
*/
public class TestSwitchCase {
public static void main(String[] args) {
//String i = "1"; //JDK1.7에서부터 사용가능
//long은 넣을수 없다.int로 변환되는 형만 가능
//char '1'은 유니코드 45가 나와 default로 간다.
//String 일때는 case 상수에도 다 쌍따옴표!
//컴파일러의 버전을 바꿀수있다 프로젝에서 오른쪽
int i = 0;
//switch에 입력되는 변수의 데이터형은 byte, short, int, char, String
switch(i) {
//case는 입력되는 변수에 따라 다른 범위를 가진다.
//signed value 인것...
case 0:System.out.println("새벽"); //0인경우 다출력
case 1:System.out.println("아침"); //1인경우 점심저녁새벽
case 32767:System.out.println("점심"); //2인경우 저녁 새벽
default : System.out.println("저녁"); //3~이상은 다 새벽
}//end switch
}//main
}//class
<Flow Chart>
*Compiler 변경
-
컴파일러의 버전을 바꿀수 있다. 버전을 맞추는게 매우 중요~~~
-
프로젝에서 우클릭- 맨마지막-compiler
-
회사에서 서버에 자바를 깔으면 한달이 걸린다 오류잡고 ~하느라고 깔기 힘듬 그래서 컴파일버전을 다양히
-
엄청 좋은기능 ~!~!
반응형