찾다
Javajava지도 시간JAVA 튜토리얼 2장 기본 데이터 유형

JAVA 2장 기본 데이터 유형

내용


  • Java 기본 데이터 유형: 두 가지 주요 범주

    • 내장 데이터 유형

    • 참조 데이터 유형

  • Java 유형 변환

    • 자동 유형 변환

    • 강제

  • Java 상수



Java 기본 데이터 유형

1. 내장 데이터 유형


Java 언어8가지 기본 유형을 제공합니다. 6개의 숫자 유형(4개의 정수, 2개의 부동 소수점 유형), 문자 유형 및 부울 유형.

JAVA 튜토리얼 2장 기본 데이터 유형


숫자형 - 정수형 바이트:

    • 바이트 데이터 유형은 2의 보수로 표현되는 8비트 부호 있는 정수입니다.

    • 최소값은 -128입니다. (-2^7);

    • 최대값은 127(2^7-1)입니다.

    • 기본값은 0입니다.

    • 바이트 유형은 공간을 차지하기 때문에 주로 정수를 대체하여 공간을 절약하는 데 사용됩니다. 바이트 변수 기준 int 유형의 1/4만

    • 예: 바이트 a = 100, 바이트 b = -50.

숫자형 - 정수형 단축:

    • Short 데이터 유형은 16비트 부호 있는 2의 보수 정수입니다.

    • 최소값은 -32768(-2^15)입니다.

    • 최대값은 32767(2^15 - 1)입니다.

    • 짧은 데이터 형식도 바이트처럼 공간을 절약할 수 있습니다. 짧은 변수는 int 변수가 차지하는 공간의 절반입니다.

    • 예: 짧은 s = 1000, 짧은 r = -20000.

숫자형 - 정수형 int:

int 데이터 유형은 32비트 부호 있는 2의 보수 정수 표현입니다.
    • 최소값은 -2,147,483,648(-2^31)입니다.

    • 최대값은 2,147,483,647(2)입니다. ^31 - 1);

    • 일반적으로 정수 변수는 int 유형으로 기본 설정됩니다.

    • 기본값은 0입니다.

    • 예: int a = 100000, int b = -200000.

    숫자형 - 정수형
long:

long 데이터 유형은 2의 보수로 표현되는 64비트 부호 있는 정수입니다. 🎜>

    최소값은 -9,223,372,036,854,775,808(-2^63)입니다.
    • 최대값은 9,223,372,036입니다. ,8 54,775,807 (2^63 -1);
    • 이 유형은 주로 큰 정수를 비교해야 하는 시스템에 사용됩니다. 🎜>
    • 기본값은 0L입니다.

    • 예: long a = 100000L, Long b = -200000L.

    • 숫자형 - 부동소수점형

      float:

float 데이터 유형은 단정밀도, 32비트, IEEE 754 호환 부동 소수점 숫자입니다. float는 큰 부동 소수점 배열을 저장할 때 메모리 공간을 절약할 수 있습니다.

    • 기본값은 0.0f입니다. ;

    • 부동 소수점 숫자는 통화와 같은 정확한 값을 나타내는 데 사용할 수 없습니다. 🎜>예: float f1 = 234.5f.

숫자 유형 - 부동 소수점 유형 double:

    • 이중 데이터 유형은 배정도, 64비트, IEEE 754 호환 부동 소수점 숫자입니다.

    • 부동 소수점 숫자의 기본 유형은

    • 또한 double 유형은 통화와 같은 정확한 값을 나타낼 수 없습니다. 🎜>

    • 기본값은 0.0d입니다.

    • 예: double d1 = 123.4.

부울 --boolean:

    • 부울 데이터 유형은 1비트의 정보를 나타냅니다.

    • 에는 true와 false의 두 가지 값만 있습니다. ;

    • 이 유형은 참/거짓 상황을 기록하는 플래그로만 사용됩니다. 🎜>기본값은 false입니다.

    • 예: 부울 1 = true입니다.

    • 문자 유형 --char:

