JAVA - 주석 및 변수 기본

갓김치·2020년 7월 21일
0

초급자바

목록 보기
1/8

참조

VariableType.java

주석

1. doc 주석: 누군가 내꺼를 사용할 때 편의성을 위한 설명글

/**
	doc 주석
    @author chichi
    @since 2020.07.21
**/
  • doc 주석 달면) public class VariableBasic 에 커서를 두고 f2 누르면 설명이 뜸

2. 한줄주석: 주석 앞 // or Ctrl+Shift+C

3. 여러줄주석: /별 여러줄 별/

변수 Variable

기본 사항

int a; 

int a ;
변수타입 변수명 (;<- 한 줄 끝났다)

1. 변수 Varibale

  • 단 하나의 값을 저장할 수 있는 공간.
  • 저장 후 간편하게 쓰려고 불러오기 위해 쓴다.
  • 숫자말고도 다양한 것(ex. T/F)을 담을 수 있다.
  • 값(data)을 저장할 수 있는 메모리공간, 프로그램 동작하면서 값이 바뀔 수 있음.
  • 변수 = 그릇 / 값 = 그릇 안의 음식 (음식 무엇을 담을거냐에 따라 그릇 모양도 달라짐)

2. 변수의 선언 - 이름 선점

  • [변수타입] 변수명;
  • 선언할 때만 타입을 쓰고, 그 후로는 그냥 이름만 쓰면 됨

3. 변수의 초기화

  • 변수명 = 값;
  • 값이 여러개가 될 수 있지만 마지막에 담은 것만 남는다.
int name; //int는 정수
name = 10; //변수의 초기화
int name2 = 20; //변수의 선언 및 초기화
name2 = 40; //변수값 변경 가능
System.out.println(name2); // 40이 나오겠죠?

변수 명명규칙

필수 규칙

1. 대소문자를 구분하며, 길이의 제한이 없다. (첫글자는 소문자)

byte nAmefdfds;

2. 예약어 (keyword, reserved word)는 사용할 수 없다.
2-1. 이클립스에서 자주색 = 예약어

int tRUe;

3. 숫자로 시작하면 안 된다.

int top5; //OK
int 5top; //ㄴㄴ

4. 특수문자 '_', '$'만 사용 가능하다.

int $h_arp;

개발자간의 암묵적인 약속들 (가독성 상향)

1. 클래스명의 첫글자 = 대문자

  • 변수명과 메소드명은 첫글자로 소문자를 쓴다
public class VariableBasic {
	public static void main(String[] args) {
    	int name;

클래스명: VariableBasic
메소드명: main() 명칭 뒤에 소괄호 있는 애들
변수명: name

2. 여러 단어로 이루어진 경우: 첫번째 이후 단어 첫글자 = 대문자

  • lastindexof -> lastIndexOf

3. 상수의 이름 = 모두 대문자. 두단어 이을 때: '_' 사용

final int MAX_VALUE = 100; // final 붙으면 상수

4. 한글은 사용하지 않는다.

  • 1) 인코딩 설정때문 ex. utf-8 아닌 경우
  • 2) 의미가 애매한게 많다 ex. blue 푸르스름, 퍼렇다

변수의 타입

Primitive Type (기본형)

  • 8개, 기본값 1개만 지정가능
  • boolean, char, byte, short, int, long, float, double

1) 크기별 분류 (1byte = 8bit)

  • 1byte: boolean, byte
  • 2byte: char, short
  • 4byte: int, float
  • 8byte: long, double

2) 종류

  • 논리형: boolean (T/F 중 하나)
  • 문자형: char (a,b,c같은 1글자 저장)
  • 정수형: byte, short, int, long (기본형: int)
  • 실수형: float, double

논리형 - boolean (기본값: False)

  • T/F 값 하나만 저장 가능
  • 대답(Y/N), 스위치(ON/OFF) 등의 논리 구조에 사용.
  • 데이터를 다루는 가장 작은 단위가 byte이기 때문에 1byte의 크기를 가짐
    • 실제로는 1bit만 있어도 표현할 수 있음. 1칸에 2진수로 T/F 표현 가능하기때문

Q. 변수 power를 선언하고 true의 값으로 초기화하여라.

//변수명 power 값 true
//??? power = true
boolean power = true;

문자형 - char

  • java는 unicode 문자체계 (16진수)를 이용. 2byte의 크기를 가짐.
  • 문자 하나를 저장하기 위해 사용. 'A' (single quote)

Q. 변수 ch를 선언하고 'A'의 값으로 초기화하여라.

//변수명 ch 값 'A'
char ch = 'A';
char ch2 = '\u0041'; //유니코드, 41=16진수
char ch3 = 65; //10진수

정수형 - byte, short, int, long

  • 기본 자료형: int
  • 변수에 저장하려는 정수값의 범위에 따라 4개의 정수형 중 하나 선택
  • byte, short의 경우 크기가 작아 범위를 넘어서는 경우가 많다.

Q1. 변수 b1에 50의 값을 저장하여라.

byte b1 = 50;

Q2. 변수 s1에 25000의 값을 저장하여라.

short s1 = 25000;

Q3. 변수 i1에 15억의 값을 저장하여라.

int i1 = 1500000000;

Q4. 변수 l1에 53억의 값을 저장하여라.

long l1 5300000000L;  // 자바는 int범위 넘어도 int로 인식하기때문에 L을 뒤에 붙여줌으로서 long값 알려줘야함

