一、基本数据类型简介和变量

本文详细介绍了Java编程中的基本数据类型、变量的声明、赋值和使用,强调了变量命名的重要性,包括标识符的命名规则、关键字和保留字的使用,以及变量作为内存中数据存储区域的特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基本数据类型简介和变量

本文为书籍《Java编程的逻辑》1和《剑指Java:核心原理与应用实践》2阅读笔记

1.1 基本数据类型和变量

数据类型用于对数据归类,以便于开发人员理解和操作。对Java语言而言,有如下基本数据类型。

  • 整数类型:有4种整型byte/short/int/long,分别有不同的取值范围;
  • 浮点类型:有两种类型float/double,有不同的取值范围和精度;
  • 字符类型:char,表示单个字符;
  • 布尔类型:boolean,表示真假。

基本数据类型都有对应的数组类型,数组表示固定长度同种数据类型多条记录集合,这些数据在内存中连续存放。比如,一个自然数可以用一个整数类型数据表示,100个连续的自然数可以用一个长度为100的整数数组表示。一个字符可以用一个char类型数据表示,一段文字可以用一个char数组表示。

Java是面向对象的语言,除了基本数据类型,其他都是对象类型。对象到底是什么呢?简单地说,对象是由基本数据类型、数组和其他对象组合而成的一种复合的数据类型,以方便对其整体进行操作。比如,一个学生对象,可以由如下信息组成。

  • 姓名:一个字符数组;
  • 年龄:一个整数;
  • 性别:一个字符;
  • 入学分数:一个小数。

日期在Java中也是一个对象,内部表示为整型long

世界万物都是由元素周期表中的基本元素组成的,基本数据类型就相当于化学中的基本元素,而对象就相当于世界万物

为了操作数据,需要把数据存放到内存中。所谓内存在程序看来就是一块有地址编号的连续的空间,数据放到内存中的某个位置后,为了方便地找到和操作这个数据,需要给这个位置起一个名字。编程语言通过变量这个概念来表示这个过程。声明一个变量,比如int a,其实就是在内存中分配了一块空间,这块空间存放int数据类型,a指向这块内存空间所在的位置,通过对a操作即可操作a指向的内存空间,比如a=5这个操作即可将a指向的内存空间的值改为5。之所以叫“变”量,是因为它表示的是内存中的位置,这个位置存放的值是可以变化的。虽然变量的值是可以变化的,但变量的名字是不变的,这个名字应该代表程序员心目中这块内存空间的意义,这个意义应该是不变的。比如,变量int second表示时钟秒数,在不同时间可以被赋予不同的值,但它表示的始终是时钟秒数。之所以说应该,是因为这不是必需的,如果一定要为一个名为age的变量赋予身高的值,计算机也拿你没办法。

变量就是给数据起名字,方便找不同的数据,它的值可以变,但含义不应变。再比如说一个合同,可以有4个变量:

  • first_party:含义是甲方;
  • second_party:含义是乙方;
  • contract_body:含义是合同内容;
  • contract_sign_date:含义是合同签署日期。

这些变量表示的含义是确定的,但对不同的合同,它们的值是不同的。初学编程的人经常使用像abchehehaha这种无意义的名字。在此建议为变量起一个有意义的名字吧!通过声明变量,每个变量赋予一个数据类型和一个有意义的名字,我们就告诉了计算机要操作的数据。

1.2 变量命名:标识符

1.2.1 关键字、保留字和特殊值

高级编程语言由一系列单词和符号组成,并且能与计算机进行交互,实现逻辑功能。为了让程序员与计算机能够进行更好的交互,会提前给一些单词赋予特殊的含义,这些在程序语言中具有特殊含义的单词叫作关键字。其中有一部分关键字在Java中并没有使用,暂时没有赋予特殊含义,这部分称为保留字。

Java 8中共包含了50个关键字(包含保留字),在之后的版本中根据语法的需要,增加了不少其它关键字。

用于定义数据类型的关键字
classinterfaceenumbyteshortint
longfloatdoublecharbooleanvoid
用于定义流程控制的关键字
ifelseswitchcasedefaultwhile
doforbreakcontinuereturn
用于定义访问权限修饰符的关键字
privateprotectedpublic
和多线程有关的关键字
synchronizedvolatile
用于定义类与类之间关系的关键字
extendsimplements
用于定义建立实例、引用实例及判断实例的关键字
newthissuperinstanceof
用于异常处理的关键字
trycatchfinallythrowthrows
用于包的关键字
packageimport
修饰类、方法、变量的关键字
abstractfinalstaticnativetransientstrictfp
和测试有关的关键字
assert

在关键字中,还有一些单词在Java中没有正式使用,但是为了Java与底层系统(如C语言)的交互,Java保留了一些关键字,称为保留字。目前,保留字有如下两个。

  1. gotogoto语句在其他语言中叫作“无限跳转”语句。Java语言不再使用goto语句,这是因为goto语句会破坏程序结构。在Java语言中可以通过breakcontinuereturn实现“有限跳转”。
  2. constconst在其他语言中是声明常量的关键字,在Java语言中使用final方式声明常量。

除了关键字和保留字。语言规范(The Java® Language Specification Java SE 8 Edition)中特别说明了三个特殊值:truefalsenull。这三个特殊值看起来像是关键字,但实际上是字面量值。