char 유형은 단일 16비트 유니코드 문자입니다.

    • 최소값은 다음과 같습니다. 'u0000'(즉, 0);

    • 최대값은 'uffff'(즉, 65,535)입니다. >

      char 데이터 유형은 모든 문자를 저장할 수 있습니다.
    • 예: char 문자 = 'A'.
    • Instance

    숫자 유형의 기본 유형에 대해 해당 값은 해당 패키징 클래스에 상수 형식으로 정의되어 있으므로 값 범위를 기억할 필요가 없습니다. 다음 예를 살펴보십시오.

public class PrimitiveTypeTest {  
    public static void main(String[] args) {  
        // byte  
        System.out.println("基本类型:byte 二进制位数:" + Byte.SIZE);  
        System.out.println("包装类:java.lang.Byte");  
        System.out.println("最小值:Byte.MIN_VALUE=" + Byte.MIN_VALUE);  
        System.out.println("最大值:Byte.MAX_VALUE=" + Byte.MAX_VALUE);  
        System.out.println();  
  
        // short  
        System.out.println("基本类型:short 二进制位数:" + Short.SIZE);  
        System.out.println("包装类:java.lang.Short");  
        System.out.println("最小值:Short.MIN_VALUE=" + Short.MIN_VALUE);  
        System.out.println("最大值:Short.MAX_VALUE=" + Short.MAX_VALUE);  
        System.out.println();  
  
        // int  
        System.out.println("基本类型:int 二进制位数:" + Integer.SIZE);  
        System.out.println("包装类:java.lang.Integer");  
        System.out.println("最小值:Integer.MIN_VALUE=" + Integer.MIN_VALUE);  
        System.out.println("最大值:Integer.MAX_VALUE=" + Integer.MAX_VALUE);  
        System.out.println();  
  
        // long  
        System.out.println("基本类型:long 二进制位数:" + Long.SIZE);  
        System.out.println("包装类:java.lang.Long");  
        System.out.println("最小值:Long.MIN_VALUE=" + Long.MIN_VALUE);  
        System.out.println("最大值:Long.MAX_VALUE=" + Long.MAX_VALUE);  
        System.out.println();  
  
        // float  
        System.out.println("基本类型:float 二进制位数:" + Float.SIZE);  
        System.out.println("包装类:java.lang.Float");  
        System.out.println("最小值:Float.MIN_VALUE=" + Float.MIN_VALUE);  
        System.out.println("最大值:Float.MAX_VALUE=" + Float.MAX_VALUE);  
        System.out.println();  
  
        // double  
        System.out.println("基本类型:double 二进制位数:" + Double.SIZE);  
        System.out.println("包装类:java.lang.Double");  
        System.out.println("最小值:Double.MIN_VALUE=" + Double.MIN_VALUE);  
        System.out.println("最大值:Double.MAX_VALUE=" + Double.MAX_VALUE);  
        System.out.println();  
  
        // char  
        System.out.println("基本类型:char 二进制位数:" + Character.SIZE);  
        System.out.println("包装类:java.lang.Character");  
        // 以数值形式而不是字符形式将Character.MIN_VALUE输出到控制台  
        System.out.println("最小值:Character.MIN_VALUE="  
                + (int) Character.MIN_VALUE);  
        // 以数值形式而不是字符形式将Character.MAX_VALUE输出到控制台  
        System.out.println("最大值:Character.MAX_VALUE="  
                + (int) Character.MAX_VALUE);  
    }  
}

위 코드를 컴파일한 결과는 다음과 같습니다.



基本类型:byte 二进制位数:8
包装类:java.lang.Byte
最小值:Byte.MIN_VALUE=-128
最大值:Byte.MAX_VALUE=127

基本类型:short 二进制位数:16
包装类:java.lang.Short
最小值:Short.MIN_VALUE=-32768
最大值:Short.MAX_VALUE=32767

基本类型:int 二进制位数:32
包装类:java.lang.Integer
最小值:Integer.MIN_VALUE=-2147483648
最大值:Integer.MAX_VALUE=2147483647

基本类型:long 二进制位数:64
包装类:java.lang.Long
最小值:Long.MIN_VALUE=-9223372036854775808
最大值:Long.MAX_VALUE=9223372036854775807

基本类型:float 二进制位数:32
包装类:java.lang.Float
最小值:Float.MIN_VALUE=1.4E-45
最大值:Float.MAX_VALUE=3.4028235E38

