한 줄만 처리하는 주석문
//가 앞에 명시된 라인은 주석으로 인식
여러 줄을 처리하는 주석문
/*
이블록 안에서는 여러 라인을 주석으로 처리할수있다.
*/
+모든 변수는 컴퓨터의 메모리 영역에 생성된다.
+일반적으로 메모리란, PC에 서리하는 RAM을 의미한다.
변수를 사용하는 방법은 "선언"과 "할당"의 두 영역으로 구분된다.
변수의 선언
-> 선언은 데이터형과 사용하고자 하는 변수의 이름을 정한 수, 세이콜론(;)으로 한 라인을 종료
ex)
데이터형 변수이름;
int num;
(정수) -> 1,4, 100가능 // 0.5불가 (소수점불가능)
-> 선언된 변수에 원하는 값을 대입하는 과정
-> 값의 대입은 대입연산자(=)를 사용하여
우변에서 좌변으로 대입된다.
변수이름 = 값;
num = 100;
(num라는 그릇에 100을 담는다)
// 변수의 선언 int num1; // 변수의 할당 num1 = 100; System.out.println(num1); // 100 변수는 ""를 찍지않는다 System.out.println("num1"); // num1 문자열이 아니기 때문
데이터형 변수이름 = 값;
int num2 = 200;
-> 문자열 + 문자열 : 두문장을 하나로 합쳐준다
String language = "JA" + "VA";
->"JAVA"
int age = 20;
String name = "자바학생";
String result = name + age;
-> "자바학생" +20
-> "자바학생20"
-> 변수이름은 영문,숫자, "_", "$"만 사용가능하다
-> 변수 이름은 첫 글자는 숫자로 시작될 수 없다.
-> 대/소문자를 엄격하게 구분, 오타에 주의해야한다
-> 자바에서 사용하는 예약어(키워드)를 사용할 수 없다.
->클래스 이름의 명명규칙도 변수 이름의 규칙과 동일하다.
long, float, double은 다른 데이터형과의 구별을 위해 값 뒤에 데이터 형의 첫 글자를 접미사로 가질 수 있다.
접미사는 대/소문자를 가리지 않지만 가급적 대문자로 사용하는 것이 좋다.
long money = 50000000000L;
float PI = 3.14F;
double lat = 128.32452D;
boolean은 true(참), false(거짓)중의 한 가지만 갖는다.
boolean user = true;
boelean isJapanes = false;
char는 홑따옴표(")로 감싸진 한 글자만 대입할 수 있다.
char first = '곽';
생성된 변수는 다른 변수에 대입될 수 있다.
int num1 = 100;
int num2 = num1;
int num1 = 100;
num1 = 200; // 재할당 가능
int num1 = 300; // 불가능
(내용은 바뀔수있지만, 그릇이달라질순없다)
반복하여 다른 값이할당될 수 잇지만, 선언은 중복 불가
선언되지 않은 변수는 사용할 수 없다.
int num1 = 100;
num1 = 200;
num2 = 300; // 그릇이없다 ( 선언을 안함)
값이 대입되지 않은 변수는 다른 변수에 대입하거나 출력할 수 없다.
int num1;
int num2; = num1; // 에러 할당되지않은 변수
System.out.printli(num1); // 에러
변수와 마찬가지로 메모리상에 존재하지만, 값이 변경될 수 없는 데이터
final 키워드를 사용하여 선언된 변수는 상수로 생성된다.
final int age = 20;
final long money = 12000000L;
final float pi = 3.14F;
메모리상에 이름이 생성되므로 접근은 가능하지만, 할당한 값을
변경할 수는 없다.(읽기전용)
final int AGE = 20;
AGE = 21; // 에러
상수는 대문자로 표현하는 암묵적인 약속.
public class Main03 { public static void main(String[] args) { // 일반변수 int width = 100; // 상수 final double PI = 3.14D; System.out.println("width : " + width); // width : 1000 System.out.println("PI : " + PI); // PI : 3.14 // 값의 변경 width =200; System.out.println("width = " + width); // width = 200 // 이 라인은 상수이기 때문에 에러가 발생 // PI = 3.141582d; System.out.println("PI : "+ PI); // PI : 3.14 } }
더하기(+). 빼기(-), 곱하기(*), 나눗셈의 몫(/), 나머지(%)
10나누기 3을 계산할 때,
수학에서는 몫이 3, 나머지 1이라고 계산이 된다.
10/3 -> 나눗셈의 몫만을 취하여 결과값은 "3"
10 % 3 - > 나눗셈의 나머지만을 취하여 결과값은 1 이 된다.
모든 수는 0 으로 나눌 수가 없다.
변수에 대한 연산 결과를 다시 자기 자신에게 적용하는 경우 사용
다시 자기 자신에게 대입하고자 하는 경우의 약식 표현이다.
int x = 100;
x = x + 5;
--------------------------------------------
int x = 100;
x + = 5;
단항 연산자는 모든 사칙 연산자에 표현 가능하다.
+=, -=, *=, /=, %=
public static void main(String[] args) { int source = 100; // 단항 연산자 source += 100; // source = source + 100; 200 System.out.println(source); source -= 50; // source = source - 50 ; 150 System.out.println(source); source *= 2; // source = source * 2 ; 300 System.out.println(source); source /= 100; // source = source / 100; 3 System.out.println(source); source %= 2; // source = source % 2; 1 System.out.println(source); } }
특정 변수에 저장되어 있는 값을 1씩 증가, 감소 시킬 경우 사용
단항 연산자로 표현할 수 있는 식에서 계산 대상 값이 1인 경우,
덧셈과 뺄셈에 대해서는 다시 한번 축약할 수 있다.
덧셈의 경우
x = x +1;
x + = 1;
x++; 증감연산자
++x; 증감연산자
뺄셈의 경우
x = x -1;
x - =1;
x--; 증감연산자
--x; 증감연산자
x++ 와 ++x의 차이
-> 증감 연산자는 그 자체가 다른 연산식의 피연산자로
사용될 수 있다. 이 때, 증감연산자의 표시 위치에 따라
결과가 서로 다르게 적용된다.
x++ 경우
-> 증감연산자가 뒤에 표시되는 경우, 현재 x의 값을
먼저 수식에 적용하고, 나중에 x에 대한 1증가 처리를 한다.
int a = 100;
int x = 1;
int y = a + x++;
// 100+1
System.out.println(y); // y:101 x:2
++x 경우
-> 증감연산자가 앞에 표시된 경우 먼저 현재 x의값을
1증가 시킨 후, 그결과를 수식에 적용한다.
int a = 100;
int x = 1;
int y = a + ++x;
100 + 2
System.out.println(y); // y: 102, X:2
public class Main03 { // 증감연산자 public static void main(String[] args) { int plus_num = 1; plus_num = plus_num + 1; plus_num += 1; plus_num ++; //증감연산자 ++plus_num ; //증감연산자 System.out.println(plus_num); int minus_num = 5; minus_num = minus_num - 1; minus_num -= 1; minus_num --; //증감연산자 --minus_num; //증감연산자 System.out.println(minus_num);
두 개의 변수값 간의 관계를 비교하여 참(true)이나 거짓(false)의 결과를 반환한다
같다 ==
다르다 != // 느낌표 부정의 의미
초과 >
이상 >=
미만 <
이하 <=
주어진 식이 참인지 거짓인지 판별 가능하므로, 연산결과는
boolean 값으로 생성된다.
int x =100;
int y = 1;
boolean r = x 비교연산자 y;
public class Main5 { public static void main(String[] args) { int num1 = 123; int num2 = 456; // 비교 연산에 대한 결과는 boolean boolean result1 = num1 == num2; System.out.println(result1); // != 같지않다 boolean result2 = num1 != num2; System.out.println(result2); // > 크다 boolean result3 = num1 > num2; System.out.println(result3); // <= 작거나 같다 boolean result4 = num1 <= num2; System.out.println(result4);
좌변과 우변을 논리 연산하고, 참일때는 true, 거짓일때는 false 값을 반환한다
두개 이상의 비교 연산자의 결과나 boolean 값에 대해
추가로 "AND"나 "OR" 연산을 수행하여 결과를 얻는다.
AND의 의미를 갖는 &&
-> "&" 연산자 두개의 boolean값을 비교하여
모두 true인 경우에만 결과값이 true
-OR의 의미를 같는 ||
-> || 연산자는 두개의 boolean값을 비교하여
둘중 하나라도 true인 경우 결과값 true 이다.
public class Main06 { // 논리 연산자 public static void main(String[] args) { int a = 100; int b = 200; int x = 5; int y = 3; // ||는 OR의 의미를 가짐 boolean result1 = a != b || a == b; // t || f System.out.println(result1); boolean result2 = a < b || x > y ; // t System.out.println(result2); boolean result3 = a < b || x < y; // t System.out.println(result3); boolean result4 = a > b || x > y; // t System.out.println(result4); boolean result5 = a > b || x < y; // f System.out.println(result5);
변수의 자료형이 변환되는 것을 의미한다.
특정 자료형의값을 다른 자료형의 변수에 대입할 수 있다.
암묵적 형변환과 명시적 형변환의 두 종류가 있다.
암묵적 형변환은 서로 다른 자료형을 연산 혹은 대입하는 경우,
java 컴파일러가 자료형을 통일한다.
이 과정에서 발생하는 형변환을 암묵적 형변환이라고 한다.
int a = 100; // 정수형
float b = a; // 정수형을 실수형에 대입
암묵적 형변환은 어떤 변수가 더 큰 범위의 변수로 대입 가능함을
의미한다.
데이터의 손실을 감수하더라도, 강제로 형변환 시키는 형태
자료형 b = (변환할자료형)a;
실수형을 정수형으로 변환하는 경우, 소수점 이하 자리는 버려진다.
double a = 3.14d;
int b = (int)a; // 3