Java讲课笔记04:变量与常量

网友投稿 772 2022-05-29

文章目录

零、本讲学习目标

1、学会变量的定义

2、了解变量的数据类型

3、掌握变量类型转换的方式

4、明确变量的作用域

5、熟悉Java中的常量

一、变量(Variable)

1、变量定义

(1)变量定义语法格式

(2)变量定义示例

(3)变量在内存中的状态变化图

2、变量数据类型

(1)整数类型变量

(2)浮点数类型变量

(3)字符类型变量

(4)布尔类型变量

(5)案例:演示变量数据类型

3、变量类型转换

(1)自动类型转换

(2)强制类型转换

(3)表达式类型自动提升

(4)强制类型转换格式

4、变量作用域

二、常量(Constant)

1、字面常量(Literal Constant)

(1)整型常量

(2)浮点型常量

(3)字符常量

(4)字符串常量

(5)布尔常量

(6)null常量

2、符号常量(Symbolic Constant)

(1)符号常量定义格式

(2)案例:计算圆面积(采用符号常量PI)

三、课后作业

1、简述Java基本数据类型

2、输入两个实数,编程计算其和差积商。

四、扩展阅读:不要像小白用户那样提问

零、本讲学习目标

1、学会变量的定义

2、了解变量的数据类型

3、掌握变量类型转换的方式

4、明确变量的作用域

5、熟悉Java中的常量

编写程序对数据进行加工处理,原始数据、中间结果以及最终结果都需要存放,而变量就是内存里用来存放各种数据的容器。对于变量,顾名思义,也就是说一个变量里存放的数据在程序执行过程中是可以不断变化的。在程序执行期间,数据保持不变的容器,那就是常量了。

一、变量(Variable)

1、变量定义

(1)变量定义语法格式

在程序运行期间,随时可能产生一些临时数据,应用程序会将这些数据保存在一些内存单元中,每个内存单元都用一个标识符来标识。这些内存单元我们称之为变量,定义的标识符就是变量名,内存单元中存储的数据就是变量的值。

(2)变量定义示例

(3)变量在内存中的状态变化图

2、变量数据类型

Java是一门强类型的编程语言,它对变量的数据类型有严格的限定。在定义变量时必须先声明变量的数据类型,在为变量赋值时必须赋予和变量同一种类型的值,否则程序在编译期间就会出现类型匹配错误的问题。

Java有8种基本数据类型:byte、short、int、long、float、double、char、boolean。

(1)整数类型变量

在为一个long类型的变量赋值时,所赋值的后面要加上一个字母“L”(或小写“l”),说明赋值为long类型。如果赋的值未超出int型的取值范围,则可以省略字母“L”(或小写“l”)。

(2)浮点数类型变量

一个小数会被默认为double类型的值,因此在为一个float类型的变量赋值时,所赋值的后面一定要加上字母“F”(或者小写“f”),而为double类型的变量赋值时,可以在所赋值的后面加上字符“D”(或小写“d”),也可以不加。

(3)字符类型变量

字符类型变量用于存储一个单一字符,在Java中用char表示。

Java中每个char类型的字符变量都会占用2个字节。

在给char类型的变量赋值时,需要用一对英文半角格式的单引号(’’)把字符括起来,如’a’,也可以将char类型的变量赋值为0~65535范围内的整数,计算机会自动将这些整数转化为所对应的字符,如数值97对应的字符为’a’。

(4)布尔类型变量

布尔类型变量用来存储布尔值,在Java中用boolean表示,该类型的变量只有两个值,即true和false。

(5)案例:演示变量数据类型

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

运行程序,查看结果:

3、变量类型转换

在程序中,当把一种数据类型的值赋给另一种数据类型的变量时,需要进行数据类型转换。根据转换方式的不同,数据类型转换可分为两种:自动类型转换和强制类型转换。

(1)自动类型转换

