[즐겁게 자바 배우기~ 즐겁게 코드 작성하기] 데이터 타입과 변수

앞에 쓰다

 지식 포인트를 공유하기 전에 몇마디 할게요 ㅎㅎ 오늘부터 칼럼을 --- "즐겁게 자바 배우기~ 즐겁게 코드 작성하기" 자바를 배우는 과정에서 꼼꼼히 메모하고 메모장에 기록해 둡니다. 블로그 형식으로 되어 있어 향후 언제 어디서나 볼 수 있습니다. 제 블로그를 공유한 후 읽어주시는 친구들에게도 조금이나마 도움이 되었으면 하는 바람으로 칼럼의 형태로 제 자신이 지식을 꼼꼼히 정리하고 정리하도록 재촉하는 역할도 하고 ​​있습니다. 수집 및 구독도 환영합니다. 걱정하지 마세요. 모두 무료이며 콘텐츠를 보장합니다. 완전 상세하고 이해하기 쉽습니다 . 다음 날에도 함께 발전해 봅시다! ! !

기사 디렉토리

1. 데이터 유형

2. 변수

2.1 변수 개념

2.2 구문 형식

2.3 정수 변수

2.3.1 정수 변수

2.3.2 긴 정수 변수

2.3.3 짧은 정수 변수

2.3.4 바이트 변수

2.4 부동 소수점 변수

2.4.1 배정도 부동 소수점   

2.4.2 단정밀도 부동 소수점

2.5 문자 변수

2.6 부울 변수

2.7 유형 변환

2.7.1 자동 유형 변환(암시적)

2.7.2 캐스팅(명시적)

2.8 유형 판촉

3. 문자열 유형

3.1 int를 문자열로 변환

3.2 문자열을 int로 변환


1. 데이터 유형

자바의 자료형은 크게 기본자료형참조자료형 으로 나뉜다 . 세부 사항은 다음과 같습니다.

 위의 그림에서 알 수 있듯이 기본 데이터 유형은 4가지 범주와 8가지 유형 으로 나눌 수 있습니다 .

네 가지 유형: 정수, 부동 소수점, 부울 및 문자.

여덟 종류:

데이터 유형 키워드 메모리 사용량 범위
바이트 유형 바이트 1바이트 -128 ~ 127
짧은 정수 짧은 2바이트 -32768 ~ 32767
정수 정수 4 바이트

-2^31$ ~ 2^31-1

-2147483648~2147483647

긴 정수 8바이트

-2^63 ~ 2^63-1

 -9223372036854775808 ~ 9223372036854775807

단정밀도 부동 소수점 숫자 뜨다 4 바이트 범위가 있지만 일반적으로 관련되지 않음
배정밀도 부동 소수점 숫자 더블 8바이트 범위가 있지만 일반적으로 관련되지 않음
문자 유형 2바이트 0 ~ 65535
부울 부울 명확하게 지정되지 않음 진실과 거짓

주의 주의:

16비트 시스템이든 32비트 시스템이든 상관없이 int는 4바이트를, long은 8바이트를 차지합니다.
정수와 부동 소수점은 부호가 있으며 부호가 없는 것은 없습니다.
Integer의 기본값은 int이고 float의 기본값은 double입니다.
문자열은 이 게시물에서 소개하는 참조 유형입니다.
 

그리고 레퍼런스 데이터 타입은 여기서 다루지 않고 클래스와 객체에 대해 배울 때 하나씩 설명하겠습니다~

2. 변수


2.1 변수 개념

프로그램에서 사람의 나이, 키, 학년,
수학 함수의 계산 결과 등과 같이 일부 내용이 자주 변경될 수 있습니다. 이러한 자주 변경되는 내용을 Java 프로그램에서는 변수라고 합니다. 데이터 유형은 다양한 종류의 변수를 정의하는 데 사용됩니다.


2.2 구문 형식

변수 정의 구문은 다음과 같습니다.

데이터 유형 변수 이름 = 초기 값;

예를 들어:

int a = 10; // 정수 변수 정의 a, a는 식별자라고도 하는 변수 이름, 변수에 배치된 값은 10

