Java 基础教程

基本数据类型

数据类型就是一组性质相同的值的集合,以及定义在这些值上的一组操作的总称。例如:整型就是由所有整数(-∞, +∞)组成的集合,并且在该集合上可以进行加、减、乘、除操作。

根据对数据类型的使用约束程度来划分,高级编程语言分为:强类型语言和弱类型语言

强类型语言

强类型语言必须实现声明变量的类型,如整型、字符型、浮点型,然后才可以使用,并且该变量将只能存放声明时指定的类型。同样,强类型语言中的每一个表达式也都有确定的类型。如下Java代码:

int age = 22; // 声明 int 类型变量 age,同时赋值为 22
int oldAge = age + 40; // 将 age + 40 表达式的赋值给新声明的 oldAge 变量

同时,在强类型语言中还对数据类型可以进行哪些操作进行了限制,例如:不能对 int 类型进行逻辑运算。数据类型还可以用来确定运算操作符的具体含义。例如:+ 号,在对数字类型是就是加的含义,用在字符串上时是连接字符的含义。代码如下:

int age = 20 + 2; // age = 22 进行算术加法操作
String message = "hello" + " world"; // message = "hello world" 进行字符串连接

弱类型语言

弱类型语言对数据类型不作严格区分,声明一个变量时可以不指定数据类型,甚至可以不经声明就可以直接使用一个变量,变量的数据类型是随着变量存储的值的类型变化而变化。常见弱类型语言有 JavaScript、VB 和 Perl 等。示例代码:

<script type="text/javascript">
        age = 22;
        console.log(age); 
</script>

若语言类型虽然编写简单,但执行效率相比强语言要底,不同类型数值间的转换开销大。并且容易出现语法检查通过,但是运行结果不正常的情况,对调试有一定的难度。

Java 语言数据类型分为两大类:基本数据类型和引用数据类型,基本数据类型参考“数据类型”。

基本数据类型

基本数据类型(Primitive Type)包括数值类型、字符型和布尔类型。在 Java 语言规范中,也将字符型划做数值类型的一种。基本类型的数据只能保存单一的值,因此也被称为原始类型或简单类型。Java 为了确保程序的可移植性,所有基础数据类型都是定长的,例如:int 类型数据占用的存储空间永远是 32 位,与程序运行的操作系统、处理器结构无关。

整型

整型数据类型用于保存整数信息,Java 提供了四种不同的整数类型,它们占用的存储空间和表示范围不相同。如下表:

类型占用空间最小值最大值
byte
1字节-128127
short
2字节-3276832767
int(默认)
4字节-2,147,483,6482,147,483,647
long
8字节-9,223,372,036,854,775,8089,223,372,036,854,775,807

注意:在 Java 语言中直接给出的整数常量默认是 int 类型,如果你要指定 long 类型的常量需要在数字后添加小写 l(不建议使用,因为它和数字 1 肉眼不容易区分) 或大写 L。

Java 中整型常量有三种表现形式:

  • 十进制:该进制是最为常用,如:300、128、-254、0 等等。

  • 十六进制:该类型常量由 0x 或 0X 开头,后跟十六进制码(0~9、a~f、A~F),例如:0x25、0X5BC5 等等。

  • 八进制:该类型常量由 0 开头,后跟八进制码(0~7),如:042、018 等等

示例:

public class TestInt {

    public static void main(String[] args) {
        int a = 100;
        int b = 200;
        long c = 120;
        System.out.println(a);
        System.out.println(b);
        System.out.println(c);
        System.out.println(a + b);
    }

}

运行结果:

100
200
120
300

浮点型

Java 语言中浮点型包括 float 和 double 两种,分别用于保存单精度和双精度的浮点数。它们占用的存储空间和表示范围如下表:

类型占用空间最小值最大值有效位数
float
4字节-3.403e383.403e386~7位
double
8字节-1.798e3081.798e30815位

Java 语言中浮点型常量也有两种表示方式:

  • 十进制形式:表示浮点数时必须包含小数点,如:3.5、0.11、.12 等等。也可以使用科学计数法表示十进制的浮点数,如:4.334e2、1.24e2、4.5e-3 等等,其中 E 或 e 后跟的是十进制指数。

  • 十六进制形式:Java 从 JDK 1.5 开始,也可以使用十六进制形式表示浮点数了,但是只能采用科学计数法形式进行表示,格式如下:

    <0x|0X><十六进制尾数><p|P><以2为底的指数>

    例如:0x1.2p3,转换成十进制的计算方法为:0x1.2p3 = (1*160+2*16-1)*23 = 9.0

注意:

(1)在浮点数的十六进制表示法中,使用 p 或者 P 指定指数,而不是使用 e 或者 E。

(2)只要是使用科学计数法表示就一定是浮点数,如:3.14E2

和整数类似,直接给出浮点型常量,Java 默认为 double 类型。当然,也可以在浮点数后面添加 D 或者 d 字母来标明为 double 类型常量,添加 F 或者 f 字母来表明为 float 类型常量。

在整型中,整数除以 0 时会抛出除数为 0 错误。但在浮点型却不会,Java 语言定义了三个特殊的浮点值来表示浮点数除以 0 运算时的各种出错情况:

  • Infinity:整无穷大,正数除零时的结果

  • -Infinity:负无穷大,负数除零时的结果

  • NaN:Not a Number 0.0/0 或负数开平方根时的结果

示例:

public class TestFloat {

    public static void main(String[] args) {
        double d1 = 1024.3;
        double d2 = 1.024e3;
        double d3 = 0x1.2P3;
        double d4 = 0x1.2P-3;
        System.out.println(d1);
        System.out.println(d2);
        System.out.println(d3);
        System.out.println(d4);
        System.out.println(-10/0.0);
        System.out.println(0.0/0);
    }

}

输出结果:

1024.3
1024.0
9.0
0.140625
-Infinity
NaN

字符型

在 Java 语言中,采用 16 位的 Unicode 编码来保存字符(一个字符占 2 个字节)。

“字节”(Byte)是计算机中的数据存储单元,每个字节包括 8 个二进制“位”(Bit)。计算机内部和硬盘等存储空间的管理都是以字节为基础单位,每个字节都有自己的编号。而“字符”(Char )是人们用作标记的符号,如:‘A’、‘张’等等。

在 Java 中,字符型常量有三种表现形式:

  • 用英文单引号包括起来的单个字符,如:'a'、'汉'

  • 用英文单引号括起来的十六进制字符代码值来表示单个字符,格式:'\uXXXX',其中的 \u 是约定的前缀,而后面的 XXXX 为 4 位十六进制数,是该字符在 Unicode 字符集中的序号。例如:'\u0061'

  • 某些特殊的字符可以采用转义符来表示,如换行和制表符等等(点击查看 Java 转义符)。

示例:

public class TestChar {

    public static void main(String[] args) {
        char c1 = 'a';
        char c2 = '\u0031';
        char c3 = '\n';
        System.out.println(c1);
        System.out.println(c2);
        System.out.println(c3);
    }

}

输出结果:

a
1

布尔型

boolean 类型数据用来表示只有两种状态的逻辑值,即 true 和 false,分别代表“是”和“否”。true 和 false 也称 boolean 类型的字面值,字面值指事先约定的某种类型的允许取值。

boolean 类型常用于逻辑运算和程序流程控制,示例如下:

public class TestBoolean {

    public static void main(String[] args) {
        boolean flag = true;
        if(flag) {
            System.out.println("是");
        } else {
            System.out.println("否");
        }
    }

}

输出结果:

注意:Java 语言不支持使用 0 和非 0 来作为 boolean 类型值使用。

说说我的看法
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号