自动类型转换也叫隐式类型转换,指的是两种数据类型在转换的过程中不需要显式地进行声明。当把一个类型取值范围小的数值直接赋给另一个取值范围大的数据类型变量时,系统就会进行自动类型转换。

自动类型转换就好比将小瓶水倒入到大瓶的换装过程。我们将小瓶水倒入到大瓶中时,由于小瓶的容量比大瓶的容量小,所以倒入的水永远不可能溢出大瓶。

Java中支持不同数据类型之间的自动转换

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

运行程序,结果如下:

(2)强制类型转换

强制类型转换也叫显式类型转换,指的是两种数据类型之间的转换需要进行显式地声明。当两种类型彼此不兼容,或者目标类型取值范围小于源类型时,自动类型转换无法进行,这时就需要进行强制类型转换。

强制类型转换就好比将大瓶水倒入到小瓶中一样,如果大瓶中的水的容量小于小瓶的大小,那么水是可以完全倒入的;否则多出来的水就会溢出。所以系统默认不支持这种行为,只能由开发者自己决定是否进行强制类型转换。

在对变量进行强制类型转换时,会发生取值范围较大的数据类型向取值范围较小的数据类型的转换情况,如将一个int类型的数转为byte类型,这样做极容易造成数据精度的丢失。

出现丢失精度的原因是,变量b为int类型,在内存中占用4个字节,而byte类型的数据在内存中占用1个字节,当将变量b的类型强转为byte类型后,前面3个高位字节的数据已经丢失,这样数值就发生了改变。

(3)表达式类型自动提升

表达式是指由变量和运算符组成的一个算式。变量在表达式中进行运算时,也有可能发生自动类型转换,这就是表达式数据类型的自动提升,如byte、short和char类型的变量在运算期间类型会自动提升为int,然后再进行运算。

1

2

3

4

5

6

7

8

9

10

11

12

Java讲课笔记04:变量与常量

13

14

15

16

17

18

运行程序,结果如下:

如何判断b+ s + c表达式里的各个变量类型已经自动提升到int类型?

由此可以看到,变量b、s、c自动提升为int类型,其和也是int类型,赋给short或byte类型变量,都是要报错的。

(4)强制类型转换格式

目标类型 变量名 = (目标类型)值;

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

运行程序,结果如下:

4、变量作用域

变量需要在它的作用范围内才可以被使用,这个作用范围称为变量的作用域。

可以看到,在代码块里可以访问在代码块之前的变量x。

但是,我们来看一下,在代码块后能否访问在代码块里定义的变量y呢?

可以看到,变量y的作用域只在代码块里,出了代码块,变量y就不再存在了,因此提示“无法解析符号y”。

变量作用域的三个级别:代码块级别——>方法级别——>类级别

低级别范围可以访问高级别变量,反之则不能访问,编译器会报错。

二、常量(Constant)

常量就是在程序中固定不变的值,是不能改变的数据。例如数字1、字符’a’、浮点数3.2等。在Java中,常量包括整型常量、浮点数常量、布尔常量、字符常量等。

1、字面常量(Literal Constant)

(1)整型常量

二进制:由数字0和1 组成的数字序列。在JDK 7以后,允许使用二进制字面值来表示整数,此时二进制数值前面要以0b或0B开头,目的是为了和十进制进行区分,如:0b01101100、0B10110101。

八进制:以0开头,并且其后由0 ~7范围(包括0和7)内的整数组成的数字序列,如:0342。

十进制:由数字0~9范围(包括0和9)内的整数组成的数字序列。如:198。

十六进制:以0x或者0X开头,并且其后由0-9、A-F(包括0和9、A和F)组成的字符序列,如:0x25AF。

不同进制整数之间的相互转换:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

运行程序,结果如下:

课堂练习:将十六进制数7d3e5a转换成其它几种进制。

(2)浮点型常量

浮点数常量就是在数学中用到的小数,分为float单精度浮点数和double双精度浮点数两种类型。