int a1 = 10, a2 = 20, a3 = 30;// 참고: 같은 유형의 여러 변수를 한 줄에 정의할 수 있습니다.

이중 d = 3.14;

문자 c = '아';

a=100;//a는 변수이고 a의 값은 수정할 수 있습니다. 참고: = Java의 테이블 값, er은 ​​a에 100을 제공하고, a에 저장된 값은 100

참고: Java에서는 초기 값을 할당하지 않고 변수를 정의할 수 있지만 사용하기 전에 변수에 값을 할당해야 합니다 . 그렇지 않으면 컴파일에서 오류가 보고됩니다.

2.3 정수 변수

2.3.1 정수 변수

// 방법 1: 정의할 때 초기 값
int a = 10 제공 ;
System.out.println(a);


// 방법 2: 정의 시 초기값을 주지 않으나 사용하기 전에 초기값을 설정해야 함
int b;
b = 10;
System.out.println(b);

// int 변수가 나타낼 수 있는 범위:
System.out.println(Integer.MIN_VALUE);

/*여기서 알려줄게 Integer는 wrapper 클래스이고 기본 데이터 타입에 해당하는 클래스 타입인데 여기서 이해하지 못해도 상관없다 나중에 배울때 설명하겠다 클래스와 객체.*/

System.out.println(정수.MAX_VALUE);


// 참고: int 변수 정의 시 할당은
int 범위를 초과할 수 없음 int d = 12345678901234; // 컴파일 시 오류 발생, 초기값은 int 범위를 초과함
 

 주의 주의:

int 유형은 시스템에 관계없이 4바이트입니다.

변수를 사용하기 전에 변수에 값을 할당해야 합니다. 그렇지 않으면 오류가 보고됩니다. 처음에 변수를 정의할 때 어떤 값을 할당해야 할지 모를 때 초기 값을 0으로 할당하는 것이 좋습니다.

int 변수에 초기 값을 할당할 때 int 범위를 초과할 수 없습니다. 그렇지 않으면 오버플로되어 오류가 컴파일됩니다.

int의 래퍼 클래스는 정수입니다.

2.3.2 긴 정수 변수

정수 a = 10;

long d=10//긴 정수 변수를 정의합니다.

long b=10L// 정수형을 구분하기 위해 long 정수형 변수에 초기값을 할당한 뒤에 L이나 l을 붙인다.

long c=10l//일반적으로 대문자 L을 추가하여 소문자 l을 숫자 1로 취급하지 않도록 합니다.

// long 타입 변수가 표현할 수 있는 범위: 이 데이터 범위는 int의 표현 범위를 훨씬 넘어 대부분의 엔지니어링 시나리오에 충분합니다.
System.Out.println(Long.MIN_VALUE);
System.Out.println(Long. MAX_VALUE ) );
 

주의 주의:

1. 자바에서는 어떤 시스템을 사용하든 긴 정수가 8바이트를 차지한다.

2. 긴 정수 변수에 할당된 초기 값 뒤에 대문자 L을 추가하는 것이 좋습니다.

3. long의 포장 유형은 Long입니다.

2.3.3 짧은 정수 변수

short a=10;//짧은 정수 변수를 정의하고 초기 값 10을 할당합니다.

System.out.println(a);

// 짧은 변수가 나타낼 수 있는 범위:

System.out.println(Short.MIN_VALUE);

System.out.println(Short.MAX_VALUE);

주의 주의:

1. Short는 모든 시스템에서 2바이트입니다.

2. short의 값 범위는 -32768~35767이며 범위가 크지 않고 일반적으로 적게 사용됩니다.

3. Short의 포장 유형은 Short입니다.

2.3.4 바이트 변수

byte a=10;//바이트 변수를 정의하고 10을 할당합니다.

System.out.println(a);

//바이트 타입이 표현할 수 있는 범위

System.out.println(바이트.MIN_VALUE);

System.out.println(바이트.MIN_VALUE);

주의 주의:

1. 바이트는 모든 시스템에서 1바이트를 차지합니다
. 2. 바이트의 범위는 -128 ~ 127입니다.
3. 바이트의 패키징 유형은 바이트입니다.

2.4 부동 소수점 변수

2.4.1 배정도 부동 소수점   

