[취준 스토리]
18개의 서류를 난사했다...^^
서합은
대기업1 중견2 공기업1
한 달동안 정말 많이 눈물흘렸지만....겨우 한 달인걸
무기력으로 기회를 놓칠 수 없다.
토요일 시험 화이팅!
😀 변수
[main함수]
public class hello {
public static void main(String[] args){ // 프로그램 시작점 hello 라는 파일을 만듦
System.out.println("hello java");
// println -> 값을 콘솔에 출력하는 기능
// 세미콜론 필수
}
}
[주석]
public class hello2 {
public static void main(String[] args){
/* -> 여러 줄 주석
System.out.println("hello java1");
System.out.println("hello java2");
System.out.println("hello java3");
*/
// System.out.println("hello java1"); -> 한 줄 주석
}
}
[자바란?]
장점
1. 표준 스펙에 맞춰서 개발 되어 있어서, 환경을 변경하여도 상관x
2. 자바가 설치된 모든 os에서 실행할 수 있다. ( os호환성 문제는 자바가 해결해줌 )
3. 자바의 운영체제 독립성 때문에, 환경에 맞추어 자바를 설치하는 것이 가능하다.
[package]
-> 디렉토리
1. 자바 파일을 구분하기 위한 폴더
2. variable라는 패키지를 만들었다면, 해당 패키지에 들어가는 자바 파일 첫 줄에 package variable와 같이 소속된 패키지를 선언해주어야 한다.
3 자바 파일이 위치하는 패키지와 package variable 선언 위치가 같아야 한다.
[변수타입]
package variable;
public class var7 {
public static void main(String[] args) {
int a=100; // 정수
double b= 10.5; // 실수
boolean c=true; //불리언(true, false) 입력가능
char d='A';
String e="hello java"; //문자열을 다루기 위한 특별한 타입
System.out.println(a);
System.out.println(b);
System.out.println(c);
System.out.println(d);
System.out.println(e);
}
}
* 문자열만 문두에 대문자 사용함
package variable;
public class var8 {
public static void main(String[] args) {
byte b = 127; // -128 ~ 127 "2의 8승"
short s = 32767; // -32,768 ~ 32,767 "2의 16승"
int i = 2147483647; // -2,147,483,648 ~ 2,147,483,647 (약 20억) "2의 32승"
long l=9223372036854775807L; // 20억 넘어가면 long 사용 "2의 64승"
float f=10.0f;
double d=10.0;
}
}
타입 지정
1. 정수 리티럴은 int를 기본으로 사용한다. 숫자가 int범위인 약 20억을 넘어가면 L을 붙여서 정수 리터럴을 long으로 변경해야 한다. (대분자 L, 소문자 l 모두 가능하다. 그런데 소문자 l은 숫자 1과 착각할 수 있어서 권장x)
2. 실수 리터럴은 기본이 double을 사용한다. float형을 사용하려면 f를 붙여서 float형으로 지정해야 한다.
long : 8byte int : 4byte float : 4byte double : 8byte boolean : 1byte
byte | 1byte, 표현 길이가 너무 작다. 대신에 파일을 바이트 단위로 다루기 때문에 파일 전송, 파일 복사 등에 주로 사용된다. |
short | 2byte, 표현의 길이가 너무 작다 자바는 기본으로 4byte를 효율적으로 계산하도록 설계되어 있다. |
float | 4byte, 표현 길이와 정밀도가 낮다. 실수형은 double을 사용하자. |
char | 2byte, 문자 하나를 표현할 일은 거의 없음 |
-> 실무에서 거의 사용x
[변수 명명규칙]
낙타 표기법: 변수 이름은 소문자로 시작하는 낙타표기법을 사용한다. 첫 번쨰 단어는 소문자로 시작하고 그 이후 단어는 대문자로 시작하는 낙타 표기법를 사용한다. ex) orderDetail, myAccount
* 대신 클래스는 첫 단어 대문자를 사용함
* 예외
1) 상수는 모두 대문자를 사용하고 언더바로 구분한다(상수는 뒤에서 학습) : USER_LIMIT
2) 패키지는 모두 소문자를 사용한다. : org.spring.boot
[문제와 풀이]
1. 다음 코드에 반복해서 나오는 숫자 4,3을 다른 숫자로 한 번에 변경할 수 있도록 다음을 변수 num1, num2를 사용하도록 변경해보세요.
package variable.ex;
public class VarEx1Question {
public static void main(String[] args) {
int num1=4, num2=3;
System.out.println(num1+num2);
System.out.println(num1-num2);
System.out.println(num1*num2);
}
}
2. long타입의 변수를 선언하고, 그 변수를 백억으로 초기화한 후 출력하는 프로그램을 작성하세요
boolean타입의 변수를 선언하고 그 변수를 true로 초기화한 후 출력하는 프로그램을 작성하세요
package variable.ex;
public class VarEx1Question {
public static void main(String[] args) {
long longVar=10000000000L;
System.out.println(longVar);
boolean booleanVar=true;
System.out.println(boolVar);
}
}
😀 연산자
[산술 연산자]
package Operator;
public class Operator1 {
public static void main(String[] args) {
int a=5;
int b=2;
int sum=a+b;
System.out.println("a+b="+sum); // 띄어쓰기 없이
}
}
0으로 나누는 건 허용x -> arithmeticException
[문자열 연산자]
+ 기호를 사용하여 문자열을 연결할 수 있다.
package Operator;
public class Operator1 {
public static void main(String[] args) {
String result1= "hello" + "world";
System.out.println(result1);
String s1="string1";
String s2="string2";
String result2=s1+s2;
System.out.println(result2);
// 문자열과 숫자 더하기
String result3="a+b="+10; //10을 문자열로 바꾸어 버림
System.out.println(result3);
}
}
[연산자 우선순위]
package Operator;
public class Operator1 {
public static void main(String[] args) {
int sum1=1+2*3;
int sum2=(1+2)*3;
System.out.println("sum1="+sum1);
System.out.println("sum2="+sum2);
}
}
* 암기법
대입 연산자가 우선순위가 제일 낮고 괄호가 제일 높음
1. 괄호()
2. 단항-> 산술 -> shift연산자 -> 비교 -> 등식 -> 비트 -> 논리 -> 삼항 -> 대입
[증감 연산자]
package Operator;
public class Operator1 {
public static void main(String[] args) {
int a=0;
a=a+1;
System.out.println("a= "+a); //1
a=a++; // a의 현재 값을 a에 먼저 대입하고 그 후 a값을 증가시킴
System.out.println("a= " + a);//1
a=++a;
System.out.println("a= " + a); //2
}
}
package Operator;
public class Operator1 {
public static void main(String[] args) {
int a=0, b=0;
b=a++;
System.out.println("b = " + b + " a= " + a);//0,1
}
}
package Operator;
public class Operator1 {
public static void main(String[] args) {
int a=0, b=0;
b=++a;
System.out.println("b = " + b + " a= " + a);//1,1
}
}
-> 전산인적성에 나옴...주의
[비교 연산자]
package Operator;
public class Operator1 {
public static void main(String[] args) {
int a=2;
int b=3;
System.out.println(a==b); // false
System.out.println(a!=b); // true
System.out.println(a>b); // false
System.out.println(a<b); // true
System.out.println(a>=b); // false
System.out.println(a<=b); // true
}
}
☆ 단, 문자열이 같은지 비교할 때는 ==이 아니라 .equals() 메서드를 사용 ☆
package Operator;
public class Operator1 {
public static void main(String[] args) {
String str1="문자열1";
String str2="문자열2";
boolean result1="hello".equals("hello");
boolean result2=str1.equals("문자열1");
boolean result3=str1.equals(str2);
System.out.println(result1); // true
System.out.println(result2); // true
System.out.println(result3); // false
}
}
[논리연산자]
boolean형인 true, false를 비교하는데 사용한다.
&& (그리고) || (또는) ! (부정)
[대입 연산자]
+= -= %= *=
[문제풀이]
1. int형 변수 score가 80점 이상이고, 100점 이하이면 ture를 출력하고, 아니면 false를 출력하세요
package Operator;
public class Operator1 {
public static void main(String[] args) {
int score=80;
boolean result=score>=80&&score<=100;
System.out.println(result);
}
}
😀 조건문
[if~else]
package Operator;
public class Operator1 {
public static void main(String[] args) {
int age=20;
if(age>=18){
System.out.println("성인입니다");
}else{
System.out.println("미성년자입니다.");
}
}
}
[else if]
package Operator;
public class Operator1 {
public static void main(String[] args) {
int age=14;
if (age<=7){
System.out.println("미취학");
}else if(age<=13){
System.out.println("초등학생");
}else if(age<=16){
System.out.println("중학생");
}else if(age<19){
System.out.println("고등학생");
}else{
System.out.println("성인");
}
}
}
[if~else if / if 만 따로]
문제1)
1. 아이템 가격이 만원 이상일때, 1000원 할인
2. 나이가 10살 이하일때, 1000원 할인
-> 중복 할인이 가능한 경우
package Operator;
public class Operator1 {
public static void main(String[] args) {
int item=10000, age=9;
if(item>=10000){
item-=1000;
}
if(age<=10){
item-=1000;
}
System.out.println(item);
}
}
문제2)
1. 아이템 가격이 만원 이상일때, 1000원 할인
2. 나이가 10살 이하일때, 1000원 할인
-> 중복 할인이 불가능한 경우
package Operator;
public class Operator1 {
public static void main(String[] args) {
int item=10000, age=9;
if(item>=10000){
item-=1000;
}else if(age<=10){
item-=1000;
}
System.out.println(item);
}
}
블럭{} 없이 실행하기
package Operator;
public class Operator1 {
public static void main(String[] args) {
if(true)
System.out.println("if문에서 실행됨");
System.out.println("if문에서 실행안됨"); // 블럭없이 수행되는 것과 같음
}
}
[switch]
package Operator;
public class Operator1 {
public static void main(String[] args) {
int grade=2;
int coupon;
if(grade==1){
coupon=1000;
}else if(grade==2){
coupon=2000;
}else if(grade==3){
coupon=3000;
}else{
coupon=500;
}
System.out.println("발급받은 쿠폰" + coupon);
}
}
이 구조와 동일
package Operator;
public class Operator1 {
public static void main(String[] args) {
int grade=2;
int coupon;
switch(grade){
case 1:
coupon=1000;
break;
case 2:
coupon=2000;
break;
case 3:
coupon=3000;
break;
default:
coupon=500;
}
System.out.println("발급받은 쿠폰" + coupon);
}
}
2등급도 3등급처럼 3000원 쿠폰을 준다고 하면?
package Operator;
public class Operator1 {
public static void main(String[] args) {
int grade=2;
int coupon;
switch(grade){
case 1:
coupon=1000;
break;
case 2:
case 3: // 실행 문장이 없어서 다음 문장으로 넘어가게 됨
coupon=3000;
break;
default:
coupon=500;
}
System.out.println("발급받은 쿠폰" + coupon);
}
}
[새로운 switch]
package Operator;
public class Operator1 {
public static void main(String[] args) {
int grade=2;
int coupon=switch(grade){
case 1-> 1000;
case 2-> 2000;
case 3-> 3000;
default -> 500;
};
System.out.println("발급받은 쿠폰 " + coupon);
}
}
[삼항 연산자]
package Operator;
public class Operator1 {
public static void main(String[] args) {
int age=18;
String status=(age>=18)? "성인": "미성년자";
System.out.println("age = " + age + " status = " + status);
}
}
😀 문제풀이
1. 환율 계산하기
package Operator;
public class Operator1 {
public static void main(String[] args) {
int dollar=1300;
int count=0;
if(count<0){
System.out.println("잘못된 금액입니다.");
}else if(count==0){
System.out.println("환전할 금액이 없습니다.");
}else{
System.out.println("환전 금액은 " + count*dollar + "원입니다.");
}
}
}
2. 평점에 따른 영화 추천하기
요청한 평점 이상의 영화를 찾아서 추천하는 프로그램 작성
평점 9 -> 어바웃타임
평점 8 -> 토이 스토리
평점 7 -> 고질라
package Operator;
public class Operator1 {
public static void main(String[] args) {
double rating=7.1;
if(rating<=9){
System.out.println("'어바웃타임'을 추천합니다.");
}
if(rating<=8){
System.out.println("'토이 스토리'을 추천합니다.");
}
if(rating<=7){
System.out.println("'고질라'을 추천합니다.");
}
}
}
3. switch문 사용하여 학점 성취도 출력하기
string grade라는 문자열을 만들고, 학점에 따라서 성취도를 출력하는 프로그램 작성하기
package Operator;
public class Operator1 {
public static void main(String[] args) {
String grade="A";
switch (grade){
case "A":
System.out.println("grade: " + grade);
System.out.println("탁월한 성과입니다!");
break;
case "B":
System.out.println("grade: " + grade);
System.out.println("좋은 성과입니다!");
break;
case "C":
System.out.println("grade: " + grade);
System.out.println("준수한 성과입니다!");
break;
case "D":
System.out.println("grade: " + grade);
System.out.println("향상이 필요합니다.");
break;
case "F":
System.out.println("grade: " + grade);
System.out.println("불합격입니다.");
break;
default:
System.out.println("잘못된 학점입니다.");
}
}
}
4. 더 큰 숫자 찾기
a의 값은 10이고, b의 값은 20이다. 삼항 연산자를 사용하여 두 숫자 중 더 큰 숫자를 출력하는 코드를 작성하자
package Operator;
public class Operator1 {
public static void main(String[] args) {
int a=10, b=20;
int result=(a>b)? a:b;
System.out.println("더 큰 숫자는? " + result);
}
}
5. 홀수 짝수 찾기
정수x 가 주어지면 x가 짝수이면 "짝수"를, x가 홀수이면 "홀수"를 출력하는 프로그램을 ㅈ가성하자.
삼항연산자를 사용
package Operator;
public class Operator1 {
public static void main(String[] args) {
int x=10;
String result=(x%2==0)? "짝수":"홀수";
System.out.println(result);
}
}
😀 반복문
[do-while]
package Operator;
public class Operator1 {
public static void main(String[] args) {
int i=10;
do{ //do문은 최초 한 번 실행하고 조건을 검사
System.out.println("현재 숫자는:"+ i);
i++;
}while(i<3);
}
[break, continue]
문제: 1부터 시작해서 숫자를 계속 누적해서 더하다가 합계가 10보다 처음으로 큰 값은 얼마인가?
package Operator;
public class Operator1 {
public static void main(String[] args) {
int i=1, sum=0;
while(true){
sum+=i;
if(sum>10){
System.out.println("합이 10보다 크면 종료: i="+i+"sum="+sum);
break;
}
i++;
}
}
}
문제2: 1~5까지 숫자를 출력하는데, 숫자가 3일때는 출력을 건너뛰어야 한다.
package Operator;
public class Operator1 {
public static void main(String[] args) {
int i=1;
while(i<=5){
if(i==3){
i++;
continue;}
System.out.println(i);
i++;
}
}
}
😀 문제 풀이
1. 반복문을 사용하여 처음 10개의 짝수를 출력하는 프로그램을 작성하라.
이때 num이라는 변수를 사용하여 수를 표현
while, for문 두 가지 버전의 정답을 만들어야 한다.
package Operator;
public class Operator1 {
public static void main(String[] args) {
int i=1;
while(i<=20){
if(i%2==1){
i++;
continue;
}
System.out.println(i);
i++;
}
}
}
package Operator;
public class Operator1 {
public static void main(String[] args) {
for(int i=0; i<=20; i+=2){
if(i==0){
continue;
}
System.out.println(i);
}
}
}
2. 누적 합 계산
반복문을 사용하여 1부터 max까지 합을 계산하고 출력하는 프로그램을 작성하라.
이때, sum이라는 변수를 사용하여 누적 합을 표현하고, i라는 변수를 사용하여 카운트를 수행해야 한다.
while문, for문 2가지 버전으 정답을 만들어라.
package Operator;
public class Operator1 {
public static void main(String[] args) {
int i=0, max=100, sum=0;
while(i<=max){
sum+=i;
i++;
}
System.out.println(sum);
}
}
public class Operator1 {
public static void main(String[] args) {
int i, max=100, sum=0;
for(i=0; i<=max; i++){
sum+=i;
}
System.out.println(sum);
}
}
3. 피라미드 출력
int rows를 선언하라.
package Operator;
public class Operator1 {
public static void main(String[] args) {
int rows=5;
for(int i=1; i<=rows; i++){
for(int j=0; j<i; j++){
System.out.print("*");
}
System.out.println();
}
}
}