在给标识符命名时,都应该避免使用关键字(包含保留字)和特殊值。

1.2.2 标识符

标识符是Java对各种变量、方法和类等要素命名时使用的字符序列。凡是需要命名的类名、接口名、变量名、方法名、包名等统称为标识符。

1.2.2.1 标识符的命名规则

所谓的规则,是指必须遵守的原则。如果不遵守原则,那么编译或运行结果就会报错。Java标识符的命名规则有如下几个。

  1. 每个标识符只能包含数字、字母、下画线和美元符号。
  2. 不能以数字开头。
  3. 不能使用关键字和保留字作为标识符。
  4. 标识符不能包含空格。
  5. 严格区分大小写。

例如,HelloWorldStringMAX_VALUEnameagemainSystem$outprintlnargs等都是符合上述命名规则的合法标识符,而7Hello(以数字开头)、public(关键字)、static(关键字)等都不能作为合法的标识符。

1.2.2.2 标识符的命名规范

所谓规范是指建议大家遵守的规则,相当于约定成俗的习惯,类似于潜规则。如果不遵守规范,编译不会报错,但会影响代码的阅读性和团队协作的效率。Java语言对标识符的命名做了规范。标识符命名规范如下表所示:

标识符规范举例
类名遵循 Pascal 命名法,由多个单词组成,每个单词的首字母大写、其他字母小写ArrayList、ClassNameDemo等
接口名Comparator、Iterator 等
变量名遵循 Camel 命名法,由多个单词组成,第一个单词的字母全都小写,从第二个单词开始,每个单词的首字母大写、其他字母小写age、mathScore等
方法名getMax、addElement 等
包名由多个单词组成时,所有字母都小写。多层包结构中间用小圆点“.”隔开,并且采用域名倒置的命名法com.ieening.demo
常量名所有字母都大写,由多个单词组成时每个单词用下画线连接MAX_VALUE

除表格中的命名规范,还需要注意以下几点:

  1. 在起名时,为了提高阅读性,要尽量“见名知意”。例如:UserPersonaddNameToClazz等,不建议用a1a2b1b2等。
  2. Java采用Unicode字符集,因此标识符也可以使用汉字声明,但是不建议使用。

1.3 变量的使用

数学中列方程式和解方程式时有变量的概念,例如: y = 2 x y=2x y=2x 方程中的 x x x y y y就是变量,代表某个数值:当 x = 1 x=1 x=1时, y y y的值就是 2 2 2;当 x = 3 x=3 x=3时, y y y的值就是 6 6 6Java中也有变量的概念,它也代表某个数值。例如,变量age代表年龄值,变量name代表姓名值。如果从计算机存储的角度来说,变量实质上就是内存中的一块数据存储区域,该区域有自己的名称(变量名)和类型(数据类型),Java中的每个变量都必须先声明后使用,该区域的数据可以在同一类型范围内不断变化

Java的变量包含三个要素,分别是:数据类型、变量名和变量值。数据类型决定了这个变量中要存储的数据值的类型及保存数据内存的大小,如存储一个整数10和存储一个小数1.5在内存中所需要的大小与存储方式是不同的。变量名就是一个标识符,方便在程序中使用。变量值就是这个变量具体存储的值。例如,int age=18这个语句说明了age变量的数据类型是整型int,存储的值是18

1.3.1 变量的声明与使用

变量的使用步骤可以具体分为声明、赋值、使用三步,下面是这三个步骤的详细介绍。

1.3.1.1 声明

变量的声明相当于向JVM申请一部分指定数据类型大小的内存。不同的数据类型,需要占用的内存大小是不同的。另外,JVM中每字节的内存都有自己的地址,称为内存地址,但是在程序中直接使用内存地址是极其不方便的,因此需要给这部分内存命名,方便在程序中对这部分内存进行访问和使用。
变量声明如下图所示:

变量声明的语法格式如下所示:

数据类型 变量名;

示例代码:

int age;
double weight;

intdouble是数据类型,ageweight是变量名。

1.3.1.2 赋值

声明变量之后,就在内存分配了一块位置,但这个位置的内容是未知的,赋值就是把这块位置的内容设为一个确定的值。

变量赋值的语法格式如下所示:

变量名 = 值

示例代码:

age = 19;
weight = 20.01;

需要注意的是,声明和赋值这两步往往会合二为一。变量声明和赋值合二为一的语法格式如下所示:

数据类型 变量名=变量值;

示例代码:

int age = 19;
double weight = 20.01;
1.3.1.3 使用

所谓使用,是指在变量的作用域内将变量中的值拿出来进行打印、运算、比较等。

public class VarDemoTest{
    public static void main(String[] args){
        int age = 19;
	    double weight = 102.5;
        System.out.println("age = + age);
        System.out.println("weight = + weight);
    }
}

使用时应该注意:

  1. 必须先声明再使用;
  2. 变量必须在初始化后才能使用;
  3. 变量有作用域,并且在同一个作用域中不可以重复命名;
  4. 变量的值可以变化,但必须在变量声明的数据类型范围内;

  1. [1]马俊昌.Java编程的逻辑[M].北京:机械工业出版社,2018. ↩︎

  2. [2]尚硅谷教育.剑指Java:核心原理与应用实践[M].北京:电子工业出版社,2023. ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值