이중 d = 3.14;
System.Out.println(d);

매직 코드 1:

int a = 1;
int b = 2;
System.out.println(a / b); // 0.5를 출력할까요? 

대답은 '아니오. Java에서 int를 int로 나눈 값은 C 언어에서와 같이 여전히 int입니다(소수 부분은 직접 삭제됨). 0.5를 얻으려면 이중 유형 계산을 사용해야 합니다.

더블 a = 1.0;
이중 b = 2.0;
System.out.println(a/b); // 输出0.5

매직 코드 2: 

double num = 1.1;
System.out.println(num * num); // 1.21을 출력합니까?


// 실행 결과 1.2100000000000002

주의 주의:

1. Double 유형은 모든 시스템에서 8바이트를 차지합니다.

2. double형은 메모리에 저장하는 방식이 정수형과 다릅니다.

3. 더블 포장 타입은 더블입니다.

4. 더블 타입의 메모리 레이아웃은 IEEE 754 표준을 따릅니다 (C 언어와 동일).제한된 메모리 공간을 사용하여 무한한 소수점 이하 자릿수를 나타내려고 하면 특정 정밀도 오류가 발생하므로 부동 소수점 숫자는 정확한 값이 아니라 대략적인 값 입니다.


2.4.2 단정밀도 부동 소수점

float num = 1.0f; // 1.0F도 쓸 수 있습니다.
System.out.println(num);

연산 규칙은 배정밀도와 동일하지만 정밀도가 다릅니다.

알아채다:

float 유형은 Java에서 4바이트를 차지하며 IEEE 754 표준을 준수합니다. 표시되는 데이터의 정밀도 범위가 작기 때문에 엔지니어링에서 부동 소수점 숫자에는 일반적으로 double이 선호되고 float는 권장되지 않습니다. float의 값은 float입니다.
 

2.5 문자 변수

char ch1='A';//문자 변수 정의, 대문자 A 할당

char ch2='1'; //문자 변수 ch2를 정의하고 숫자 1을 할당합니다.

System.out.println(c1);
System.out.println(c2);


// 참고: 자바의 문자는 한자를 저장할 수 있습니다.

char c3 = '帅';
System.out.println(c3);

주의 주의:

1. Java에서 문자의 리터럴 값은 작은따옴표 + 단일 문자로 표시됩니다.
2. 컴퓨터의 문자는 본질적으로 정수입니다. ASCII는 C 언어에서 문자를 나타내는 데 사용되는 반면 유니코드는 나타내는 데 사용됩니다. 따라서 하나의 문자는 중국어 를 포함하여 더 많은 유형의 문자를 나타내는 2바이트를 차지합니다 .

char ch = '呵';
System.out.println(ch);

위의 두 줄의 코드를 실행하면 다음 오류 보고서가 나타날 수 있습니다.

Test.java:3: 오류: 종료되지 않은 문자 리터럴
char ch = 'forge?';
             ^ 

이 시점에서 javac를 실행할 때 -encoding UTF-8 옵션을 추가할 수 있습니다.

javac - 인코딩 UTF-8 Test.java

3. char의 포장형태는 Character 입니다.

2.6 부울 변수

boolean형은 참과 거짓을 나타낼때 많이 사용하는데 실생활에서도 자주 등장합니다. : 나는 x, 진짜 Fake?

부울 b=참;

System.out.println(b);//참 출력

b=거짓;

System.out.println(b);//거짓 출력

주의 주의:

1. boolean 유형의 변수에는 true와 false의 두 가지 값만 있습니다. true는 true를, false는 false를 의미합니다.

2. 자바에서 int형과 boolean형은 서로 변환할 수 없으며 0은 false, 1은 true를 의미하는 사용법이 없습니다

부울 값 = true;
System.out.println(값 + 1);


// 코드 컴파일 시 아래와 같은 에러가 발생합니다
. Test.java:4: Error: 이진 연산자 '+'의 피연산자 유형이 잘못되었습니다
. System.out.println(value + 1);

                                        ^
첫 번째 유형: 부울
두 번째 유형: int
1 오류 

