1) 변수 밑 노란줄은 사용되지 않았단 의미
2) ""와+를 통해 변수와 문자열의 조합을 만들어 낼 수 있음
3) 문자열은 강함 문자열과 만나면 문자열 화 됨
package com.kh.variable;
public class TestVarExam {
public static void main(String[] args) {
// 자료형별 변수를 만들고 -> int num...
// 초기화 한 후 -> num=1...
// 그 값을 출력 -> Sys..
int iNum = 100;
long lNum = 999900000000l;
float fNum = 486.520f;
double dNum = 567.890123;
char cWord = 'A';
String sHello = "Hello world";
boolean bBool = true;
short sNum = 11; // 변수밑 노란줄은 변수를 사용하지 않았다는 의미
System.out.println("정수의 값 : " + iNum);
System.out.println("정수의 값(9999억) : " + lNum);
System.out.println("실수의 값 : " + fNum);
System.out.println("실수의 값 : " + dNum);
System.out.println("문자 : " + cWord);
System.out.println("문자열 : " + sHello);
System.out.println("논리 : " + bBool);
//문자열은 강하다 문자열을 만나면 문자열이 되어벌임
System.out.println('A' + 's'); // 문자+문자 -> 문자가 아스키코드에 따라 숫자합으로 바껴서 나옴
System.out.println("1" + "1");
System.out.println("Hello" + 'y'); // 문자열 + 아스키숫자?xx 문자열화 됨
System.out.println("Hello" + 10); // Hello10?
System.out.println(10 + "Hello"); //10Hello?
System.out.println(10+ "Hello" + 10); //10Hello10?
System.out.println(10+(20+"Hello")); //1020Hello
System.out.println("Hello" + 10 + 20); //Hello10-> 이미 문자열 + 20->Hello1020
}
}
final int AGE = 20;
상수선언 예약어를 써 줌으로써 다른값을 대입할 수 없도록 해줌
int i = 100;
100 이 리터럴 변수에 대입되는 값 자체를 말함
!는 not을 의미 -> !true -> false !!true -> true
++는 1증가 --는 1감소
일반대입연산자
a++후위연산은 나중에 계산
++a전위연산은 먼저 계산
a=1
a=a+1 ->a++;
b=a==
전위연산
후위연산
a=10 b=20 c=30 일때 다음연산 값은?
a++; a=11,b=20,c=30
b=(--a)+b; b=30,a=10,c=30
c=(a++)+(--b); a=11-> 후위연산이라 괄호가 있음에도 나중에 계산이 됨,b=29 얘는 전위연산이라 먼저 계산,c=39
그래서 10+29 먼저 계산
flag를 true초기화하고 다음연산 수행하라
!!!!flag
x=100,y=33,z=0 초기화 다음 연산 수행후 xyz 출력
x--;
z=x-- + --y;
x=99 + x++ + x;
y=y-- + y+ ++y;
x=99
z= 99+22 121, y=32, x=98
x= 99+98+99(후위연산진행됨) =296 ->x끼리 만나니까 만나는 지점에서 후위연산도 진행됨
y= 32+31(후위연산진행됨)+32 = 95
package com.kh.operator;
public class Exam_Unary {
public static void main(String[] args) {
//1번문제 a=10,b=20,c=30
int a=10;
int b=20;
int c=30;
System.out.println("1번문제");
System.out.println("a++;");
System.out.println("b = (--a) +b;");
System.out.println("c = (a++) + (--b);");
a++;
b = (--a) + b;
c = (a++) + (--b);
System.out.println("a의 값 : " + a);
System.out.println("b의 값 : " + b);
System.out.println("c의 값 : " + c);
System.out.println();
System.out.println("2번 문제");
boolean flag = true;
System.out.println("결과값 : " + !!!!flag);
System.out.println();
System.out.println("3번 문제");
int x=100;
int y=33;
int z=0;
x--;
z= x-- + --y;
x= 99+ x++ + x;
y= y-- + y + ++y;
System.out.println("x의 값" + x);
System.out.println("y의 값" + y);
System.out.println("z의 값" + z);
}
}
package com.kh.operator;
public class Exam_Comparison {
public static void main(String[] args) {
System.out.println("비교연산자 예제");
//비교연산자 : 두값을 비교하는 연산자, 관계연산자
// 비교연산자는 조건을 만족하면 true 아니면 false를 반환함.
int a=50;
int b=30;
boolean result = a < b;
System.out.println("(a<b)의 결과 : " + result);
result = a>b;
System.out.println("(a>b)의 결과 : " + result);
result = a==b; // a와b가 같으면 true
System.out.println("(a==b)의 결과 : " + result);
result = (a != b);// a와b가 다르면 -> true
System.out.println("(a != b)의 결과 : " +result); //같으면 false
// 짝수 홀수 판별 프로그램
int num = 2;
result = (num / 2 == 1);
System.out.println("짝수인가 : "+ result);
예제1. 50, 30을 입력받아 다음과 같은 식을 작성 하였을때 결과값을
예상해보고 출력해보자.
a!=b && a<b
a<b || a==b
a>b && a!=b
a>b || a==b
package com.kh.operator;
public class Exam_Logical {
public static void main(String[] args) {
System.out.println("논리 연산자 예제");
int a= 50;
int b= 30;
boolean result1,result2,result3,result4;
result1 = (a != b) && (a < b); // && = and
result2 = (a < b) || (a == b); // || = or
result3 = (a > b) && (a != b);
result4 = (a > b) || (a == b);
System.out.println("result1 : " + result1);
System.out.println("result2 : " + result2);
System.out.println("result3 : " + result3);
System.out.println("result4 : " + result4);
System.out.println("논리 연산자 예제2");
}
}
예제 2. 70, 55을 a,b로 입력받아 다음과 같은 식을 작성 하였을때
결과값을 예상해보고 출력해보자.
a==b || a++<100
a<b && --b <55
a!=b && b-- < a++
a++ != b || b++ >=85
a=?
b=?
package com.kh.operator;
public class Exam_Logical {
public static void main(String[] args) {
System.out.println("논리 연산자 예제");
int a= 50;
int b= 30;
boolean result1,result2,result3,result4;
System.out.println("논리 연산자 예제2");
int aNum = 70;
int bNum = 55;
result1 = (aNum == bNum) || (aNum++ < 100); //or 앞에가 true면 뒤에 계산 안함 aNum = 71, bNum = 55
result2 = (aNum < bNum) && (--bNum < 55); //and가 앞에가 false면 뒤에 계산안함 aNum = 71, bNum = 55
result3 = (aNum != bNum) && (bNum-- < aNum++); // aNum = 72, bNum = 54
result4 = (aNum++ != bNum)|| (bNum++ >= 85); //or 앞에가 true면 뒤에 계산 안함 aNum = 73, bNum = 54
System.out.println("result1 : " + result1);
System.out.println("result2 : " + result2);
System.out.println("result3 : " + result3);
System.out.println("result4 : "+ result4);
System.out.println("a의 값 : " + aNum + ",b의 값 : " +bNum);
}
}
조건식을 이용하여 결과값에 따라 연산을 처리하는 방식 if와 유사
조건식 (true일때 실행코드) : (false일때 실행코드)
package com.kh.operator;
public class Exam_Triple {
public static void main(String[] args) {
/*
* 삼항연산자
* 항목이3개
* (조건식) ? 참일때 : 거짓일때
* - 조건식은 반드시 true or false
* - 비교/논리연산자 주로 사용
*
*/
int num = 99;
// +, -, *, /, %(나머지연산자)
// 4 / 2 == 2(몫)
// 4 % 2 == 0(나머지)
String resultStr;
resultStr = num % 2 == 0 ? "짝수" : "홀수";
System.out.println(num + "은/는 " + resultStr + "입니다.");
}
}
세개의 정수를 입력받아 아래의 연산을 하면 결과가
어떻게 될지 생각해보고 출력하세요.
입력 a=10, b=20, c=30
a+=20;
b*=3;
c/=4;
a%=b;
c-=a;
a=a+20=30
b=b*3=60
c=c/4=7
a%=a%b=30
c=7-30=-23
괄호의 우선순위가 제일 높다.
산술 연산자 > 비교 연산자 > 논리 연산자 > 대입 연산자
package com.kh.exscanner;
import java.util.Scanner;
public class TestScanner {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);// Scanner 클래스가 있는데
// TestScanner에서 사용할거야
System.out.print("int 값을 입력해 주세요 : "); //println은 한줄띄고 시행 print는 바로옆에 실행
int input1 = sc.nextInt();
System.out.print("int 두번째 값을 입력해 주세요 : ");
int input2 = sc.nextInt();
System.out.println("input1 : " + input1 );
System.out.println("input2 : " + input2 );
int result = input1 + input2;
System.out.println("두값의 합은 : " + result + "입니다.");
sc.close();
// System.out.print("이름을 입력해 주세요 : ");
// String strA = sc.next();
//
// System.out.println();
//
}
}
package com.kh.exscanner;
import java.util.Scanner;
public class TestScanner2 {
public static void main(String[] agrs) {
// 입력받은 것 중에서 정수를 입력 받았습니다.
// 실수 문자 문자열
Scanner sc= new Scanner(System.in);
System.out.print("정수를 입력해 주세요 : ");
int iNum = sc.nextInt();
System.out.print("실수를 입력해 주세요 : ");
double dNum = sc.nextDouble();
System.out.print("문자열을 입력해 주세요 : ");
String inputStr = sc.next(); //next는 공백 안받고 nextline은 공백도 받는다
System.out.print("문자를 입력해 주세요 : ");
char inputChar = sc.next().charAt(0); //nextchar은 없고 charAt로 맨 앞문자 잘라서 보여줌
System.out.println("입력한 정수는 : " + iNum);
System.out.println("입력한 실수는 : " + dNum);
System.out.println("입력한 문자열은 : " + inputStr);
System.out.println("입력한 문자열은 : " + inputChar);
}
}
package com.kh.exscanner;
import java.util.Scanner;
public class TextScanner3 {
public static void main(String[] args) {
// 이름을 입력해주세요.
// 민봉식
// 태어난 월을 입력해주세요.
// 9
// 키를 입력해주세요.
// 180
// 성별을 입력해주세요.
// 남
// 주소를 입력해주세요.
// 서울시 종로구
// 이름은 민봉식입니다.
// 태어난 월은 9입니다.
// 키는 180.0입니다.
// 성별은남입니다.
// 주소는 서울시 종로구입니다.
Scanner sc = new Scanner(System.in);
System.out.print("이름을 입력해주세요. : " );
String sName = sc.next();
System.out.print("태어난 월을 입력해 주세요 : ");
int iMonth = sc.nextInt();
System.out.print("키를 입력해주세요 : ");
double dTall = sc.nextDouble();
System.out.print("성별을 입력해 주세요 : ");
char cSex = sc.next().charAt(0);
System.out.print("주소를 입력해 주세요 : ");
sc.nextLine();
// 성별에서 엔터치는것을 공백으로받아서 그걸 출력하기때문에
// 앞에 엔터를 받아줄 nextLine을 한번더 써준다
String sAdr = sc.nextLine();
// next와 nextline의 차이는 둘다 문자열 받음
// nextLine은 공백을 입력 받음
System.out.println();
System.out.println("주소는 : " + sAdr);
System.out.println("이름은 " + sName + "입니다.");
System.out.println("태어난 월은 " + iMonth+ "월 입니다");
System.out.println("키는" + dTall + "입니다.");
System.out.println("성별은" + cSex+"입니다.");
System.out.println("주소는 "+ sAdr+ "입니다.");
}
}
클래스 선택 후 F2누르면 이름변경
// 입력한 문자 값이 대문자인지 확인하여 결과 출력하기
// 문자 하나 입력해주세요 : a
// 영어 대문자 확인 : false
// 문자 하나 입력해주세요 : A
// 영어 대문자 확인 : true
package com.kh.exercise;
import java.util.Scanner;
public class Exercise_Logical2 {
// 입력한 문자 값이 대문자인지 확인하여 결과 출력하기
// 문자 하나 입력해주세요 : a
// 영어 대문자 확인 : false
// 문자 하나 입력해주세요 : A
// 영어 대문자 확인 : true
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("문자 하나 입력해 주세요 : ");
char input1 = sc.next().charAt(0);
System.out.println("영어 대문자 확인 : " + Character.isUpperCase(input1));
// System.out.print("문자 하나 입력해 주세요 : ");
// char input2 = sc.next().charAt(0);
// System.out.println("영어 대문자 확인 : " + Character.isUpperCase(input2));
// Character.isUpperCase() 문자가 대문자인지 소문자인지 확인하는class
// 아스키코드 사용하여 풀이
// 65~90 -> 대문자 97~122 -> 소문자
System.out.print("문자 하나 입력해 주세요 : ");
char input3 = sc.next().charAt(0);
String a;
a = input3 <= 90 ? "true" : "false";
System.out.println("영어 대문자 확인 : " + a);
}
}
// 입력한 정수값이 1 ~ 100 사이의 숫자인지 확인하시오 // 정수를 하나 입력해주세요 : 33 // 1부터 100사이의 숫자인가? : true
package com.kh.exercise;
import java.util.Scanner;
public class Exercise_Logical1 {
// 입력한 정수값이 1 ~ 100 사이의 숫자인지 확인하시오
// 정수를 하나 입력해주세요 : 33
// 1부터 100사이의 숫자인가? : true
public static void main(String[] agrs) {
Scanner sc= new Scanner(System.in);
System.out.print("정수를 하나 입력해 주세요 : ");
int iCheck = sc.nextInt();
String result1;
result1 = iCheck <= 100 && iCheck >= 1 ? "true" : "false";
System.out.println("정수를 하나 입력해 주세요 : " + iCheck);
System.out.println("1부터 100사이의 숫자인가? : " + result1);
boolean isTrue = (iCheck > 1) && (iCheck < 100);
// 불리안은 삼항연산보단 리터럴가능
// 리터럴은 변수에 대입되는 값 자체를 의미
System.out.println("1부터 100사이의 숫자인가? : " + isTrue);
}
}
// 입력받은 정수가 양수, 0, 음수인지 판별 후 출력하세요.. // 너무 어려우면 양수, 음수 판별부터 해보세요 // 정수를 입력해주세요 : -1 // -1은/는 음수입니다.
// 정수를 입력해주세요 : 1
// 1은/는 양수입니다.
// 정수를 입력해주세요 : 0
// 0은/는 0입니다.
package com.kh.exercise;
import java.util.Scanner;
public class Exercise_Triple1 {
public static void main(String[] args) {
// 입력받은 정수가 양수, 0, 음수인지 판별 후 출력하세요..
// 너무 어려우면 양수, 음수 판별부터 해보세요
// 정수를 입력해주세요 : -1
// -1은/는 음수입니다.
// 정수를 입력해주세요 : 1
// 1은/는 양수입니다.
// 정수를 입력해주세요 : 0
// 0은/는 0입니다.
Scanner sc = new Scanner(System.in);
System.out.print("정수를 입력해 주세요 : ");
int input1 = sc.nextInt();
String result = input1 < 0 ? " 음수입니다" : (input1 == 0 ? " 0입니다" : " 양수입니다");
System.out.println(input1 + "은/는" + result);
//삼항연산자 중첩 뒤에 ()는 뺴도됨
}
}
// 두 수와 '+' 또는 '-'를 입력받아 알맞은 계산 결과 출력하기 // 단, '+', '-' 이외의 연산자 입력시 "잘못입력하셨습니다!" 출력
// 첫번째 수 : 6
// 두번째 수 : 12
// 연산자 입력(+ or -) : +
// 결과 : 18
// 첫번째 수 : 6
// 두번째 수 : 12
// 연산자 입력(+ or -) : -
// 결과 : -6
package com.kh.exercise;
import java.util.Scanner;
public class Exercise_Triple2 {
public static void main(String[] args) {
// 두 수와 '+' 또는 '-'를 입력받아 알맞은 계산 결과 출력하기
// 단, '+', '-' 이외의 연산자 입력시 "잘못입력하셨습니다!" 출력
// 첫번째 수 : 6
// 두번째 수 : 12
// 연산자 입력(+ or -) : +
// 결과 : 18
// 첫번째 수 : 6
// 두번째 수 : 12
// 연산자 입력(+ or -) : -
// 결과 : -6
Scanner sc = new Scanner(System.in);
System.out.print("첫번째 수를 입력하세요 : ");
int input1 = sc.nextInt();
System.out.print("두번째 수를 입력하세요 : ");
int input2 = sc.nextInt();
System.out.print("연산자를 입력하세요 : ");
char input3 = sc.next().charAt(0);
int a = (input1+input2);
String result = (input3 == '+') ? (input1+input2+"") : (input3 == '-') ? String.valueOf(input1-input2) : "잘못입력하셨습니다!";
// 형변환 문자열은 강하다 int+int+""으로 문자열화 해준다 wow
// Integer.toString(int)
// String.valueOf(int)
System.out.println("결과 : " + result);
}
}
//강제형변환 int ->char
package com.kh.exercise;
import java.util.Scanner;
public class Exercise_Typetrans1 {
public static void main(String[] args) {
Scanner sc =new Scanner(System.in);
System.out.print("숫자 하나 입력해 주세요 : ");
int input = sc.nextInt();
System.out.println("문자로 변환 : " + (char)input); //강제형변환 int ->char
}
}
//강제형변환 int->double
package com.kh.exercise;
public class Exercise_Typetrans2 {
public static void main(String [] args) {
int iNum1 = 3;
double iNum2 = 2.2;//자동형변환 작은놈이 큰놈으로 바뀜
double result = iNum1 + iNum2;
int result2 = (int)(iNum1 + iNum2); // 뒤를 강제변환
System.out.println(result);
System.out.println((int)result); //강제형변환 5.2-?5
}
}