基本类型:double 二进制位数:64
包装类:java.lang.Double
最小值:Double.MIN_VALUE=4.9E-324
最大值:Double.MAX_VALUE=1.7976931348623157E308

基本类型:char 二进制位数:16
包装类:java.lang.Character
最小值:Character.MIN_VALUE=0
最大值:Character.MAX_VALUE=65535

Float和Double的最小值和最大值都是以科学记数法的形式输出的,结尾的"E+数字"表示E之前的数字要乘以10的多少次方。比如3.14E3就是3.14 × 103 =3140,3.14E-3 就是 3.14 x 10-3 =0.00314。



实际上,JAVA中还存在另外一种基本类型 void,它也有对应的包装类 java.lang.Void,不过我们无法直接对它们进行操作。




二、引用类型


在Java中,引用类型的变量非常类似于C/C++的指针。引用类型指向一个对象,指向对象的变量是引用变量。这些变量在声明时被指定为一个特定的类型,比如Employee、Pubby等。变量一旦声明后,类型就不能被改变了。


需要注意:

  1. 对象、数组都是引用数据类型。

  2. 所有引用类型的默认值都是null。

  3. 一个引用变量可以用来引用与任何与之兼容的类型。

  • 例子:Site site = new Site("Runoob")。




Java数据类型转换


Java 语言是一种强类型的语言。强类型的语言有以下几个要求:


  • 变量或常量必须有类型:要求声明变量或常量时必须声明类型,而且只能在声明以后才能使用。

  • 赋值时类型必须一致:值的类型必须和变量或常量的类型完全一致。

  • 运算时类型必须一致:参与运算的数据类型必须一致才能运算。



但是在实际的使用中,经常需要在不同类型的值之间进行操作,这就需要一种新的语法来适应这种需要,这个语法就是数据类型转换。


在数值处理这部分,计算机和现实的逻辑不太一样,对于现实来说,1和 1.0 没有什么区别,但是对于计算机来说,1 是整数类型,而 1.0 是小数类型,其在内存中的存储方式以及占用的空间都不一样,所以类型转换在计算机内部是必须的。


Java 语言中的数据类型转换有两种:



  • 自动类型转换:编译器自动完成类型转换,不需要在程序中编写代码。

  • 强制类型转换:强制编译器进行类型转换,必须在程序中编写代码。



由于基本数据类型中 boolean 类型不是数字型,所以基本数据类型的转换是出了 boolean 类型以外的其它 7 种类型之间的转换。下面来具体介绍两种类型转换的规则、适用场合以及使用时需要注意的问题。

一、自动类型转换


自动类型转换,也称隐式类型(隐含类型)转换,是指不需要书写代码,由系统自动完成的类型转换。由于实际开发中这样的类型转换很多,所以 Java 语言在设计时,没有为该操作设计语法,而是由 JVM 自动完成。 当范围低的基本类型和范围高的基本类型做运算时,范围低的就会自动转换为高范围的类型,还有,当子类赋给父类变量时,也属于自动类型转换。而一般强制类型转换就是反过来说,也是他们的区别

  • 1. 整数的默认类型时int

  • 2. 浮点型不存在这种情况,因为在定义float类型时必须在数字后面跟上F或者f



转换规则:从存储范围小的类型到存储范围大的类型。
具体规则为:byte→short(char)→int→long→float→double

所有,整型、实型(常量)、字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算。转换从 --> 低级到高级。


byte,short,char—> int —> long—> float —> double


也就是说 byte 类型的变量可以自动转换为 short 类型,示例代码:


byte  b  =  10;



short  sh  =  b;这里在赋值时,JVM 首先将 b 的值转换为 short 类型,然后再赋值给 sh。
在类型转换时可以跳跃。示例代码:



byte  b1  =  100;int  n  =  b1;



注意问题 : 在整数之间进行类型转换时,数值不发生改变,而将整数类型,特别是比较大的整数类型转换成小数类型时,由于存储方式不同,有可能存在数据精度的损失。

 

  • int i =128;   byte b = (byte)i;

    因为byte类型时8位,最大值为127,所以当强制转换为int类型值128时候就会导致溢出。


  • ——浮点数到整数的转换是通过舍弃小数得到,而不是四舍五入,例如:

    (int)23.7 == 23;		(int)-45.89f == -45

