JAVA start_240315

brave_chicken·2024년 3월 16일

잇(IT)생 챌린지

목록 보기
6/90

단축키 모음

ctrl+f11 -> 실행
ctrl+s -> 저장
ctrl+z-> 이전으로 돌리기
ctrl+x> 잘라내기

컴파일

1. 소스파일 작성

메모장에 작성 후 backend23폴더에 확장자 java로 "Hello.java" 저장

class Hello {
	public static void main(String[] args) {
    	System.out.println("Hello, world");
    }
}

2. 컴파일

cmd 들어가기
cd C:\backend23 엔터
dir/w 엔터
javac Hello.java 엔터
java Hello 엔터

FirstPro.java/변수선언, 출력

package basic;

public class FirstPro {
	public static void main(String[] args) {
		System.out.println("first");
		
		int num = 100;
		//int num = 200;
		//num = "자바" 자바는 타입에 맞게 값을 할당해야 한다.
		num = 200; //변수의 값을 변경할 수 있다.
		System.out.println(num);
		int num1 = 100;
		int num2 = 200;
		int result = num1 + num2;
		System.out.println("더한결과=>"+result);
		//println 줄바꿈, print는 줄바꿈 없음
		System.out.print("값1");
		System.out.print("값2");
		//+,-,*,/,% 연산자 동일
	}
}
package basic;

public class FirstPro {
	public static void main(String[] args) {
    
    }
}
  • main메소드는 자바 application에서 시작점
    =>인터프리터가 호출하는 메소드
  • class생성할때 main에 체크하면 자동 생성됨
System.out.println("first");
  • sys + ctrl 하면 System.out.println()작성됨
  • js의 console.log의 역할
  • first가 console창에 출력됨
int num = 100;
num = 200;

System.out.println(num);
//=>console창에 200 출력

int num1 = 100;
int num2 = 200;
int result = num1 + num2;
System.out.println("더한결과=>"+result);
//=>console창에 더한결과=>300 출력
  • 변수선언할때 js와 달리 데이터타입 주고 변수명선언해야함.
    데이터 타입에 맞게 값을 할당해야함.
    데이터타입 변수명;
    데이터타입 변수명 = 초기값;
  • int num = 100; 선언 이후 int num = 200; 이렇게는 못함
  • num=200으로 변수의 값을 변경할 수 있음
  • +,-,*,/,% 연산자는 js와 동일
System.out.print("값1");
System.out.print("값2");
  • System.out.println은 줄바꿈 되고, System.out.print는 줄바꿈 없음

FirstExam.java/예제

package basic;

public class firstExam {
	public static void main(String[] args) {
		int kor = 95;
		int eng = 97;
		int math = 100;
		int sum = kor+eng+math;
		int avr = (kor+eng+math)/3;
		System.out.println("총점:"+sum);
		System.out.println("평균:"+avr);
	}
}
  1. kor,eng,math변수를 선언하고 임의의 값을 할당하기
  2. 이 변수에 저장된 값들을 이용해서 아래와 같은 출력 결과가 나타나도록 프로그램을 작성하세요
    [출력형태]
    총점:_
    평균:_

LocalVariableTest.java/자바 로컬변수 특징

class {}(클래스블럭)을 빼고 모든 블럭안에서 선언된 변수를 자바에서는 로컬변수라고 부름

package basic;

