Java 基本数据类型
Java数据类型教程 - Java基本数据类型
Java定义了八种基本类型的数据:byte,short,int,long,char,float,double和boolean。
基本类型通常被称为简单类型。
这些可以分为四组:
- Integers - 包括byte,short,int和long,用于整数有符号数字。
- Floating-point numbers - 包括float和double,它们表示具有分数精度的数字。
- Characters - 包括char,它表示字符集中的符号,如字母和数字。
- Boolean - 此组包括布尔值,它是用于表示true/false值的特殊类型。
你可以使用这些类型来构造数组或你自己的类类型。
基本类型表示单个值,而不是复杂对象。虽然Java完全是面向对象的,但原语类型不是。
原始类型具有显式范围和数学行为。
强类型
Java是一种强类型语言。
每个变量都有一个类型,每个表达式都有一个类型,每个类型都严格定义。
检查所有分配的类型兼容性。
没有自动强制或有冲突类型的转换。
Java编译器检查所有表达式和参数,以确保类型是兼容的。
Java int数据类型
Java数据类型教程 - Java int数据类型
int数据类型是32位有符号Java原语数据类型。
int数据类型的变量需要32位内存。
其有效范围为-2,147,483,648至2,147,483,647(-231至231 - 1)。
此范围中的所有整数称为整数字面量。
例如,10,-200,0,30,19等是int的整数字面值。
一个整数字面量可以分配给一个int变量,如num1,像这样:
int num1 = 21;
整数字面量
整数字面量也可以表示
- 十进制数字格式
- 八进制数字格式
- 十六进制数字格式
- 二进制数格式
当整数字面量以零开始并且至少有两个数字时,它被认为是八进制数格式。
以下代码行将十进制值17(八进制为021)分配给num1:
// 021 is in octal number format, not in decimal int num1 = 021;
以下两行代码具有将值17分配给变量num1的相同效果:
以下值没有前导零,它是十进制数字格式。
int num1 = 17;
以下值具有前导零,因此它是一个八进制数字格式。八进制中的021与十进制中的17相同。
int num1 = 021;
八进制格式的int字面值必须至少有两位数字,并且必须以零开始以作为八进制数处理。
数字0在十进制数格式中被视为零,并且以八进制数格式将00视为零。
十六进制数字格式的所有int字面量都以0x或0X开头,它们必须至少包含一个十六进制数字。
十六进制数字格式使用16位数字,0-9和A-F(或a-f)。
字母A至F的情况无关紧要。
以下是以十六进制格式使用int字面量的示例:
int num1 = 0x123; int num2 = 0xdecafe; int num3 = 0x1A2B; int num4 = 0X0123;
可以使用二进制数字格式表示一个int字面量。
所有二进制数字格式的int文字以0b或0B开头。
以下是使用二进制数字格式的int字面量的示例:
int num1 = 0b10101; int num2 = 0b00011; int num3 = 0b10; int num4 = 0b00000010;
Java有一个名为Integer的类,它定义两个常量来表示int数据类型的最大值和最小值,即Integer.MAX_VALUE和Integer.MIN_VALUE。例如,
int max = Integer.MAX_VALUE; // Assigns maximum int value to max int min = Integer.MIN_VALUE; // Assigns minimum int value to min
Java long数据类型
Java数据类型教程 - Java long数据类型
longjava基础字节大小数据类型是64位有符号Java原始数据类型。
当对整数的计算结果可能超出int数据类型的范围时使用。
其范围是 -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 (-263 to 263 - 1)。
long的范围内的所有整数称为long类型的整数字面量。 long类型的整数常数总是以L或小写l结尾。
以下是使用long类型的整数字面量的示例:
long num1 = 0L; long num2 = 4L; long mum3 = -3; long num4 = 8; long num5 = -1L;
长整型字面量
long类型的整数字面量可以用八进制,十六进制和二进制格式表示。例如,
long num1; num1 = 25L; // Decimal format num1 = 031L; // Octal format num1 = 0X19L; // Hexadecimal format num1 = 0b11001L; // Binary format
当long 字面量分配给long类型的变量时,Java编译器检查要分配的值,并确保它在长数据类型的范围内;否则会产生编译时错误。
注意
从int到long的赋值是有效的,因为可以存储在int变量中的所有值都可以存储在long变量中。然而,相反的是不是真的。
您不能简单地将存储在long变量中的值分配给int变量。
存在值溢出的可能性。
要将long变量的值赋给int变量,请在Java中使用“cast”,如下所示:
num1 = (int)num2;
Java有一个类Long,它定义了两个常量来表示长数据类型Long.MAX_VALUE和Long.MIN_VALUE的最大值和最小值。
long max = Long.MAX_VALUE; long min = Long.MIN_VALUE;
Java byte数据类型
Java数据类型教程 - Java byte数据类型
字节数据类型是8位有符号Java原语整数数据类型。
其范围为-128至127 (-27 to 27 - 1)。
字节类型是Java中可用的最小整数数据类型。
当程序使用其值在-128到127范围内的大量变量或在文件或网络中处理二进制数据时,使用字节变量。
没有字节字面量。我们可以将任何落在字节范围内的int字面量分配给一个字节变量。
例如,
byte b1 = 125; byte b2 = -11;
如果我们为字节变量分配一个int字面量,并且该值超出了字节数据类型的范围,则Java会产生编译器错误。
我们只能在-128和127之间分配一个int字面量到一个字节变量。但是我们可以将存储在一个int变量中的值(其范围为-128到127)分配给一个字节变量。
在Java中,我们不能将较高范围数据类型的变量的值分配给较低范围数据类型的变量,因为在进行这种赋值时可能会损失精度。
要做这样的赋值从int到字节,我们必须使用cast。
num1到b1的分配可以改写如下:
int num1 = 1; byte b1 = (byte)num1; // Ok
Java有一个类,它定义了两个常量来表示字节数据类型的最大和最小值,Byte.MAX_VALUE和Byte.MIN_VALUE。
byte max = Byte.MAX_VALUE; byte min = Byte.MIN_VALUE;
Java short数据类型
Java数据类型教程 - Java short数据类型
short数据类型是16位有符号Java原语整数数据类型。 其范围是-32768至32767(或-2 15 15 - 1)。
没有short字面量。但是,我们可以将任何位于short(-32768到32767)范围内的int字面量分配给一个短变量。
例如,
short s1 = 11111; // ok short s2 = -11111; // ok
字节变量的值可以分配给短变量,因为字节数据类型的范围落在短数据类型的范围内。
Java有一个名为Short的类,它定义了两个常量来表示短数据类型Short.MAX_VALUE和Short.MIN_VALUE的最大值和最小值。
short max = Short.MAX_VALUE; short min = Short.MIN_VALUE;
Java char数据类型
Java数据类型教程 - Java char数据类型
char数据类型是16位无符号Java基元数据类型。它表示Unicode字符。
请注意,char是无符号数据类型。因此,char变量不能为负值。
字符数据类型的范围为0到65535,这与Unicode集的范围相同。
字符字面量
字符字面量表示char数据类型的值。 Java中的字符字面量可以用以下格式表示:
- 用单引号括起来的字符
- 作为字符转义序列
- 作为Unicode转义序列
- 作为八进制转义序列
字符可以通过用单引号括起来表示。
以下代码段使用此形式为char变量赋值:
char c1 = 'A'; char c2 = 'L'; char c3 = '5'; char c4 = '/';
用双引号括起来的字符序列是一个String字面量。
不能将字符串字面量分配给char变量,即使String字面量只有一个字符。
字符转义序列
字符字面量可以表示为字符转义序列。
字符转义序列以反斜杠开头,后面紧跟一个字符,并且都用单引号括起来。
有八个预定义的字符转义序列,如下表所列。
Java中只有八个字符转义序列。我们不能定义你自己的字符转义序列。
char c1 = " "; // Assigns a linefeed to c1 char c2 = """; // Assigns double quote to c2 char c3 = "a"; // A compile-time error. Invalid character escape sequence
Unicode
字符字面量可以表示为“ uxxxx”形式的Unicode转义序列。
这里,被分配值88,它是对应于字母X的ASCII和Unicode值。ASCII字符集占据Unicode字符集中的前127个值。
上面的代码生成以下结果。
![]()
例2
char旨在保存Unicode字符,但它也可以用作整数类型,您可以在其上执行算术运算。
例如,您可以将两个字符添加在一起,或者增加一个字符变量的值。
public class Main { public static void main(String args[]) { char ch1; ch1 = "X"; System.out.println("ch1 contains " + ch1); ch1++; // increment ch1 System.out.println("ch1 is now " + ch1); } }
在程序中,首先给ch1赋值X.接下来,ch1递增。这导致ch1包含Y,ASCII(和Unicode)序列中的下一个字符。
上面的代码生成以下结果。

Java boolean数据类型
Java数据类型教程 - Java boolean数据类型
布尔数据类型只有两个有效值:true和false。
这两个值称为布尔值字面量。
我们可以使用布尔值字面量
boolean done; // Declares a boolean variable named done done = true; // Assigns true to done
布尔变量不能转换为任何其他数据类型,反之亦然。
是所有关系运算符返回的类型,如<b。
是控制控制语句的条件表达式所需的类型,例如if和for。
例子
这里是一个程序,演示布尔类型:
public class Main { public static void main(String args[]) { boolean b; b = false; System.out.println("b is " + b); b = true; System.out.println("b is " + b); b = false; if (b) System.out.println("This is not executed."); // outcome of a relational operator is a boolean value System.out.println("10 > 9 is " + (10 > 9)); } }
上面的代码生成以下结果。

Java float数据类型
Java数据类型教程 - Java float数据类型
浮点数据类型
当评估需要分数精度的表达式时,使用浮点数(也称为实数)。
包含小数部分的数字称为实数,例如,3.2,0.114,-1.19等。
Java支持浮点数格式。 Java使用IEEE 754浮点标准存储实数。
有两种类型的浮点类型,float和double,分别表示单精度和双精度数。
它们的宽度和范围如下所示:
浮点数据类型
浮点数据类型使用32位来存储浮点数。
浮点数也称为单精度浮点数。它可以表示一个小到1.4×10-45和大到3.4×1038的大小的实数。
该范围仅包括幅度。它可以是正的或负的。
所有以f或F结尾的实数称为浮点文字。浮点文本可以用以下两种格式表示:
- 十进制数字格式
- 科学计数法
浮点字面量
十进制数字格式的浮点文本示例如下:
float f1 = 1F; float f2 = 2.F; float f3 = 3.0F; float f4 = 4.51F; float f5 = 5.0F; float f6 = 56.78f;
在Java中,实数可以使用科学记数法表示为浮点文本。
在科学记数法中,数字32.5×10-1 被写为32.5E-1。作为浮点文本,它可以写作32.5E-1F或32.5E-1f。
所有以下浮点文本表示相同的实数4.25:
4.25F 42.5E-1F 0.425E+1F 0.425E1F 0.0425E2F 0.0425e2F 4.25E0F
float数据类型定义两个零:+ 0.0F(或0.0F)和-0.0F。 + 0.0F和-0.0F都被认为是相等的。
float数据类型定义了两个无穷大:正无穷大和负无穷大。
未定义浮动上的一些操作的结果。例如,将0.0F除以0.0F是不确定的。
不确定的结果由称为NaN(非数字)的float数据类型的特殊值表示。
Java有一个类,它定义了三个常量,分别表示正数无穷大,负无穷大和浮点数据类型的NaN。
下表列出了这三个浮动常量及其含义。
所有整型类型(int,long,byte,short和char)的值都可以分配给float数据类型的变量,而不使用显式强制转换。
在将float值分配给任何整数数据类型int,long,byte,short或char的变量之前,必须强制转换该值。
将int和long赋值为float可能会导致精度损失。
Java double数据类型
Java数据类型教程 - Java double数据类型
double数据类型使用64位来存储浮点数。double值也称为双精度浮点数。
它可以表示数量小到4.9 x 10-324和大到1.7 x 10308大小。
它可以是正的或负的。
所有实数被称为双精度字面量。双精度字面量可以可选地以d或D结尾,例如1.27d。
后缀d或D在双精度字面量中是可选的。
19.7和19.7d代表相同的双精度字面量。
双精度字面量
双精度字面值可以用以下两种格式表示:
- 十进制数字格式
- 科学计数法
十进制数字格式的双精度字面值示例如下: double d1 = 8D;
double d1 = 8D ; double d2 = 8.; double d3 = 8.0; double d4 = 8.D; double d5 = 78.9867; double d6 = 45.0;
8是一个int字面量,而8D,8和8.0是双精度字面量。
我们还可以使用科学记数法表达双精度字面量。
double d1 = 32.5E-1; double d2 = 0.325E+1; double d3 = 0.325E1; double d4 = 0.0325E2; double d5 = 0.0325e2; double d6 = 32.5E-1D; double d7 = 0.325E+1d; double d8 = 0.325E1d; double d9 = 0.0325E2d;
注意
double数据类型定义了两个零,两个无穷大和一个NaN。它们由Double类中的常量表示。
下表列出了这些常量及其含义。
可以将所有整型类型(int,long,byte,short,char)和float的值分配给双精度数据类型的变量,而不使用显式强制转换。
int num1 = 15; double salary = num1; salary = 12345; double bigNum = Double.MAX_VALUE; bigNum = 1234L; double justAChar = "A"; double dInf = Double.POSITIVE_INFINITY; double dNan = Double.NaN;
在将double值分配给任何整数数据类型(int,long,byte,short或char)的变量之前,必须将其转换为整数类型。
Java 下划线数字字面量
Java数据类型教程 - Java下划线数字字面量
我们可以在数字字面量中的两位数字之间使用下划线。
例如,一个int文字2014可以写成2_014,20_14,201_4。
允许以八进制,十六进制和二进制格式使用下划线。
int下划线大数字使得它们更容易阅读。
以下示例显示数字字面量中下划线的有效用法:
int x1 = 2_014; // Underscore in deciaml format int x2 = 2___014; // Multiple consecutive underscores int x3 = 02_014; // Underscore in octal literal int x4 = 0b0111_1011_0001; // Underscore in binary literal int x5 = 0x7_B_1; // Underscores in hexadecimal literal byte b1 = 1_2_7; // Underscores in decimal format double d1 = 2_014.01_11; // Underscores in double literal
在数字字面量中只允许在数字之间使用下划线。
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.bianchenghao6.com/h6javajc/3472.html