LostCatBox

Java 배우기 CH02

Word count: 1.1kReading time: 7 min
2022/12/23 Share

단축키

  • command +shift + L (단축키 목록)
  • command +D (한줄삭제)
  • command +option+down (행단위 복사)
  • option+command+A (멀티 컬럼 편집)
  • option+up,down(행단위이동
  • control + i(자동들여쓰기)
  • control + / (주석처리)
  • /* ~*/ (여러 행 모두 주석처리 감싸기)
  • control+space 자동완성
  • preferences에서 content assist 등록에 .a~z적어놓기

알아두기

  • printin() - 출력후 줄바꿈안함
  • println() - 출력후 줄바꿈

변수

변수란?

  • 하나의 값을 저장할수있는 메모리 공간
  • 해당 메모리에 값을 저장하고 주소 대신 변수로 이름을 붙임.

변수 선언

  • 변수 타입 변수이름;
    int age
  • 이유:값을 저장할 공간을 마련하기위해!!

변수에 값 저장

  • 변수에 값 저장하기
1
2
3
4
int age;  //정수(int) 타입의 변수 age선언
age = 25 //변수 age에 25를 저장

int age =25; // 한줄로 표현
  • 변수의 초기화
    변수에 처음으로 값을 저장
1
2
3
4
int x = 0;
int y = 5;

int x = 0,y = 5;
  • 변수의 종류
    • 클래스 변수
    • 인스턴스 변수
    • 지역 변수(지역 변수는 읽기 전에 꼭! 초기화해야한다.)(자동 초기화 X)

변수의 값 읽어오기

  • 변수 값이 필요한 곳에 변수 이름을 적는다

변수 타입

변수타입

  • 변수의 타입은 저장할 값의 타입에 의해 결정된다.
  • 저장할 값의 타입과 일치하는 타입으로 변수를 선언
1
2
3
int age = 25;   // int 는 정수타입
char ch = "가"; //char 는 문자타입
double pi= 3.14; //double은 실수타입

Untitled

변수, 상수, 리터럴

  • 변수(variable): 하나의 값을 저장하기 위한 공간 (변경가능)
  • 상수(constant): 한번만 값을 저장 가능한 변수 (변경 불가)
  • 리터럴(literal): 그 자체로 값을 의미하는 것 (기존 일반적 상수와 개념 같음)
1
2
3
4
5
6
7
8
int score = 100; 
score = 200; //메모리값이 200으로 변경됨

final int MAX =100 // MAX는 상수
MAX =200 //에러

char ch = "A"
String str= "abc"
  • 리터럴(100,200,A,abc)
  • 변수( score, ch, str)
  • 상수(MAX)

리터럴의 타입과 접미사

Untitled

  • 리터럴에 따라 저장할 값의 타입 구별됨
  • 정수형의 Long타입만 접미사 L
    (나머지는 int 타입이고 byte, short리터럴은없다)
  • 실수형의 float타입 접미사 f
    (double타입은 생략가능, 접미사 d)
1
2
3
4
5
6
7
8
9
10
11
12
boolean power = true; //false, true만 가능
char ch = 'A'; // 따옴포 1개,,1개의 문자만 저장가능, '\n'도 이에포함
String str= "ABC"; // 타옴포 2개,, 문자열은 1개이상 저장가능
byte b = 127; //정수인데 L없으니까 int타입임, byte타입의 리터럴은따로없음
int i = 100; // 10진수
int oct = 0100; // 8진수
int bex = 0x100; //16진수
int twe = 0b0101 // 2진수
long l = 10_000_000_000L // Long타입 접미사 L확인!!, int는 최대 20억까지밖에안됨, _은 안해도됨
long l = 100; // int 리터럴도 가능하긴함
float f = 3.14f; // 3.14에서 f 생략 불가
double d = 3.14d; // d 생략가능
  • 기본적으로 변수의 타입과 리터럴의 타입이 일치해야함
  • 일치하지 않지만 허용되는 경우도 존재함
1
2
3
4
10. == 10.0 //d타입
.10 == 0.10 //d 타입
10f == 10.0f //f 타입
1e3 == 1000.0 //d타입, e는 실수형사용하며, 10^n을 의미함

변수와 리터럴의 타입 불일치

  • 범위가 변수(그릇)>리터럴(물건) 인 경우 가능
1
2
3
int i = 'A' ; // int> char  저장범위 더 넒음, 문자코드인 65가 저장됨
long l = 123; // long>int
double d = 3.14f //double > float
  • 범위가 변수<리터럴 인 경우 에러
1
2
3
int i = 30_0000_0000; // int의 범위 (+-20억) 벗어남(L안붙이면 int니까..)
long l = 3.14f ; // long<float
float f = 3.14; // float < double
  • byte, short 변수에 int리터럴 저장가능
    (단, 변수의 타입의ㅏ 범위 이내이여야 함
1
2
byte b = 100; // 가능, byte의 범위 -128~127에 속함
byte b = 128; // 범위 초과

문자와 문자열

  • 문자 char는 반드시 하나의 문자만 가능하고
  • String은 문자열을 저장가능하다
  • 문자열은 연속된 여러문자지만
  • String은 빈문자열, 문자하나도 저장가능
  • 문자열 + any-type ⇒ 문자열
    any-type + 문자열 ⇒ 문자열
    ””+7+7>>”77”
    7+7+””>>”14”
1
2
3
4
5
6
7
8
9
10
11
12
char ch = 'A';
char ch = 'AB' ;//에러
String s = "ABC";

String s2 = new String("AB"); //String은 클래스인데 원래는 이렇게 선언해야 사용가능,하지만 예외적으로

byte b = 127;
char x = 'A';
String y = "ABC";

System.out.println(x); //A
System.out.println(b+b+y); //254ABC

두 변수의 값 바꾸기

  • 새로운 하나의 변수 필요함
1
2
3
4
5
String y = "ABC",z = "sds";
String tmp = "";
tmp=y;
y=z;
z=tmp;

값의 타입

  • 기본형 값(data)
    • 문자(char)
    • 숫자
      • 정수(byte, short, int, long)
      • 실수(float, double)
    • 논리(bollean)

기본형과 참조형

  • 기본형
    • (오직 8개)
    • (char, byte,short, int, long, float, double, bollean)
    • 실제 값을 저장
  • 참조형
    • (기본형을 제외한 나머지)
    • (String, System등)
    • 메모리 주소를 저장(4byte 또는 8byte)
    • (32bit JVM은 40억byte 메모리사용가능>>실제사용은 2GB남짓
    • 64bit JVM은 160경 byte 메모리사용가능
    • 참조변수는 객체의 주소를 저장하기 위한것

자바의 기본형 종류와 범위

기본형

  • 논리형: ture, false
  • 문자형: 문자를 저장하는데사용되며, 변수당 하나의 문자만을 저장 가능
  • 정수형: 정수 값을 저장하는데 사용된다. 주로 int, long
  • 실수형: 실수 값을 저장하는데 사용된다. float와 double

Untitled

  • default는 각각 int, double

기본형 표현범위(1/3)

  • n비트로 표현할수있는 값의 개수: 2^n개
  • n비트로 표현할 수있는 부호없는 정수의범위(0을 포함): 0~ 2^n-1
  • n비트로 표현할 수있는 부호 있는 정수의 범위(0을 포함): -2^(n-1)~2^(n-1) -1

Untitled

기본형 표현범위(2/3)

  • byte타입은 1bit의 부호비트 + 7bit 저장공간
    -1280+127 ⇒ 256개
  • short 1bit의 부호비트 + 15bit 저장공간
    -327680+32767 ⇒ 2^16개 표현가능
  • char 16bit로 구성
    0~65535 ⇒ 2^16개
  • int 1bit의 부호비트 + 31bit 저장공간 (약 -20억~20억)
    -2^(32-1) ~0 ~+2^(32-1) -1 ⇒ 2^32개
  • long 1bit의 부호비트 + 63bit 저장공간
    -2^(64-1) ~0 ~+2^(64-1) -1 ⇒ 2^64개
  • 각타입의 크기만 알면 구할수있다. java 정수형에는 모두 부호가존재

Untitled

기본형 표현범위(3/3)

  • 부호, 지수(10^n), 가수로 나눠서 저장되기때문에, 훨씬더 큰 수를 기록가능함

Untitled

printf를 이용한 출력

  • println() 의 단점 (출력형식 지정불가)

    • 실수의 자리수 조절 불가
      10.0/3; ⇒ 3.33333333
    • 10진수로만 출력된다.
      8진수, 16진수로 출력을 10진수변환됨
  • printf()로 출력형식 지정가능 (”지시자”사용을 통해)

1
2
3
System.out.printf("%.2f", 10.0/3); //소수점둘째자리까지 출력
System.out.printf("%d", 0x1A); //10진수 출력
System.out.printf("%X", 0x1A); //16진수출력

printf()의 지시자(1/3)

Untitled

1
System.out.printf("age:%d year:%d%n", 14, 2017); //순서대로 들어가며, %n개행문자 쓰기
  • %n개행문자 활용!!

printf()의 지시자(2/3)

Untitled

printf()의 지시자(3/3)

  • 10진수 %d를 지시자로 활용, 자리수 지정가능

Untitled

화면에서 입력받기 - Scanner

Scanner란?

  • 화면으로부터 데이터를 입력받는 기능을 제공하는 클래스
1
2
3
4
5
6
7
import java.util.*
Scanner scanner = new Scanner(System.in);// Scanner객체 생성 System.in은 화면입력 받는법

//아래처럼 Scanner객체 사용
int num = scanner.nextInt(); //화면에서 입력받는 정수를 num에 저장
String input = scanner.nextLine(); // 화면에서 입력받은 내용을 input에 저장
int num = Integer.parseInt(input); // 문자열(input)을 숫자(num)으로 변환

계수기(counter)

  • 오버플로우 발생시, 이진수 0000>> 1111>>오버플로우 발생>>0000으로됨
  • 최대값 +1 ⇒최소값
  • 최소값 -1 ⇒최대값
  • 결국 순환하게됨
  • 똑같이 부호없는정수(4bit) 0 -1 ⇒15
  • 똑같이 부호있는정수(4bit) -8 -1 ⇒+7

Untitled

타입간의 변환방법

문자와 숫자간의 변환

  • 문자’0’을 더하면 숫자가됨
  • 문자’0’을 빼면 문자가됨

문자열로 변환

  • 문자열 + any-type ⇒ 문자열
  • any-type + 문자열 ⇒ 문자열

문자열을 숫자로 변환

  • “3” ⇒ 3
    Integer.parseInt(”3”) 사용
  • “3.4” ⇒ 3.4
    Double.parseDouble(”3.4”) 사용

문자열을 문자로 변환

  • “3”⇒’3’
    ”3”.charAt(0)

Untitled

  • 순서대로 [3,4,4,31,51] 출력됨
CATALOG
  1. 1. 단축키
  2. 2. 변수
    1. 2.1. 변수란?
    2. 2.2. 변수 선언
    3. 2.3. 변수에 값 저장
    4. 2.4. 변수의 값 읽어오기
  3. 3. 변수 타입
    1. 3.1. 변수타입
    2. 3.2. 변수, 상수, 리터럴
    3. 3.3. 리터럴의 타입과 접미사
    4. 3.4. 변수와 리터럴의 타입 불일치
  4. 4. 문자와 문자열
  5. 5. 두 변수의 값 바꾸기
  6. 6. 값의 타입
    1. 6.1. 기본형과 참조형
  7. 7. 자바의 기본형 종류와 범위
    1. 7.1. 기본형
    2. 7.2. 기본형 표현범위(1/3)
    3. 7.3. 기본형 표현범위(2/3)
    4. 7.4. 기본형 표현범위(3/3)
  8. 8. printf를 이용한 출력
    1. 8.1. printf()의 지시자(1/3)
    2. 8.2. printf()의 지시자(2/3)
    3. 8.3. printf()의 지시자(3/3)
  9. 9. 화면에서 입력받기 - Scanner
    1. 9.1. Scanner란?
  10. 10. 계수기(counter)
  11. 11. 타입간의 변환방법
    1. 11.1. 문자와 숫자간의 변환
    2. 11.2. 문자열로 변환
    3. 11.3. 문자열을 숫자로 변환
    4. 11.4. 문자열을 문자로 변환