必须满足转换前的数据类型的位数要低于转换后的数据类型,例如: short数据类型的位数为16位,就可以自动转换位数为32的int类型,同样float数据类型的位数为32,可以自动转换为64位的double类型。

数据类型转换必须满足如下规则:

1. 不能对boolean类型进行类型转换。

2. 不能把对象类型转换成不相关类的对象。

3. 在把容量大的类型转换为容量小的类型时必须使用强制类型转换。

4. 转换过程中可能导致溢出或损失精度,例如:

public class ZiDongLeiZhuan{
        public static void main(String[] args){
            char cao1='a';//定义一个char类型
            int it1 = cao1;//char自动类型转换为int
            System.out.println("char自动类型转换为int后的值等于"+it1);
            char cao2 = 'A';//定义一个char类型
            int it2 = cao2+10;//char 类型和 int 类型计算
            System.out.println("char类型和int计算后的值等于"+it2);
        }
}


运行结果为:


char自动类型转换为int后的值等于 97
char类型和int计算后的值等于 75


解析:

     cao1 的值为字符'a', 查 ascii 码表可知对应的int类型值为 97( 文章最后会提供 ASCII 表 )

那么字符 cao2 的'A'   对应值为65,所以it2=65+10=75。


二、强制类型转换

  • 强制类型转换,也称显式类型转换,是指必须书写代码才能完成的类型转换。该类类型转换很可能存在精度的损失,所以必须书写相应的代码,并且能够忍受该种损失时才进行该类型的转换。

  • 1. 条件是转换的数据类型必须是兼容的。

  • 2. 格式:(type)value type是要强制类型转换后的数据类型 

  • 实例:

  • public class QiangZhiZhuanHuan{
            public static void main(String[] args){
                int i1 = 123456;
                byte b = (byte)i1;//强制类型转换为byte
                System.out.println("int强制类型转换为byte后的值等于"+b);
                
            }
    }
  • 运行结果:

    int强制类型转换为byte后的值等于 12356

转换规则:从存储范围大的类型到存储范围小的类型。

具体规则为:double→float→long→int→short(char)→byte

语法格式为:(转换到的类型)需要转换的值

示例代码:


double  d  =  3.10;int  n  =  (int)d;


这里将 double 类型的变量 d 强制转换成 int 类型,然后赋值给变量 n。需要说明的是小数强制转换为整数,采用的是“去 1 法”,也就是无条件的舍弃小数点的所有数字,则以上转换出的结果是 3。整数强制转换为整数时取数字的低位,例如 int 类型的变量转换为 byte 类型时,则只去 int 类型的低 8 位(也就是最后一个字节)的值。


示例代码:


int  n  =  123;byte  b  =  (byte)n;int  m  =  1234;byte  b1  =  (byte)m;


则 b 的值还是 123,而 b1 的值为-46。

b1 的计算方法如下:m 的值转换为二进制是10011010010,取该数字低8位的值作为b1的值,则b1的二进制值是11010010,按照机器数的规定,最高位是符号位,1 代表负数,在计算机中负数存储的是补码,则该负数的原码是 10101110,该值就是十进制的-46。


注意问题:强制类型转换通常都会存储精度的损失,所以使用时需要谨慎。


Java的常量

常量在程序运行时,不会被修改的量。

在 Java 中使用 final 关键字来修饰常量,声明方式和变量类似:

final double PI = 3.1415927;

虽然常量名也可以用小写,但为了便于识别,通常使用大写字母表示常量。

字面量可以赋给任何内置类型的变量。例如:

byte a = 68;
char a = 'A'

byte、int、long、和short都可以用十进制、16进制以及8进制的方式来表示。

当使用常量的时候,前缀0表示8进制,而前缀0x代表16进制。例如:

int decimal = 100;
int octal = 0144;
int hexa =  0x64;


和其他语言一样,Java的字符串常量也是包含在两个引号之间的字符序列。下面是字符串型字面量的例子:

"Hello World"
"two\nlines"
"\"This is in quotes\""

字符串常量和字符常量都可以包含任何Unicode字符。例如:

char a = '\u0001';
String a = "\u0001";



