Java是一种强类型语言,这意味着每一个变量都必须声明一种类型。在java中,数据类型共分类两大类,即基本数据类型和引用数据类型
基本数据类型: 包括整数类型、浮点数类型、字符类型、布尔类型
引用数据类型:包括数组、 类、接口、枚举、注解等
其中基本数据类型有细分为8中类型,如下图:
整形用于表示没有小数部分的数值,即整数数值(包含负数和0), 不受具体操作系统的影响,以保证 Java 程序的可移植性 。其存储需求及取值范围如下表
类型 |
存储需求 |
取值范围 |
int |
4个字节 |
-2 147 483 648 ~ +2 147 483 647 |
long |
8个字节 |
-9 223 372 036 854 775 808 ~ +9 223 372 036 854 775 8087 |
short |
2个字节 |
-32 768 ~ +32 767 |
byte |
1个字节 |
-128 ~ +127 |
public static void main(String[] args) {
int age = 18;
long n = 80L ;
char gender='男';
byte length = 100;
}
用于表示有小数部分的数值,与整数类型类似,Java 浮点类型也有固定的表数范围和字段长度,不受具体操作系统的影响。 其存储需求及取值范围如下表
类型 |
存储需求 |
取值范围 |
float |
4个字节 |
约-3.403E38 ~+3.403E38 |
double |
8个字节 |
约-1.798E308~ +1.798E308 |
字符型(char)数据用来表示通常意义上"字符",占 2 字节,Java中的所有字符都使用 Unicode 编码,所以一个字符可以存储一个字母,一个汉字,或其他书面语的一个字符。
字符型变量的三种表现形式:
转义序列 |
名称 |
Unicode值 |
转义序列 |
名称 |
Unicode值 |
|
\b |
退格 |
\u0008 |
\ |
双引号 |
\u0022 |
|
\t |
制表符 |
\u0009 |
\' |
单引号 |
\u0027 |
|
\n |
换行符 |
\u000a |
\\ |
反斜杠 |
\u005c |
|
\r |
回车 |
\u000d |
要弄清楚char类型,则必须了解Unicode 编码。Unicode它打破了传统字符编码的限制,因为在此之前,在编码领域存在许多不同的标准,如美国的ASCII,西欧语言中的ISO8859-1,俄国的KOI-8已经我国的GB18030和BIG-5等。至此就产生了两个问题
设计Unicode 编码的初衷就是用来解决这些问题的,在设计之初认为两个字节的代码宽度足以满足世界上各种语言的所有字符进行编码,并有足够的空间留给未来扩展。在1991年发布Unicode1.0时,只占用了65536个代码值中的不到一半
在设计Java时则决定采用16位的Unicode字符集,这样在8位字符集的程序语言有了很大的进步。但是随着时间的推移,Unicode字符已经超过了65536个。由于增加了大量的汉语、日语和韩语的表意文字,现在16位的char类型已经不能满足描述所有Unicode字符的需要了
在java中,char类型用UTF-16编码描述一个代码单元。
建议:在实际的代码开发中不要使用char类型,确实需要对UTF-16的代码单元进行操作,最好将需要处理的字符串使用抽象数据类型来表示
布尔类型包括两个值 true和false,用来判定逻辑条件。整型和布尔类型之间不能进行转换。一般用于流程控制语句中 如:
不可以使用 0 或非 0 的整数替代 false 和 true,这点和 C 语言不同。
《java 虚拟机规范 8 版》中指出:Java 虚拟机中没有任何供 boolean 值专用的字节码指令,Java 语言表达所操作的 boolean 值,在编译之后都使用 java 虚拟机中的 int 数据类型来代替:true 用 1 表示,false 用 0 表示
在 Java 程序中,不同的基本数据类型(boolean 类型除外)变量的值经常需要进行相互转换。
转换的方式有两种:自动类型转换和强制类型转换。
自动类型转换规则:将取值范围小(或容量小)的类型自动提升为取值范围大(或容量大) 的类型
转换的场景包括:
强制类型转换 : 将取值范围大(或容量大)的类型强制转换成取值范围小(或容量小) 的类型。
转换格式: 数据类型(取值范围的类型) 变量名 = (数据类型-取值范围的类型)被强转数据值(取值范
围小的类型) ,如:将double类型的3.14转换为int,则需要按如下方式进行:
int i = (int)3.14 ;
当把存储范围大的值(常量值、变量的值、表达式计算的结果值)强制转 换为存储范围小的变量时,可能会损失精度或溢出
自此基本数据类型介绍完毕,对于引入数据类型将在后续的章节中逐一介绍
在java中,每一个变量属于一中类型,是程序的基本组成单位。它是内存中的一个存储区域, 相当于内存中一个数据存储空间的表示, 通过变量名可以访问到变量(值)
变量的作用:用于在内存中保存数据。
变量注意事项: –
变量的作用域:
Java 中变量、方法、类等要素命名时使用的字符序列,统称为标识符
注意:在定义标识符时,为了提高阅读性,要尽量有意义,达到“见名知意”的效果。
被 Java 语言赋予了特殊含义,用做专门用途的字符串(或单词)HelloWorld 案例 中,出现的关键字有 class、public 、 static 、 void 等,这些单词已经被 Java 定义好了的。
https://docs.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html
序号 |
类型 |
关键字 |
1 |
定义数据类类型 |
class interface void enum int double char float short byte long boolean |
2 |
修饰流程控制 |
if else switch case default do while for break continue return |
3 |
修饰访问权限 |
public protected private |
4 |
修饰类、变量、方法 |
abstract final static synchronized |
修饰包 |
package import |
|
5 |
修饰类与类之前的关系 |
extends implements |
6 |
修饰对象创建及对象引用 |
new this super instanceof |
7 |
处理程序异常 |
try catch finally throw throws |
8 |
其他修饰符 |
native strictfp transient volatile assert |
9 |
保留字 |
goto const |
10 |
字面量 |
true,false,null |