本文概述
主要有两种类型的语言。
- 首先, 一个是静态类型语言在编译时已经知道每个变量和表达式类型的位置。变量一旦声明为某种数据类型, 便无法保存其他数据类型的值。
例子:C, C ++, Java。 - 另一个是动态类型语言。随着时间的推移, 这些语言可以接收不同的数据类型。
例子:Ruby, Python
Java是
静态类型和强类型语言
因为在Java中, 每种数据类型(例如整数, 字符, 十六进制, 压缩十进制等)都已预先定义为编程语言的一部分, 并且必须使用以下任意一种描述为给定程序定义的所有常量或变量:数据类型。
Java中的数据类型
Java有两类数据:
- 基本数据类型:例如boolean, char, int, short, byte, long, float和double
- 非原始数据类型或对象数据类型:例如String, Array等。
原始数据类型
基本数据只是单个值, 没有特殊功能。
有
8种原始数据类型
:
1.布尔值:
布尔数据类型仅表示一位信息
正确或错误
, 但布尔数据类型的大小为
虚拟机相关
。布尔类型的值不会隐式或显式(使用强制转换)转换为任何其他类型。但是程序员可以轻松地编写转换代码。
- 语法如下:
boolean booleanVar;
- 尺寸:
virtual machine dependent
- 值:
true, false
- 默认值:
false
Java
// Java program to demonstrate boolean data type
class lsbin {
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 lsbin {
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);
}
}
输出如下:
126
127
-128
-127
3.简短:
short数据类型是16位带符号的二进制补码整数。与字节类似, 在实际节省内存的情况下, 使用short可以将内存保存在大型数组中。
- 语法如下:
short shortVar;
- 尺寸:
2 byte ( 16 bits )
- 值:
-32, 768 to 32, 767 (inclusive)
- 默认值:
0
4. int
:
这是一个32位带符号的二进制补码整数。
- 语法如下:
int intVar;
- 尺寸:
4 byte ( 32 bits )
- 值:
-2, 147, 483, 648 to 2, 147, 483, 647 (inclusive)
- 默认值:
0
- 注意:在Java SE 8和更高版本中, 我们可以使用int数据类型表示一个无符号32位整数, 其值范围为[0, 232-1]。使用Integer类可以将int数据类型用作无符号整数。
5.长:
long数据类型是64位二进制补码整数。
- 语法如下:
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, 最大值为264-1。 Long类还包含诸如比较Unsigned, 除以Unsigned等的方法, 以支持无符号long的算术运算。
6.浮动:
float数据类型是单精度32位
IEEE 754
浮点。如果需要将内存保存在大的浮点数数组中, 请使用浮点数(而不是双精度数)。
- 语法如下:
float floatVar;
- 尺寸:
4 byte ( 32 bits )
- 值:
upto 7 decimal digits
- 默认值:
0.0
7.双倍:
double数据类型是双精度64位IEEE 754浮点。对于十进制值, 此数据类型通常是默认选择。
- 语法如下:
double doubleVar;
- 尺寸:
8 byte ( 64 bits )
- 值:
upto 16 decimal digits
- 默认值:
0.0
- 注意:浮点和双精度数据类型都是专门为科学计算而设计的, 在这种计算中, 近似误差是可以接受的。如果精度是最优先考虑的, 那么建议不要使用这些数据类型并使用大十进制类代替。
请查看以下详细信息:消除Java中的错误
8.字符
:
char数据类型是单个16位Unicode字符。
- 语法如下:
char charVar;
- 尺寸:
2 byte ( 16 bits )
- 值:
'\u0000' (0) to '\uffff' (65535)
- 默认值:
'\u0000'
为什么在java ..中char的大小为2个字节?
在C / C ++之类的其他语言中, 仅使用ASCII字符, 并且以8位表示所有ASCII字符就足够了,
但是java使用Unicode系统而不是ASCII代码系统, 并且用Unicode系统表示8位还不足以表示所有字符, 因此java使用2个字节作为字符。
统一码
定义了一个完全国际化的字符集, 可以代表世界上大多数书面语言。它是数十个字符集的统一形式, 例如拉丁语, 希腊语,
西里尔文, 片假名, 阿拉伯文
,
还有很多。
Java
// Java program to demonstrate
// primitive data types in Java
class lsbin {
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: G
integer: 89
byte: 4
short: 56
float: 4.7333436
double: 4.355453532
非原始数据类型或参考数据类型
的
参考数据类型
将包含变量值的内存地址, 因为引用类型不会将变量值直接存储在内存中。他们是
弦
,
对象
,
数组
等
- String:字符串定义为字符数组。 Java中字符数组和字符串之间的区别是, 字符串被设计为在单个变量中包含一系列字符, 而字符数组是单独的char类型实体的集合。
- 与C / C ++不同, Java字符串不以空字符结尾。
以下是使用Java编程语言声明字符串的基本语法。
语法如下:
<String_Type> <string_variable> = "<sequence_of_string>";
- 例子:
// Declare String without using new operator
String s = "lsbin";
// Declare String using new operator
String s1 = new String("lsbin");
- 类:类是用户定义的蓝图或原型, 从中可以创建对象。它表示一种类型的所有对象共有的一组属性或方法。通常, 类声明可以按顺序包括以下组件:
- 修饰符:班级可以是公开的, 也可以具有默认访问权限(请参阅这个有关详细信息)。
- 班级名称:名称应以首字母开头(按惯例大写)。
- 超类(如果有):班级的父级(超类)的名称(如果有的话), 以关键字扩展名开头。一个类只能扩展(子类)一个父级。
- 接口(如果有):由类实现的接口的列表, 以逗号分隔(如果有的话), 并以关键字Implements开头。一个类可以实现多个接口。
- 身体:由括号{}包围的班级正文。
- Object:它是面向对象编程的基本单元, 代表现实生活中的实体。典型的Java程序会创建许多对象, 你知道这些对象通过调用方法进行交互。一个对象包括:
- 州:由对象的属性表示。它还反映了对象的属性。
- 行为:由对象的方法表示。它还反映了一个对象对其他对象的响应。
- 身分识别:它为一个对象赋予唯一的名称, 并使一个对象能够与其他对象进行交互。
- 接口:像类一样, 接口可以具有方法和变量, 但是在接口中声明的方法默认情况下是抽象的(只有方法签名, 没有人)。
- 接口指定类必须执行的操作, 而不指定方法。这是该课程的蓝图。
- 接口是关于功能的, 例如Player可能是接口, 任何实现Player的类都必须能够(或必须实现)move()。因此, 它指定了类必须实现的一组方法。
- 如果一个类实现一个接口并且不为该接口中指定的所有功能提供方法主体, 则该类必须声明为抽象的。
- 一个Java库示例是比较器介面。如果类实现了此接口, 则可以使用它对集合进行排序。
- Array:数组是一组由普通名称引用的相似类型的变量。 Java中的数组与C / C ++中的数组工作方式不同。以下是有关Java数组的一些重要点。
- 在Java中, 所有数组都是动态分配的。 (在下面讨论)
- 由于数组是Java中的对象, 因此我们可以使用成员长度来找到它们的长度。这与C / C ++不同, 在C / C ++中, 我们使用大小来查找长度。
- Java数组变量也可以像其他变量一样在数据类型后声明为[]。
- 数组中的变量是有序的, 每个变量的索引都从0开始。
- Java数组也可以用作静态字段, 局部变量或方法参数。
- 的尺寸数组的值必须由int值指定, 且不能长或短。
- 数组类型的直接超类是Object.
- 每种数组类型都实现接口可克隆的和java.io.Serializable.
- 在Java中, 所有数组都是动态分配的。 (在下面讨论)