Java语言支持一些特殊的转义字符序列:


기호 문자 의미
n 라인피드(0x0a)
r 입력(0x0d )
f 폼 피드(0x0c)
b 백스페이스(0x08)
s 스페이스(0x20)
t
" 큰따옴표
' 작은따옴표
\ 백슬래시
ddd 8진수 문자(ddd)
uxxxx 16진수 유니코드 문자(xxxx)



첨부: ASCII 테이블

ASCII 表

위 내용은 JAVA Pit 튜토리얼 2장 기본 자료형 내용입니다. , 더 많은 관련 내용을 보려면 PHP 중국어 웹사이트(www.php.cn)를 주목하세요!


성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
고급 Java 프로젝트 관리, 구축 자동화 및 종속성 해상도에 Maven 또는 Gradle을 어떻게 사용합니까?고급 Java 프로젝트 관리, 구축 자동화 및 종속성 해상도에 Maven 또는 Gradle을 어떻게 사용합니까?Mar 17, 2025 pm 05:46 PM

이 기사에서는 Java 프로젝트 관리, 구축 자동화 및 종속성 해상도에 Maven 및 Gradle을 사용하여 접근 방식과 최적화 전략을 비교합니다.

적절한 버전 및 종속성 관리로 Custom Java 라이브러리 (JAR Files)를 작성하고 사용하려면 어떻게해야합니까?적절한 버전 및 종속성 관리로 Custom Java 라이브러리 (JAR Files)를 작성하고 사용하려면 어떻게해야합니까?Mar 17, 2025 pm 05:45 PM

이 기사에서는 Maven 및 Gradle과 같은 도구를 사용하여 적절한 버전 및 종속성 관리로 사용자 정의 Java 라이브러리 (JAR Files)를 작성하고 사용하는 것에 대해 설명합니다.

카페인 또는 구아바 캐시와 같은 라이브러리를 사용하여 자바 애플리케이션에서 다단계 캐싱을 구현하려면 어떻게해야합니까?카페인 또는 구아바 캐시와 같은 라이브러리를 사용하여 자바 애플리케이션에서 다단계 캐싱을 구현하려면 어떻게해야합니까?Mar 17, 2025 pm 05:44 PM

이 기사는 카페인 및 구아바 캐시를 사용하여 자바에서 다단계 캐싱을 구현하여 응용 프로그램 성능을 향상시키는 것에 대해 설명합니다. 구성 및 퇴거 정책 관리 Best Pra와 함께 설정, 통합 및 성능 이점을 다룹니다.

캐싱 및 게으른 하중과 같은 고급 기능을 사용하여 객체 관계 매핑에 JPA (Java Persistence API)를 어떻게 사용하려면 어떻게해야합니까?캐싱 및 게으른 하중과 같은 고급 기능을 사용하여 객체 관계 매핑에 JPA (Java Persistence API)를 어떻게 사용하려면 어떻게해야합니까?Mar 17, 2025 pm 05:43 PM

이 기사는 캐싱 및 게으른 하중과 같은 고급 기능을 사용하여 객체 관계 매핑에 JPA를 사용하는 것에 대해 설명합니다. 잠재적 인 함정을 강조하면서 성능을 최적화하기위한 설정, 엔티티 매핑 및 모범 사례를 다룹니다. [159 문자]

Java의 클래스로드 메커니즘은 다른 클래스 로더 및 대표 모델을 포함하여 어떻게 작동합니까?Java의 클래스로드 메커니즘은 다른 클래스 로더 및 대표 모델을 포함하여 어떻게 작동합니까?Mar 17, 2025 pm 05:35 PM

Java의 클래스 로딩에는 부트 스트랩, 확장 및 응용 프로그램 클래스 로더가있는 계층 적 시스템을 사용하여 클래스로드, 링크 및 초기화 클래스가 포함됩니다. 학부모 위임 모델은 핵심 클래스가 먼저로드되어 사용자 정의 클래스 LOA에 영향을 미치도록합니다.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

mPDF

mPDF

mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

DVWA

DVWA

DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

SecList

SecList

SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

MinGW - Windows용 미니멀리스트 GNU

MinGW - Windows용 미니멀리스트 GNU

이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.