public class LocalVariableTest {
	public static void main(String[] args) {
		int j = 10;//로컬변수(지역변수)
		int num;
		//로컬변수는 사용하기 전에 초기화( '=' 연산자로 값을 할당)해야한다.
		//System.out.println(num);
		if(j>=10) {
			//val변수는 if블럭에서 선언된 지역변수
			int val = 100;
		}
		//2.로컬변수는 선언된 블럭 내부에서만 사용할 수 있다.
		//블럭이 끝나면 메모리에서 해제
		//System.out.pintln(val);
		for(int i =0;i<10;i++) {
			System.out.println("지역변수...");
		}
		//3.for문을 사용하기 위해서 선언된 초기화변수도 for블럭안에서 선언된 지역변수
//		System.println.out("for문에서 사용한 i변수=>"+i)
		//4.for문에서 사용하는 초기화 변수를 for문 밖에서 사용해야 한다면 for문 밖에서 선언하고 사용
		int i = 0; //정수형 변수는 0으로 초기화
		for(i=0;i<10;i++) {
			System.out.println("지역변수...");
		}
		System.out.println("for문에서 사용한 i변수=>"+i);
		
		int test = 10;
		if(true) {
			int test = 100; //블럭안에서 선언해서 또 하는거 안대
		}
	}
}
	int j = 10;//로컬변수(지역변수)
	int num;
	//System.out.println(num);

1. 로컬변수는 사용하기 전에 초기화( '=' 연산자로 값을 할당)해야한다.

  • 값을 할당하지 않고(int num;) 출력하면 (System.out.println(num);) 오류 뜸
if(j>=10) {
	int val = 100;
    //val변수는 if블럭에서 선언된 지역변수
	}
//System.out.pintln(val);
		}

2. 로컬변수는 선언된 블럭 내부에서만 사용할 수 있다.

블럭이 끝나면 메모리에서 해제

  • if{}(블럭)안에서 val변수가 선언돼서 블럭 밖에서 출력할 수 없음
for(int i =0;i<10;i++) {
	System.out.println("지역변수...");
}

3. for문을 사용하기 위해서 선언된 초기화변수도 for블럭안에서 선언된 지역변수

int i = 0; //정수형 변수는 0으로 초기화
for(i=0;i<10;i++) {
	System.out.println("지역변수...");
}
System.out.println("for문에서 사용한 i변수=>"+i);
		

4. for문에서 사용하는 초기화 변수를 for문 밖에서 사용해야 한다면 for문 밖에서 선언하고 사용

int test = 10; 
if(true) { 
	int test = 100;  
}
  • 블럭 안에서 또 선언하는 것도 안됨

OprTest.java/논리연산자

1. 논리연산자 - &(and), |(or)

:모든 항을 다 검사

int num1 = 200;
String str = null ;//str변수가 아무것도 참조하고 있지 않다.
//System.out.println(num1>100 | str.length()>0);=>불가
//System.out.println(num1<100 & str.length()>0);=>불가
  • 모든 항 검사하기 때문에 str이 null이라 length 알수없어서 오류뜸.

2. 논리연산자 - &&(and), ||(or)

System.out.println(num1>100 || str.length()>0);
  • short-circuit연산을 수행
  • 앞의 항 검사시 true면 뒷 항을 보지 않아도 or연산(||연산)은 true가 출력되니까 뒤 연산 수행안함
System.out.println(num1<100 && str.length()>0);
  • &&연산자의 특징으로 첫번째 항이 false면 두번째항은 검사하지않음

3. 조건삼항연산자

: 조건?조건이 만족하는 경우 리턴될 값 : 조건이 만족하지 않는 경우 리턴될 값

int num = 99;

String result = num>90?"합격":"불합격";		
int intvalResult = num>90?10000:0;

System.out.println(result);
System.out.println(intvalResult);
  • 조건을 만족하기 때문에 console창에 합격과 10000 출력됨

PrmitiveTypeTest.java/기본형 변수의 데이터 표현과 리터럴

1. int

int num = 100;//변수 - 변하는 값을 메모리에 저장
num = 200; //값을 바꿀 수 있음

2. final이 추가된 변수는 상수

final int NUM_VALUE = 1000;
//NUM_VALUE = 200; =>값 재할당 불가능
		
  • 상수는 특정값이 저장된 변수로, 값을 다시 변경할 수 없다.
  • 상수명은 대문자로 정의

3. 논리형 - boolean

boolean boolVal = true;
System.out.println("boolVal=>"+boolVal);
  • 논리형은 true나 false로 정의
  • console창에 boolVal=>true 출력

4. 정수형 -주로 in가 사용됨