실수형 - float, double

  • 실수형 값을 저장할 때 사용
  • float : 1+8+23 double: 1+11+52
  • 실수형 중 자료형을 선택할 때는 값의 범위도 중요하지만 정밀도도 중요하다.
    ex) float: 소숫점 7번째자리까지 3.141592
    double: 소숫점 13번째자리까지

Q1. 변수 f1에 3.141592를 저장하여라.

float f1 = 3.141592F; 기본이 double 이여서 F붙여줘야함

Q2. 변수 d1에 3.141592531548를 저장하여라.

double d1 = 3.141592531548

기본형 정리

  1byte  2byte  4byte  8byte

논리 boolean
문자 --------- char
정수 byte---- short -- int^ --- long
실수 ------------------ float----double^ (^ 붙은건 대표자료형)

문자형) 음/양없고 0~양수
char -> 2byte = 16bit => 0~2^16-1

정수형) 비트의 한칸은 부호에게 배정

  • 각각 다른 타입을 쓰는 이유: 저장속도때문에
    byte -> 1byte = 8bit => 7칸 : -2^7~2^7-1 (30..)
    short -> 2byte = 16bit => 15칸 : -2^15~2^15-1 (3만대)
    int -> 4byte = 32bit => 31칸 : -2^31~2^31-1 (21억까지)
    long -> 8byte (100억, 200억)

Reference Type (참조형)

  • 8가지 기본형 제외한 나머지 타입, 객체의 주소를 저장.
  • 독도에 있는 갓김치네 집에 가면 갓김치네 가족이 있다.

문자열 리터럴 - String

  • 문자열을 다루는 클래스, 참조형
  • 기본값이 null이다. (아직 주소 자체가 안 만들어짐)
String name = ''; //아무것도 없는 주소가 있는 것 = 빈집
String gibon = null; //집 자체가 없음

String r1 = "====\n--\t--"; // '\' 제외 아무거나 무제한 삽입 가능
// \n 엔터 \t 탭만큼 띄우기

Q1. 변수 a1에 7의 값을 저장해

int a1 =7

Q2. 변수 s2에 "9"의 값을 저장해

String s2 = "9";

Q3. a1과 s2의 합을 변수 result1에 저장해

// int + String => String + String = String
String result1 = a1 + s2;
System.out.println(result1); // 79

Q4 ""+true 의 출력값? ""+null의 출력값?

String + boolean => String + String => String
"" + "true" => "true"
System.out.println(""+true); // true

String + null은 참조형기본값 => String + String => String
System.out.println(""+null); // null

overflow

  • 변수 자신이 저장할 수 있는 범위를 넘어섰을 때, 최솟값으로 돌아가서 다시 시작하는 현상
  • 정수형에서만 일어남 -> 방지하기 위해 int를 기본값으로
byte b2 = 126; //byte 최대저장값 127
b2++; //++; b2가 가지고 있는 값을 한단계 올려준다
System.out.println(b2); //127
b2++;
System.out.println(b2); //128이 나올 것 같지만 -128이 나옴

형변환 (casting)

  • '캐스트 연산자'를 이용하여 형변환을 할 수 있다.
  • 'A' => 10진수일때 어떤값인지?
  • 10 => 문자형으로 뭘까?
  • !주의사항: 연산할 것들의 타입이 같아야 연산을 할 수 있다.
int sip = 'A';
System.out.println(sip);
char ten = (char)10;
System.out.println(ten); //이거 왜 공백 두줄나오는거지?

Q1. byte형 변수 b3에 100의 값을 저장

byte b3 = 100;

Q2. char형 변수 c3에 'K'의 값을 저장

char c3 = 'K';

Q3. int형 변수 i3에 400000의 값을 저장

int i3 = 400000;

Q4. float형 변수 f3에 3.14의 값을 저장

float f3 = 3.14F;

캐스팅 흐름도
byte → short, char → int → long → float → double

Q5. c3에 저장된 값의 10진수값을 변수 result2에 저장하고 출력

int result2 = c3; // or int result2 = (int)c3;
System.out.println(result2);

Q6. f3에 저장된 값중 정수만 취득하여 result3에 저장하고 출력

int result3 = (int)f3; // float -> int 로 오버플로우 방지
System.out.println(result3);

예제1. 변수 a 선언, 8의 값으로 초기화

int a = 8;

예제2. 변수 b 선언, 3의 값으로 초기화

int b = 3;

예제3. 변수 result4 선언, a의 값을 b의 값으로 나누기한 결과로 초기화. (정수)

int result4 = a/b;

예제4. 변수 result5 선언, a의 값을 b의 값으로 나누기한 결과로 초기화. (실수)

//double은 근사치, float은 정확한 값
float result5 = (float)a/b;

float result5 = (float)(a/b);
//1. (float)*a/b 순서대로 연산, a가 먼저 float으로 바뀜
//2. float / int 연산되니까 int가 float으로 바뀌는 결과 나옴.

여기서부터 다시 수정

**

기본지식

  • 오류 발생: F2 - 이유나옴
  • 중괄호 맞춰 TAB키로 줄맞춤: 나중에 코드 길어지면 보기 어려움
  • 에러난 것들은 주석 처리: 안그러면 밑에 오류 못찾음
  • final int maxValue = 100; 상수
  • public static void main 프로그램 실행하게 만들어줌
  • 검정/자주색 글씨: 실제 실행되는 파일 (녹색: 주석)
  • 1byte: 2진수를 담을 수 있는 8개의 칸 (=8bit)
  • java는 16진수

단축키

  • ctrl+m: 이클립스 워크스페이스 맥시멈/미니멈
profile
갈 길이 멀다

0개의 댓글