* bit
- 정보의 최소 단위
- 0 또는 1
* byte
- 영문자
- 1byte = 8bit
기계어 2진수 10진수로 변환 ASCii(아스키코드)
'A' ------------- 0100 0001 ------------- 65 ★
'B ------------- 0100 0010 ------------- 66
'a' ------------- 0110 0001 ------------- 97 ★
5 ------------- 0000 0101 -------------- 5
0 ------------- 0000 0000 ------------- 0
'0' ------------- 0011 0000 ------------- 48 ★
'5' ------------- 0011 0101 ------------- 53
★ 외우기
5 + 3 = 8
'5' + 3 = 56
"5" + 3 = "53" -> 여기서 +는 결합으로 작용
'A'(65) -----------> 'a'(97) 0(0) -------------> '0'(48)
'B'(66) -----------> 'b'(98) 1(1) -------------> '1'(49)
+32 +48
parseInt()
String타입의 숫자를 int타입으로 변환해주는 역할
parseInt()의 함수 Integer 클래스의 static 함수이므로 사용할 때 Integer.ParseInt() 이렇게 사용하면 됨.
parseDouble()
위와 동일
HelloTest.java
package basic;
public class HelloTest {
public static void main(String[] args) {
System.out.println("안녕하세요");
System.out.println();
System.out.println('A' + 32);
System.out.println((char)('A' + 32)); //강제형변환. Cast 연산
System.out.println();
System.out.println(2 + 3);
System.out.println('2' + '3'); //101
//결과가 5가 나오도록 하시오.
System.out.println('2'-48 + '3'-48); //5
System.out.println("2" + "3"); //23
//결과가 5가 나오도록 하시오.
System.out.println(Integer.parseInt("2") + Integer.parseInt("3"));
System.out.println();
System.out.println("12.5" + "36.8");
//결과가 49.3가 나오도록 하시오.
System.out.println(Double.parseDouble("12.5") + Double.parseDouble("36.8"));
}
}
안녕하세요
97
a
5
101
5
23
5
12.536.8
49.3
* 상수 (Constant) - 변하지 않는 값(고정)
- 숫자 상수 : 25, -100
- 문자 상수 : '2', 'A', '목'
* '문자' - 1개
* "문자열" - 1개 이상 - 주소
* 변수 - 변하는 값
- 데이터를 저장하는 곳
* 변수명
: 영문자, 숫자(0~9), _ , $를 섞어서 사용가능
: 첫 글자는 소문자로 기술한다.
: 단어가 바뀌면 첫 글자를 대문자로 사용
자료형의 종류
1. 기본형
* 논리형 - boolean (1bit) - true(참). false(거짓) ★
* 문자형 - char (2byte - 16bit) 0 ~ 65535 ★
* 정수형 - byte (1byte - 8bit) -128 ~ +127 -> 방 크기에 따라
short (2byte - 16bit) -32,768 ~ +32,767
int (4byte - 32bit) ★
long (8byte - 64bit)
* 실수형 - float (4byte)
double (8byte) ★
2. 객체형
- 모든 클래스는 new 생성해서 써야한다.
다만 static인 경우에는 new하지 않아도 된다.
Variable.java
package basic;
public class Variable {
public static void main(String[] args) {
boolean a = 25 > 36; //(= -> 대입)
System.out.println(a); //false
System.out.println();
char b = 'A';
System.out.println(b); //A
System.out.println();
char c = 65;
System.out.println(c); //A
System.out.println();
//byte d = 300; - error
int e = 65;
System.out.println(e); //65
System.out.println();
int f = 'A';
System.out.println(f); //65
System.out.println();
long g = 25L; //long형 상수
System.out.println(g);
System.out.println();
//float h = 43.8; - error double로 인식
//첫 번째
//float h = 43.8f; //float형 상수
//두 번째 - 많이 씀
float h = (float)43.8; //Casting(강제형변환)
System.out.println(h);
}
}
false
A
A
65
65
25
43.8
Variable2.java
package basic;
public class Variable2 {
int a; //필드 클래스 소속, 이미 초기화 되어있음(0) =>static 아닌거
// => 요구에의해 그때그때 만든거 그러므로 new 이용해서 만들어주세요 해야함.
static int b; // 필드, 이미 초기화 되어있음. => 미리 만들어놓은거
// 어디 소속인지만 밝히면 바로 쓸 수 있음
static String c; // 클래스 타입의 초기값은 null / String 타입만 new 안 써도 됨. 유별남.
// c = "apple"; - error 모든 명령어들은 함수 안으로 들어가야 함.
// 클래스 쪽에 쓰는 것은 선언만 됨.
public static void main(String[] args) {
int a = 100; // local variable (지역변수),
// 쓰레기 값 들어가기때문에 반드시 초기화 해야함.
System.out.println(a);
//int = a; -- error 이미 있기 때문 중복.
System.out.println("필드 a = " + new Variable2().a); // 요청해야함
//System.out.println("필드 b = " + b); //미리 만들어놓은 것
System.out.println("필드 b = " + Variable2.b); //위에랑 같음
//c = "apple"; // 리터럴 생성 - 얘만 이렇게 가능함.
c = new String("apple"); // 원래 이게 맞는데 스트링 클래스만 위에처럼 가능
System.out.println("필드 c = " + c);
}
}
Variable3.java
package basic;
import java.util.Random;
public class Variable3 {
public static void main(String[] args) {
int big = Math.max(25, 36);
System.out.println("큰값 = " + big); //큰값 = 36
//12.7, 78.5 중에서 작은 값을 구하시오
double small = Math.min(12.7, 78.5);
System.out.println("작은값 = " + small); //작은값 = 12.7
//2의 5승
double power = Math.pow(2, 5);
System.out.println("2의 5승 = " + power); //2의 5승 = 32.0
//난수
//컴퓨터가 불규칙하게 발생하는 수
// 0<= 난수 < 1
double a = Math.random();
System.out.println(a); //Variable3.java
//a에서 소수 2째자리까지만 출력하시오.
int c = (int)(a * 100); // 0 ~ 99 ★★★★★
System.out.println(c); //39
// x~y사이의 난수 발생 (int)(Math.random() * (y-x+1) + x)
//65 ~ 90 사이의 난수
int d = (int)(Math.random() * 26 + 65);
System.out.println(d); //75
char e = (char)(Math.random() * 26 + 65);
System.out.println(e); //P
double b = new Random().nextDouble(); //★★★★★ Random클래스는 static 아님. -> new
System.out.println(b); //0.3157687918819152
}
}
★★★★★
static이 아닌 경우에는 -> new 사용
QUIZ
[문제] 변수를 이용하여 320(a), 258(b)의 합(sum), 차(sub), 곱(mul), 몫(div)을 구하시오
[실행결과]
320 + 258 = 578
320 - 258 = 62
320 * 258 = 82560 --> 3자리마다 , 표시 320 * 258 = 82,560
320 / 258 = 1.24031007751938 --> 소수이하 2째자리까지 출력하시오 320 / 258 = 1.24
Compute.java
package basic;
import java.text.DecimalFormat;
//기본 패키지가 java.lang이기 때문에 아래의 문장은 쓸 필요가 없다.
//import java.lang.String;
//import java.lang.System;
public class Compute {
public static void main(String[] args) {
short a = 320;
short b = 258;
int sum = a + b;
int sub = a - b;
int mul = a * b;
double div = (double)a / b; //강제형변환, 자동형변환
System.out.println(a + " + " + b + " = " + sum);
System.out.println(a + " - " + b + " = " + sub);
System.out.println(a + " * " + b + " = " + new DecimalFormat().format(mul));
//★★★★★ 여기 format은 static이 아님 => new
System.out.println(a + " / " + b + " = " + String.format("%.2f", div));
//★★★★★ 여기 format은 static으로 만들어졌기 때문에 그냥 써도 됨.
}
}
320 + 258 = 578
320 - 258 = 62
320 * 258 = 82,560
320 / 258 = 1.24
★★★★★
new DecimalFormat().format() -> 3자리마다 ,(쉼표) 표시
String.format("%.2f", div) -> 소수이하 2째자리까지 출력
'JAVA' 카테고리의 다른 글
DAY 3-1 연산 (2024.07.05) (0) | 2024.08.13 |
---|---|
DAY 3-2 if / Switch (2024.07.05) (0) | 2024.08.13 |
DAY 4 - 반복문 (2024.07.08) (0) | 2024.08.13 |
DAY 5 - 배열 / 선택정렬 / 버블정렬 (2024.07.09) (0) | 2024.08.13 |
DAY 6 - 다차원 배열 (2024.07.10) (0) | 2024.08.13 |