变量和标识符

变量和标识符*

2.1注释

在 Java 中根据注释的功能不同,主要分为单行注释、多行注释和文档注释。
 单行注释
单行注释使用“//”开头,“//”后面的单行内容均为注释。
 多行注释
多行注释以“/”开头以“/”结尾,在“/”和“/”之间的内容为注释,我们也可以
使用多行注释作为行内注释。但是在使用时要注意,多行注释不能嵌套使用。
 文档注释
文档注释以“/*”开头以“/”结尾

注释在代码编译时会自 动被编译器所忽略

2.2标识符

标识符可从一个字母(Unicode编码字符集(65536)、下划线_或美元符号$开始,随后也可跟数字、字母、下划线 或美元符号。

标识符是用来给变量、类、方法以及包进行命名。标识符需要遵守一定的规则:

标识符是区分大小写,没有长度限制,可以为标识符取任意长度的名字

标识符必须以字母、下划线_、美元符号$开头。

标识符其它部分可以是字母、下划线“_”、美元符“$”和数字的任意组合。
Java 标识符大小写敏感,且长度无限制。
标识符不可以是 Java 的关键字。

【示例 2-2】合法的标识符
int a = 3;
int _123 = 3;
int $12aa = 3;
int 变量1 = 55; //不建议使用中文命名的标识符
【示例 2-3】不合法的标识符
int 1a = 3; //不能用数字开头
int a# = 3; //不能包含#这样的特殊字符
int int = 3; //不能使用关键字

2.3JAVA中的关键字/保留字

abstract assert boolean break byte case
catch char class const continue default
do double else extends final finally
float for goto if implements import
instanceof int interface long native new
null package private protected public return
short static strictfp super switch synchronized
this throw throws transient try void
volatile while

2.4变量

变量是Java程序中的基本存储单元,它的定义包括变量名、变量类型和作用域几个部分 ,变量本质上就是代表一个”可操作的存储空间”,空间位置是确定的,但是里面放置什么 值不确定。我们可通过变量名来访问“对应的存储空间”,从而操纵这个“存储空间”存储的值。 变量作为程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。变量在使 用前必须对其声明, 只有在变量声明以后,才能为其分配相应长度的存储空间。 也就是说在使用变量时必须先赋值在使用,即先声明后使用!!

Java是完全面向对象的,但简单数据类型却不是,它们类似于其他大多数非面向对象语言中的简单数据 类型。这样做的原因是出于效率方面的考虑。在面向对象中引入简单数据类型不会对执行效率产生太多的影响

Java是以执行效率为代价换取高安全

2.5常量

常量通常指的是一个固定的值,例如:1、2、3、’a’、’b’、true、false、”helloWorld”等。

在 Java 语言中,主要是利用关键字 final 来定义一个常量。 常量一旦被初始化后不能
再更改其值。 声明格式为:
final type varName = value

2.6基本数据类型

Java 是一种强类型语言,每个变量都必须声明其数据类型。 Java 的数据类型可分为两

大类:基本数据类型(primitive data type)和引用数据类型(reference data type)。
Java 中定义了 3 类 8 种基本数据类型
 数值型- byte、 short、int、 long、float、 double
 字符型- char
 布尔型-boolean

2.6.1整型

整型用于表示没有小数部分的数值,它允许是负数。整型的范围与运行 Java 代码的机

器无关,这正是 Java 程序具有很强移植能力的原因之一
类型 占用存储空间 表数范围
byte 1 字节 (-128~127)
byte k=(byte)3000; //如果不进行数据类型转换,则IDE工具会报错。但是将大范围数据强转[窄化操作]为小类型变量会有精度损失
short 2 字节 (-32768~32767)
int 4 字节 (-2147483648~2147483647) 约 21 亿
long 8 字节 (-9223372036854775808~9223372036854775807)

2.6.2浮点型

带小数的数据在 Java 中称为浮点型。浮点型可分为 float 类型和 double 类型。

类型 占用存储空间 表数范围
float 4 字节 -3.403E38~3.403E38
double 8 字节 -1.798E308~1.798E308

float类型的数值有一个后缀F或者f ,没有后缀F/f的浮点数值默认为double类型。也可
以在浮点数值后添加后缀D或者d, 以明确其为double类型。

!!!!浮点数无法精确存放

2.6.3字符型

字符型在内存中占 2 个字节,在 Java 中使用单引号来表示字符常量。例如’A’是一个字

符,它与”A”是不同的,”A”表示含有一个字符的字符串。
char 类型用来表示在 Unicode 编码表中的字符。Unicode 编码被设计用来处理各种语
言的文字,它占 2 个字节,可允许有 65536 个字符。可以充当整形数进行计算

1
/字符类型的变量可以当作整数使用
2

3
char c=‘a’; //注意:这里使用的是单引号,不是双引号,单引号中只能包含一个字符
4

5
需要记忆:
6
‘0’ < ‘A’ <‘a’
7

8
查询对应字符的整形值
9
char c=‘中’;
10
System.out.println((int)c);
11

12
Java也提供转义字符,以反斜杠(\)开头,将其后的字符转变为另外的含义
13
\ddd 1到3位8进制数所表示的字符(ddd) 例如’\110’实际就是字符H
14
char c=’\129’; // 注意这里是8进制数,报错原因是9超出范围
15
\uxxxx 1到4位16进制数所表示的字符(xxxx),例如’\u9110’表示字符’鄐’
16
\’ 单引号字符,例如’’’
17
" 双引号字符,例如’"‘实际上是可以的,但是这样写可读性非常差,所以建议使用’"’
18
\ 反斜杠字符

2.6.4boolean型

boolean 类型有两个常量值,true 和 false,在内存中占一位(不是一个字节),不可以

使用 0 或非 0 的整数替代 true 和 false ,这点和 C 语言不同。 boolean 类型用来判断逻
辑条件,一般用于程序流程控制 。

2.7运算符

2.7.1算数运算符

算术运算符中+,-,*,/,%属于二元运算符,二元运算符指的是需要两个操作数才能

完成运算的运算符。其中的%是取模运算符,就是我们常说的求余数操作。
二元运算符的运算规则:
整数运算:
 如果两个操作数有一个为 Long, 则结果也为 long。
 没有 long 时,结果为 int。即使操作数全为 short,byte,结果也是 int。
浮点运算:
 如果两个操作数有一个为 double,则结果为 double。
 只有两个操作数都是 float,则结果才为 float。
取模运算:
 其操作数可以为浮点数,一般使用整数,结果是“余数”,“余数”符号和左边操作
数相同,如:7%3=1,-7%3=-1,7%-3=1。
算术运算符中++(自增),–(自减)属于一元运算符,该类运算符只需要一个操作数

1
±/
2
整除:参与运算的双方都是整数,这里的小数部分是直接抛弃,没有进位一说。 10/3=3而不是3.33333
3
10./3=3.333…这里由于10.是浮点数,则3会自动转换为大类型并参与计算,所以最终是 10.0/3.0的计算结果
4

5
计算次序为先乘除后加减,如果优先级一致,则自动从左向右进行计算 10+2
5=20
6

7
%求余(取模) 10%3=1实际就是10除以3求余数
8
double k=10.12;
9
System.out.println(k%3); //参与计算的只有整数部分,符号不参与计算
10
输出:1.1199999999999992
11

12
++和–是单目运算符
13
i++等价于i=i+1,i–等价于i=i-1,注意类型问题
14
以++为例写法有2个:i++或者++i
15

16
short kk=1;
17
kk++; //自动类型转换
18
kk=kk+1; //报错,因为数据类型
19

20
i++是先获取i的值,然后再对i加1
21
int age=100;
22
System.out.println(age++);输出为100
23
System.out.println(age); 输出为101,因为上面进行加1
24

25
++i是先对i加1,然后再获取i的值
26
int age=100;
27
System.out.println(++age);输出101,先加1然后获取值
28
System.out.println(age); 输出101

2.7.2赋值及其扩展赋值运算符

运算符 用法举例 等效的表达式
+= a += b a = a+b
-= a -= b a = a-b
*= a = b a = ab
/= a /= b a = a/b
%= a %= b a = a%

2.7.3关系运算符

运算符 含义 示例
== 等于 a==b
!= 不等于 a!=b

大于 a>b
< 小于 a<b
= 大于或等于 a>=b
<= 小于或等于 a<=b
2.7.4逻辑运算符

运算符 说明
逻辑与&( 与) 两个操作数为 true,结果才是 true,否则是 false
逻辑或|(或) 两个操作数有一个是 true,结果就是 true
短路与&&( 与) 只要有一个为 false,则直接返回 false
短路或||(或) 只要有一个为 true, 则直接返回 true
逻辑非!(非) 取反:!false 为 true,!true 为 false
逻辑异或^(异或) 相同为 false,不同为 true

例如A && B:如果条件A为false,则不会执行B,因为根据运算规则结果一定是false,和B的值没有关系

A||B:如果条件A为true,则不会执行B,因为格局运算规则结果一定是true,和B的值没有关系

如果条件1的结果确定后则整个式子计算结果已经确定,则没有必要计算后续的式子

短路与和短路或采用短路的方式。从左到右计算,如果只通过运算符左边的操作数就能够确定该逻辑表达式的值,则不会继续计算运算符右边的操作数,提高效率。

1
int age=100;
2
char cc=‘A’; //字符之间的大小比较是通过unicode编码值进行比较
3
if(cc>=‘B’ || age++<200){
4
System.out.println(“ZZZZZ”);
5
}
6
System.out.println(age);//?输出101

1
nt age=100;
2
char cc=‘A’;
3
if(cc>=‘B’ && age++<200){
4
System.out.println(“ZZZZZ”);
5
}
6
System.out.println(age);//?输出100,因为短路的原因,导致age++并没有得到执行

1
int age=200;
2
char cc=‘A’;
3
if(cc>=‘B’ || age++<=200){
4
System.out.println(“ZZZZZ”);
5
System.out.println(age);//?输出201
6
}

2.7.5位运算符

位运算符 说明
                 取反

& 按位与
| 按位或
^ 按位异或
<< 左移运算符,左移 1 位相当于乘 2

右移运算符,右移 1 位相当于除 2 取商
2.7.6字符串连接符

“+”运算符两侧的操作数中只要有一个是字符串(String)类型,系统会自动将另一个操作

数转换为字符串然后再进行连接。

2.7.7条件运算符

语法格式:x ? y : z

其中 x 为 boolean 类型表达式,先计算 x 的值,若为 true,则整个运算的结果为表达
式 y 的值,否则整个运算结果为表达式 z 的值。
三目条件运算符:
int score = 80;
int x = -100;
String type =score<60?“不及格”:“及格”;
int flag = x > 0 ? 1 : (x == 0 ? 0 : -1);
System.out.println("type= " + type);
System.out.println("flag= "+ flag);

2.8数据类型的转换

2.81自动类型转换

自动类型转换指的是容量小的数据类型可以自动转换为容量大的数据类型

2.8.2强制类型转换(窄化操作)

强制类型转换,又被称为造型,用于显式的转换一个数值的类型。在有可能丢失信息的
情况下进行的转换是通过造型来完成的,但可能造成精度降低或溢出。
语法格式:
(type)var

double x = 3.14;
int nx = (int)x; //值为 3
char c = ‘a’;
int d = c+1;
System.out.println(nx);
System.out.println(d);
System.out.println((char)d);

2.8.3基本类型转换时常见的错误和问题

 操作比较大的数时,要留意是否溢出,尤其是整数操作时。

​ 2020年11月1日

猜你喜欢

转载自blog.csdn.net/qq_45874107/article/details/109436237
今日推荐