byte b = 127;
short s = 32767;
int i = 2147483647;
long l = 2147483648L;//l이나 L 소문자 대문자 L이 롱표시
//int형 리터럴로 long형의 데이터를 표현할 수 없으므로 접미사 L이나 l을 추가
System.out.println("b=>"+b);
  • 정수형 리터럴의 기본타입은 int(리터럴은 정의된 숫자)
  • byte, short, int, long의 저장 가능한 값의 범위가 정해져있음.

5. 실수형 -주로 double이 사용됨

float f = 10.5f;//F와 같은 접미사를 추가
double d = 10.5;
System.out.println("f=>"+f);
System.out.println("d=>"+d);
  • 실수형 리터럴의 기본타입은 double

6. 문자형

char c ='A';
c = '한';
System.out.println("c=>"+c);
  • char의 리터럴은 작은 따옴표로 표현

7. 문자열형- String

String str = "참조형인 String을 기본형처럼 표현하는 경우 리터럴은 큰따옴표로 추가해서 구성";
System.out.println("String=>"+str);
  • String은 기본형이 아니라 참조형타입이지만 많이 사용되므로 리터럴로 표현이 가능
  • String타입의 리터럴은 " " 큰따옴표

int/int는 int로 연산됨.

System.out.println(10/3);
  • console에 3으로 출력

연산에 double이 포함되면 double로 변경해서 연산

double val = 3;
System.out.println(10/val);
System.out.println(3/10.0);
System.out.println(3/10);
System.out.println(3/(double)10);
//10이라는 int형 리터럴의 타입을 double로 형변환
  • 순서대로 console출력되는 수
    3.3333333333333335
    0.3
    0
    0.3

특수문자

System.out.println("안녕 자바\t프로그래밍");
\t : tab
System.out.println("안녕 자바\n프로그래밍");
\n : enter
System.out.println("안녕 \"자바\"프로그래밍");
\"자바\" : "자바"
  • 순서대로 console출력되는 문자
    안녕 자바 프로그래밍
    안녕 자바
    프로그래밍
    안녕 "자바"프로그래밍

char 변수 ASCII값

char data = 97;
System.out.println(data);
  • console에 a로 출력됨
  • 캐릭터변수에 인트를 넣었는데 타입변환이 자동으로 됨
  • 캐릭터 변수는 ASCII값을 내부적으로 갖고있음.. 60p,75p

TypeCastingTest/기본형의 형변환 74p

1. 자동형변환 - JVM내부에서 자동으로 변환

byte b = 100;
short s = b;
int i = s;
long l = i;
float f = l;
double d = f;
System.out.println("l=>"+l);
System.out.println("d=>"+d);
		
char c ='a';
System.out.println("char값=>"+c);
int data = c;
System.out.println("int값:"+data);
		
//char = int; X
//char data2 = data;
  • 출력 모양
    l=>100
    d=>100.0
    char값=>a
    int값:97

2. 명시적형변환

int data2 = 100;
char data3 = (char)data2;//data2가 int형이지만 char타입으로 변환해서 저장
System.out.println((char)data2);
System.out.println(data3);
		
double result = 10/3;
System.out.println("결과=>"+result);
double result1 = (double)10/3;
System.out.println("결과=>"+result1);
		
//아스키를 캐릭터로 바꾸거나 그 반대거나..
  • 출력 모양
    d
    d
    결과=>3.0
    결과=>3.3333333333333335

ScannerTest

  • 패키지 밑에 import java.util.Scanner; 입력해야함. Scanner 자동완성하면 자동으로 입력됨
  • scanner클래스에 대한 내용
  • API(라이브러리)활용
  • Scanner는 사용자가 입력하는 값을 읽어서 처리하기 위한 기능을 제공
  • System.out => 표준출력(모니터로 출력-콘솔에출력)
  • System.in =>표준입력(키보드로 입력)
