主要有两种语言。
- 首先,一个是 静态类型语言 其中每个变量和表达式类型在编译时都是已知的。一旦一个变量被声明为某个数据类型,它就不能保存其他数据类型的值。 例子: C、C++、java。
- 另一个是 动态类型语言。 随着时间的推移,这些语言可以接收不同的数据类型。 例子: Ruby,Python
Java是 静态类型,也是一种强类型语言 因为在Java中,每种类型的数据(如整数、字符、十六进制、压缩十进制等)都是作为编程语言的一部分预定义的,并且为给定程序定义的所有常量或变量都必须使用其中一种数据类型来描述。
Java中的数据类型
Java有两类数据:
- 基本数据类型: 例如布尔、字符、整型、短型、字节、长型、浮点和双精度
- 非基本数据类型或对象数据类型: 例如字符串、数组等。
基本数据类型
原始数据只是单个值,没有特殊功能。
基本数据类型的类型
有 8原始数据类型。 这些是:
1.布尔值: 布尔数据类型只表示一位信息 不是真是假 ,但布尔数据类型的大小为 依赖虚拟机 .boolean类型的值不会隐式或显式(使用强制转换)转换为任何其他类型。但是程序员可以很容易地编写转换代码。
语法:
boolean booleanVar;
尺寸:
virtual machine dependent
价值观:
true, false
默认值:
false
JAVA
// Java program to demonstrate boolean data type class GeeksforGeeks { public static void main(String args[]) { boolean b = true ; if (b == true ) System.out.println( "Hi Geek" ); } } |
Hi Geek
2.字节: 字节数据类型是一个8位有符号2的补码整数。字节数据类型对于在大型阵列中节省内存非常有用。
语法:
byte byteVar;
尺寸:
1 byte ( 8 bits )
价值观:
-128 to 127
默认值:
0
JAVA
// Java program to demonstrate byte data type in Java class GeeksforGeeks { public static void main(String args[]) { byte a = 126 ; // byte is 8 bit value System.out.println(a); a++; System.out.println(a); // It overflows here because // byte can hold values from -128 to 127 a++; System.out.println(a); // Looping back within the range a++; System.out.println(a); } } |
126127-128-127
3.简短: 短数据类型是一个16位有符号2的补码整数。与字节类似,在内存节省非常重要的情况下,使用短字符在大型阵列中节省内存。
语法:
short shortVar;
尺寸:
2 byte ( 16 bits )
价值观:
-32, 768 to 32, 767 (inclusive)
默认值:
0
4.int :它是一个32位有符号2的补码整数。
语法:
int intVar;
尺寸:
4 byte ( 32 bits )
价值观:
-2, 147, 483, 648 to 2, 147, 483, 647 (inclusive)
默认值:
0
注: 在JavaSE8及更高版本中,我们可以使用int数据类型来表示一个无符号32位整数,其值在[0,2]范围内 32 -1]. 使用Integer类将int数据类型用作无符号整数。
5.长: 长数据类型是64位2的补码整数。
语法:
long longVar;
尺寸:
8 byte ( 64 bits )
价值观:
-9, 223, 372, 036, 854, 775, 808 to 9, 223, 372, 036, 854, 775, 807 (inclusive)
默认值:
0
注: 在Java SE 8及更高版本中,可以使用long数据类型来表示无符号的64位long,其最小值为0,最大值为2 64 -1.Long类还包含比较无符号、除法无符号等方法,以支持无符号Long的算术运算。
6.浮动: 浮点数据类型是单精度32位IEEE 754浮点。如果需要在大量浮点数数组中保存内存,请使用浮点(而不是双精度)。
语法:
float floatVar;
尺寸:
4 byte ( 32 bits )
价值观:
upto 7 decimal digits
默认值:
0.0
7.双倍: 双数据类型是双精度64位IEEE 754浮点。对于十进制值,此数据类型通常是默认选择。
语法:
double doubleVar;
尺寸:
8 byte ( 64 bits )
价值观:
upto 16 decimal digits
默认值:
0.0
注: 浮点和双精度数据类型都是专门为科学计算而设计的,在科学计算中,近似误差是可以接受的。如果准确性是首要考虑的问题,建议不要使用这些数据类型,而是使用BigDecimal类。有关详细信息,请参见: Java中的四舍五入错误
8.字符 :char数据类型是单个16位Unicode字符。
语法:
char charVar;
尺寸:
2 byte ( 16 bits )
价值观:
'u0000' (0) to 'uffff' (65535)
默认值:
'u0000'
为什么在java中字符的大小是2字节。。?
在C/C++等其他语言中,只使用ASCII字符,并且表示所有ASCII字符8位就足够了, 但是java使用Unicode系统,而不是ASCII码系统,为了表示Unicode系统,8位不足以表示所有字符,所以java使用2字节作为字符。
Unicode 定义一个完全国际化的字符集,可以代表世界上大多数书面语言。它是几十个字符集的统一,比如拉丁语、希腊语、, 西里尔语、片假名、阿拉伯语 , 还有更多。
JAVA
// Java program to demonstrate // primitive data types in Java class GeeksforGeeks { public static void main(String args[]) { // declaring character char a = 'G' ; // Integer data type is generally // used for numeric values int i = 89 ; // use byte and short // if memory is a constraint byte b = 4 ; // this will give error as number is // larger than byte range // byte b1 = 7888888955; short s = 56 ; // this will give error as number is // larger than short range // short s1 = 87878787878; // by default fraction value // is double in java double d = 4.355453532 ; // for float use 'f' as suffix float f = 4 .7333434f; System.out.println( "char: " + a); System.out.println( "integer: " + i); System.out.println( "byte: " + b); System.out.println( "short: " + s); System.out.println( "float: " + f); System.out.println( "double: " + d); } } |
char: Ginteger: 89byte: 4short: 56float: 4.7333436double: 4.355453532
非基本数据类型或引用数据类型
这个 参考数据类型 将包含变量值的内存地址,因为引用类型不会将变量值直接存储在内存中。它们是字符串、对象、数组等。
- 一串 :字符串定义为字符数组。Java中字符数组和字符串的区别在于,字符串被设计为在单个变量中保存字符序列,而字符数组是单独的字符类型实体的集合。
- 与C/C++不同,Java字符串不会以空字符结尾。 下面是Java编程语言中声明字符串的基本语法。
语法:
<String_Type> <string_variable> = “<sequence_of_string>”;
例子:
// Declare String without using new operator String s = "GeeksforGeeks"; // Declare String using new operator String s1 = new String("GeeksforGeeks");
1. 班 :类是用户定义的蓝图或原型,从中创建对象。它表示一种类型的所有对象所共有的一组属性或方法。一般来说,类声明可以包括以下组件:
- 修饰语 :类可以是公共的,也可以具有默认访问权限(请参阅 Java中类或接口的访问说明符 详细信息)。
- 类名: 名称应以首字母开头(按惯例大写)。
- 超类(如果有): 类的父类(超类)的名称(如果有的话),前面加上关键字extends。一个类只能扩展(子类)一个父类。
- 接口(如有): 由类(如果有)实现的接口的逗号分隔列表,前面有关键字implements。一个类可以实现多个接口。
- 正文: 被大括号{}包围的类主体。
2. 对象 :它是面向对象编程的基本单元,代表现实生活中的实体。典型的Java程序会创建许多对象,正如您所知,这些对象通过调用方法进行交互。对象包括:
- 状态 :它由对象的属性表示。它还反映了对象的属性。
- 行为 :它由对象的方法表示。它还反映了一个对象与其他对象的响应。
- 身份 :它为对象提供唯一的名称,并使一个对象能够与其他对象交互。
3. 界面 : 与类一样,接口可以有方法和变量,但接口中声明的方法在默认情况下是抽象的(只有方法签名,没有人)。
- 接口指定类必须做什么,而不是如何做。这是班级的蓝图。
- 接口是关于功能的,就像一个播放器可能是一个接口,任何实现播放器的类都必须能够(或必须实现)move()。因此它指定了类必须实现的一组方法。
- 如果一个类实现了一个接口,并且没有为接口中指定的所有函数提供方法体,那么该类必须声明为抽象类。
- 下面是一个Java库示例 比较器接口 。如果类实现了此接口,则可以使用它对集合进行排序。
4. 大堆 : 数组是由一组类似类型的变量组成,这些变量由一个公共名称引用。Java中的数组与C/C++中的数组工作方式不同。
下面是关于Java数组的一些要点。
- 在Java中,所有数组都是动态分配的。(下文讨论)
- 因为数组在Java中是对象,所以我们可以使用成员长度来找到它们的长度。这与C/C++不同,C/C++使用大小来计算长度。
- Java数组变量也可以像其他变量一样声明,在数据类型后面加上[]。
- 数组中的变量是有序的,每个变量都有一个从0开始的索引。
- Java数组还可以用作静态字段、局部变量或方法参数。
- 这个 大小 数组的长度必须由int值指定,而不是长或短。
- 数组类型的直接超类是Object。
- 每个数组类型都实现接口 可克隆 和 JAVA伊奥。可序列化 .
查看: Java中的数据类型测试
本文由 Shubham Agrawal .如果你喜欢GeekSforgek,并想贡献自己的力量,你也可以使用 写极客。组织 或者把你的文章寄去评论-team@geeksforgeeks.org.看到你的文章出现在Geeksforgeks主页上,并帮助其他极客。如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。