3. 자바 가상머신 사양에서는 boolean이 몇 바이트를 차지하는지 명시되어 있지 않고 boolean을 처리하기 위해 특별히 사용되는 bytecode 명령어도 없다.Oracle의 가상머신 구현에서는 boolean이 1byte를 차지한다.
4. boolean의 패키징 유형은 Boolean입니다.

2.7 유형 변환

강력한 형식의 프로그래밍 언어인 Java는 서로 다른 형식의 변수 간에 값을 서로 할당할 때 엄격한 검증을 받습니다.

Java에서는 연산에 포함된 데이터 유형이 일치하지 않는 경우 유형 변환을 수행합니다. Java의 유형 변환은 주로 자동 유형 변환(암시적)강제 유형 변환(명시적)의 두 가지 범주로 나뉩니다 .

2.7.1 자동 유형 변환(암시적)

즉, 변수에 대한 특별한 처리가 필요하지 않으며 컴파일러는 컴파일 타임에 자동으로 유형 변환을 수행합니다. 기능: 데이터 범위가 더 작고 데이터 범위가 크면 자동으로 수행 됩니다.

int a = 100;
long b = 10L;
b = a; // a와 b는 모두 정수이고 a의 범위는 작고 b의 범위는 큽니다. b에 할당할 때 컴파일러는 자동으로 a를 승격합니다. long 유형에 할당
한 다음 = b; // 컴파일 오류, long 범위가 int 범위보다 크면 데이터 손실, 안전하지 않음

float f = 3.14F;
double d = 5.12;
d = f; // 컴파일이 통과된 후 컴파일러는 f를 double로 변환한 다음
f = d를 할당합니다. // 컴파일이 실패하면 double은 데이터 범위가 다음과 같다는 것을 나타냅니다. 큰, 직접 변환 float 데이터 손실이 발생합니다. 안전하지 않은
바이트 b1 = 100; // 컴파일 통과, 100이 바이트 범위를 초과하지 않음, 컴파일러는 암시적으로 100을 바이트
바이트 b2 = 257로 변환합니다. // 컴파일 실패 , 257 데이터 손실로 데이터의 바이트 범위를 초과합니다.
 

2.7.2 캐스팅(명시적)

즉, 작업이 수행될 때 코드를 특정 데이터 형식으로 처리해야 합니다. 그렇지 않으면 컴파일이 통과되지 않고 자동으로 완료될 수 없습니다. 특징: 큰 데이터 범위에서 작은 데이터 범위까지 .

int a = 10; 
long b = 100L; 
b = a; // int-->long, 데이터 범위는 작은 것에서 큰 것, 암시적 변환 
a = (int)b; // long-->int, 데이터 범위는 큰 것에서 작은 것으로 결정됩니다. 그렇지 않으면 컴파일이 실패합니다 


. float f = 3.14F; 
double d = 5.12; 
d = f; // float-->double, 데이터 범위는 작은 것에서 작은 것까지 큰 암시적 변환 
f = (float)d ; // double-->float, 데이터 범위가 큰 것에서 작은 것으로, 변환해야 합니다. 그렇지 않으면 컴파일이 실패 


합니다. a = d; // 오류, 유형은 다음과 같습니다. incompatible 
a = (int)d; // double에는 int로 표시되는 데이터 범위가 없습니다. Large, 강제로 실행해야 함, 소수점 이하에서 모두 폐기 


byte b1 = 100; // 100은 int로 기본 설정되고, 바이트 범위를 초과하지 않음, 암시적 변환 
byte b2 = (byte)257; // 257은 기본적으로 int이고, 바이트 범위를 초과하며, 디스플레이 변환이 필요합니다. 그렇지 않으면 오류가 보고됩니다. 


부울 플래그 = true; 
a = 플래그; // 컴파일 실패: 호환되지 않는 유형 
플래그 = a; // 컴파일 실패: 호환되지 않는 유형 
// 참고: 부울 변수와 정수 변수는 변환할 수 없으며 강제 변환 


int a = 10; 
long b = 20; 
int c = a + b; // 컴파일 오류: a + b =="int + long--> long + long은 int에 할당할 때 데이터를 잃습니다.
long d = a + b; // 성공적으로 컴파일됨: a + b==>int + long--->long + long이 long에 할당됨