2e3f 3.6d 0f 3.84d 5.022e+23f

单精度浮点数后面以F或f结尾,而双精度浮点数则以D或d结尾。当然,在使用浮点数时也可以在结尾处不加任何后缀,此时Java虚拟机会将浮点数默认识别为double双精度浮点数。

(3)字符常量

字符常量用于表示一个字符,一个字符常量要用一对英文半角格式的单引号(’ ')引起来,它可以是英文字母、数字、标点符号以及由转义序列来表示的特殊字符。

‘a’ ‘1’ ‘&’ ‘\r’ ‘\n’ ‘\t’

转义字符:

在字符常量中,反斜杠(\)是一个特殊的字符,被称为转义符,它的作用是用来转义紧随其后的一个字符。转义后的字符通常用于表示一个不可见的字符或具有特殊含义的字符,例如“\n”表示换行。

常见转义字符:

\r :表示回车,将光标定位到当前行的开头,不会跳到下一行。

\n :表示换行,换到下一行的开头。

\t :表示制表符,将光标移到下一个制表符的位置,就像在文档中用Tab键一样。

\b :表示退格符号,就像键盘上的Backspace。

\’ :表示单引号字符,表示字符的开始和结束,如果直接写单引号字符(’),程序会认为前两个是一对,会报错,因此需要使用转义(\’)。

\" :表示双引号字符,表示字符串的开始和结束,包含在字符串中的双引号需要转义,比如"he says,“thank you”."。

\\ :表示反斜杠转义字符,由于在Java代码中的斜杠(\)是转义符,因此需要表示字面意义上的\,就需要使用双斜杠\\。

(4)字符串常量

字符串常量用于表示一串连续的字符,一个字符串常量要用一对英文半角格式的双引号(" ")引起来。

“Hello World” “903213” “Welcome to Luzhou~”

(5)布尔常量

布尔常量即布尔类型的两个值true和false,该常量用于区分一个条件的真假。

(6)null常量

null常量只有一个值null,表示对象的引用为空。

2、符号常量(Symbolic Constant)

Java符号常量,其实就是特殊的变量,也是固定不变的量,有且只能进行一次赋值。只需要在定义变量的语法基础上加上一个final关键字修饰即可。

(1)符号常量定义格式

final 常量类型 常量名 [= 初始值];

(2)案例:计算圆面积(采用符号常量PI)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

运行程序,结果如下:

本案例,采用了几种方式来实现保留到小数点后面两位。大家可以选择一种自己喜欢的方式,在后面的教学案例里还会用到这个东西。

Python里也有方法实现保留到小数点后面多少位。

三、课后作业

1、简述Java基本数据类型

说明每种类型的关键字、占用多少个字节

2、输入两个实数,编程计算其和差积商。

提示:加减乘除运算符号分别是+、-、*、/

四、扩展阅读:不要像小白用户那样提问

很多人一遇到问题就问人,而且描述不清楚问题,只说简单的问题现象。比如问:“网站访问不了怎么回事?”“连接不上服务器怎么办?”“程序启动不了怎么办?”“程序在本地运行没有问题,上传到服务器运行就有问题,怎么回事?”这些问题让人无法回答,哪位技术大牛能回答这些问题?

要知道你是程序员不是小白用户。不懂程序的小白用户看见网站访问不了,只能反馈给你网站访问不了。但作为一名程序员,拿这样的现象去问人,技术大牛也不知道怎么解答,因为造成网站访问不了的原因太多了。作为程序员,你是可以提供更多信息的,比如程序的错误信息、错误码、是在运行哪行代码时出错的,有了这些信息别人解答问题就更容易了。

我们在学校时,老师引导我们有问题就问;然而在编程时,有问题马上问,只看见个别现象就问,反而沟通效率低,自己成长也慢。有问题要先自己找解决方案

Java 数据结构

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:2016年上半年好书推荐
下一篇:准备校招,Java Web基础面试看这篇就够了
相关文章