Scanner ma = new Scanner(System.in);
//Scanner에서 제공되는 메소드 중 키보드로 입력하는 값을 읽기 위한 메소드들은
//스페이스바키나 엔터키가 눌려지기 전에 입력한 단어(값)을 한개만 읽어서 리턴
-> "안녕 자바"하면 안녕만 읽음

System.out.println("단어입력: ");

//next는 스페이스나 엔터 눌리기 전 문자열을 읽기
String val = ma.next();
System.out.println("읽은값: "+val);
		
//double값을 읽기
System.out.println("실수입력: ");
double doubleVal = ma.nextDouble(); 
//변수와 함께 변수유형(?)까지 써줘야함. 그게 자바니까.
System.out.println("읽은값: "+doubleVal);
		
//
System.out.println("정수입력: ");
double intVal = ma.nextInt();
System.out.println("읽은값: "+intVal);

ScannerExam

Scanner를 이용해서 숫자를 입력받고 입력받은 숫자가 홀수인지 짝수인지 출력하세요
[출력형태]
숫자입력:__
입력한 숫자 8은 짝수입니다.
입력한 숫자 7은 홀수입니다.

//사용자입력을 받기 위해 지원되는 자바의 기능을 사용
Scanner key = new Scanner(System.in);
System.out.print("숫자입력: ");//print만하면 엔터안하고 옆으로 나옴<br>이 없는 느낌
int inval = key.nextInt();
//nextInt는 사용자가 입력한 숫자를 읽어서 반환(spacebar나 enter키를 만나기 전까지의 입력한 값)
		
//저장된 값으로 평가 
if(inval%2==0) {
	System.out.println("입력한 숫자 "+inval+"은 짝수입니다.");
	}else {
		System.out.println("입력한 숫자 "+inval+"은 홀수입니다.");
	}

ForTest

package statement;

public class ForTest {
	public static void main(String[] args) {
		System.out.println("시작");
		for(int i=1;i<5;i++) {
			System.out.println("자바프로그래밍");
		}

	}

}

WhileTest

package statement;

public class WhileTest {
	public static void main(String[] args) {
		int count = 1;
		while(true) {
			System.out.println("자바프로그래밍");
			if(count==5) {
				break;
			}
			count++;
		}
		
	}
}
  • while문은 반복문이 종료될 조건을 반드시 내부에 정의해야 한다. true이니 계속 반복실행되는데, 안에 if문으로 5까지 하고 break거는 종료조건을 정의함.

SwitchTest

package statement;

public class SwitchTest {
	public static void main(String[] args) {
		int data=0;
		float data2=10.0f;
		double data3=10.5;
		long data4=10L;
		char data5='A';
		String data6="01";
		
		switch (data) {
			case 0:
				System.out.println("통과");
		}
	}
}
  • switch() 조건식 안에는 변수, 연산식, 메소드호출문의 결과가 "int로 변환될수있는값"(true/false도 불가능)과 String만 사용가능
  • 비교연산자는 사용할 수 없다(이게 js와 차이점)

CalExam_Switch

package statement;

import java.util.Scanner;

public class SwitchCalcExam {
	public static void main(String[] args) {
		 System.out.println("*******미니계산기*******");
		 System.out.println("1.더하기");
		 System.out.println("2.빼기");
		 System.out.println("3.곱하기");
		 System.out.println("4.나누기");
		 System.out.println("5.종료"); 
		 Scanner key = new Scanner(System.in);
		 
		 System.out.print("연산자를 선택하세요.");
		 int what = key.nextInt();
		 System.out.print("숫자를 입력하세요");
		 int num1 = key.nextInt();
		 int num2 = key.nextInt();
		 int result=0;
		 switch(what) {
		 	case 1: 
		 		result= num1+num2;
		 		break;
		 	case 2: 
		 		result= num1-num2;
		 		break;
		 	case 3: 
		 		result= num1*num2;
		 		break;
		 	case 4: 
		 		if(num2==0) {
		 			System.out.println("0으로 나눌 수 없습니다");
		 		}
		 		result= num1/num2;
		 		break;
		 }
		 System.out.print("계산결과=>"+result);
		
	}
}
  • 완성 못한 이유 : switch문인데 break를 안줌, console창에서 엔터를 안눌러서 다음 입력으로 넘어가지 않음.