주의 주의:

1. 다른 숫자 유형의 변수 간의 할당은 더 작은 범위의 유형이 더 큰 범위의 유형으로 암시적으로 변환될 수 있음을 의미합니다.
2. 작은 범위에 큰 범위의 유형을 할당해야 하는 경우 유형을 캐스팅해야 하지만 정밀도가 손실될 수 있습니다.
3. 리터럴 값 상수를 할당할 때 Java는 자동으로 숫자 범위를 확인합니다.
4. 강제 유형 변환이 성공하지 못할 수 있으며, 관련 없는 유형은 서로 변환할 수 없습니다 .

2.8 유형 판촉

서로 다른 데이터 유형 간에 작업을 수행할 때 데이터 유형의 범위가 작은 데이터 유형은 데이터 유형이 넓은 데이터 유형으로 자동 변환됩니다 .

1. long과 int 사이의 연산의 경우 int 유형은 자동으로 long 유형으로 변환됩니다.

int a = 10;
long b = 20;
int c = a + b; // 컴파일 오류: a + b=="int + long--> long + long은 int
long d = a + b에 할당할 때 데이터를 잃습니다. ; // 성공적으로 컴파일: + b==>int + long--->long + long이 long에 할당됨

2. byte와 byte 연산은 byte 타입이 자동으로 int 타입으로 변환됩니다.

바이트 a = 10;
바이트 b = 20;
바이트 c = a + b;
System.out.println(c);


// 컴파일 오류
Test.java:5: 오류: 호환되지 않는 유형: int에서 바이트로 변환하는 데
바이트 c = a + b가 필요할 수 있습니다.
                 ^

이유: a와 b 모두 byte 유형이지만 바이트는 계산 중에 int 유형으로 변환됩니다. 따라서 int와 int 사이의 계산이고 최종 결과도 int형인데 int형의 값을 byte형의 c변수에 대입하면 위와 같은 에러가 발생한다.

컴퓨터의 CPU는 보통 4바이트 단위로 메모리에서 데이터를 읽고 쓰기 때문에 하드웨어 구현의 편의를 위해 4바이트 미만인 byte, short 등의 유형은 먼저 int로 업그레이드한 다음 참여한다. 계산..

올바른 철자:

바이트 a = 10;
바이트 b = 20;
바이트 c = (바이트)(a + b);
System.out.println(c);

유형 프로모션 요약:

1. 데이터 유형이 다른 혼합 작업, 작은 범위가 큰 범위로 승격됩니다.
2. short 및 4바이트보다 작은 바이트 유형의 경우 작업 전에 4바이트 int로 승격됩니다.

3. 문자열 유형

다음과 같은 Java의 문자열 유형에 대해 String 클래스를 사용하십시오.

공개 정적 무효 메인(문자열[] 인수){

        문자열 s1="안녕하세요";

        문자열 s2="세계";

        System.out.println(s1);
        System.out.println(s2);
        System.out.println(s1+s2); // s1+s2는 s1과 s2를 연결한다는 의미입니다.

}

어떤 경우에는 문자열과 정수 사이를 변환해야 합니다.

3.1 int를 문자열로 변환

int num=10; 
//방법 1 
문자열 s1=num+""; 
//방법 2 
문자열 s2=String.valueOf(num); 

System.out.println(s1+s2);//출력 1010

 3.2 문자열을 int로 변환

문자열 str = "100";
정수 번호 = 정수.parseInt(str);

참고: 여러 int의 합을 출력하려면 +를 사용하여 합을 사용할 수 있기 때문입니다. + 연결의 뒤쪽 끝이 문자열인 경우 다음 데이터에 대한 + 기호의 효과는 해당 문자열을 연결하는 것입니다.

이것은 문자열에 대한 간략한 소개일 뿐이며 모든 사람이 알고 있는 내용이며 시퀀스에서 자세한 소개를 제공합니다.


이상은 제가 오늘 공유하고자 하는 내용입니다. 앞으로도 계속 업데이트 하겠습니다. 제 블로그 자주 보고 많이 배우 겠습니다.

추천

출처blog.csdn.net/m0_63039919/article/details/123365811