CalExamUpgrade

package statement;

import java.util.Scanner;

public class SwitchCalcUpgradeExam {
	public static void main(String[] args) {
		//무한루프는 반드시 반복문을 빠져나갈 수 있는 조건을 내부에 명시해야함. 아니면 계속 밖에서 돌게됨
		 while(true){
			 System.out.println("\n"+"\n"+"*******미니계산기*******");
			 System.out.println("1.더하기");
			 System.out.println("2.빼기");
			 System.out.println("3.곱하기");
			 System.out.println("4.나누기");
			 System.out.println("5.종료"); 
			 Scanner key = new Scanner(System.in);
			 
			 System.out.print("연산자를 선택하세요.");
			 int what = key.nextInt();
			 if(what==5) {
				 break;
			 }//switch내에 있는게 아니라서 안도나보다 왜인지 생각해보기
			 
			 //문제가 발생되지 않으면 while문이 실행되지 않도록, 와일문으로 들어오지 못하도록 조건설정)
			 while(what<1 | what>5) {
				
				 System.out.println("연산자 잘못 선택");
				 System.out.println("연산자를 선택하세요.");
				 what = key.nextInt();
			 }
			 
			 
			 
			 System.out.print("숫자를 입력하세요");
			 int num1 = key.nextInt();
			 int num2 = key.nextInt();
			 int result=0;
			 switch(what) {
			 	case 1: 
			 		result= num1+num2;
			 		break;
			 	case 2: 
			 		result= num1-num2;
			 		break;
			 	case 3: 
			 		result= num1*num2;
			 		break;
			 	case 4: 
			 		if(num2==0) {
			 			System.out.println("0으로 나눌 수 없습니다");
			 			continue;
			 		}
			 		result= num1/num2;
			 }
			 System.out.print("계산결과=>"+result);
			 //break를 안줬고, 콘솔에서 엔터를 안눌러서 안넘어감
		 }
	}
}

MultiIfExam

package statement;

import java.util.Scanner;

public class practice {
	public static void main(String[] args) {
		Scanner key = new Scanner(System.in);
		System.out.println("점수입력: ");
		int num = key.nextInt();
		String grade="";
		if(num>100 | num<0) {
			System.out.println("잘못입력");
		}else {
			if(num>=90) {
				grade = "A학점";
			}else if(num>=80) {
				grade = "B학점";
			}else if(num>=70) {
				grade = "C학점";
			}else if(num>=60) {
				grade = "D학점";
			}else {
				grade = "F학점";
			}
			System.out.println("점수 "+num+", "+grade);
		}
	}
}

GuGuExam

package statement;
//for문을 중첩해서 사용하기
public class GuGuExam {
	public static void main(String[] args) {
		for(int i=2;i<=9;i++) {
			if(i==5) {
				break;
			}
			for(int e=1;e<=9;e++) {
				System.out.print(i+"*"+e+"="+(i*e)+"\t");
			}
			System.out.println();
		}
		
		System.out.println("=============================================================");
		
		for(int e=1;e<=9;e++) {
			for(int i=2;i<=9;i++) {
				System.out.print(i+"*"+e+"="+(i*e)+"\t");
			}
			System.out.println();
		}
	}
}

GuGuExam_continue

break와 continue차이

package statement;
//for문을 중첩해서 사용하기
public class GuGuExam_continue {
	public static void main(String[] args) {
		for(int i=2;i<=9;i++) {
			if(i==5) {
				continue;//5단만 스킵됨. 브레이크랑 구분해서 봐야함
			}
			for(int e=1;e<=9;e++) {
				System.out.print(i+"*"+e+"="+(i*e)+"\t");
			}
			System.out.println();
		}
	}
}

본 포스팅은 멀티캠퍼스의 멀티잇 백엔드 개발(Java)의 교육을 수강하고 작성되었습니다.

0개의 댓글