Java语言基础--01.基本组成元素
关键字、标示符、常量、变量和运算符
----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------
1. Java中的关键字
1). 关键字的基本含义
(1). 关键字就是被程序语言赋予特殊含义的词
(2). 关键字的特点就是:所有的关键字都是小写
2). Java中关键字的分类 (根据用途分类)
(1). 用于定义数据类型的关键字
byte、short、int、long、float、double、char、boolean
class、interface
void
(2). 用于定义数据类型值的关键字
true 、false
null
(3). 用于控制流程语句的关键字
if 、else、switch、case、default、while、do、for、break、continue、return
(4). 用于定义访问权限修饰符的关键字
private、protected、public
(5). 用于定义类、函数、变量修饰符的关键字
abstract、final、static、synchronized
(6). 用于定义类与类、类与接口之间关系的关键字
extends、implements
(7). 用于建立实例及引用实例、判断实例的关键字
new、this、super、instanceof
(8). 用于异常处理的关键字
try、catch、finally、throw、throws
(9). 用于包的关键字
import、package
(10). 其他关键字
native、transient、volatile、assert
*****注意:main不是关键字,但是确是能被JVM识别的一个名称(非常特殊)
2. Java中的标示符
1). 标示符是程序中自定义的一些名称
2). Java中标示符的组成规则
(1). 26个英文字母的大小写
(2). 数字0-9
(3). 特殊符号_和$
Java中仅有下划线“_”和美元符“$”两个符号用于可以用于构成标示符的一部分
3). 合法标示符的组成原则
(1). 数字不能开头
(2). 不能使用java关键字作为标示符
******所以 两个特殊符号 $和_可以用作为标示符的开头 $D和_ABC都是合法的标示符
4). Java中严格区分大小写
3. 常量
1). 不能改变的数值成为常量
2). Java中常量的分类
(1). 整数常量
Java中的整数常量有三种表现形式:
【1】十进制(0-9 表示)
【2】八进制(0-7 表示),用0开头
注意080一定是非法的常量表示
【3】十六进制(0-9,A-F 表示),用0x开头
一个数有多中表现形式,但都是表示同一个数
(2). 浮点数常量
(3). 布尔型常量
仅有两个取值:true和false
(4). 字符型常量
(5). 字符串常量
(6). null常量
仅有一个取值:null
3). 负数的二进制****
问:请计算-6(D)的二进制
错误答:按位取反加一 110--à001再加1 -à 101(X)
由于正数的最高位都是0,所以在进行二进制转换的时候,可以不用考虑存储的高位
但是 负数不行!!!
6这个整数在内存中占了4个字节,所以应该是0000-0000 0000-0000 0000-0000 0000-0110
按位取反的时候一定要考虑高位为0的部分!!
1111-1111 1111-1111 1111-1111 1111-1001
和
不考虑高位为负数按位取反的结果是完全不一样的
0000-0000 0000-0000 0000-0000 0000-0001
再加1
1111-1111 1111-1111 1111-1111 1111-1010
规律:负数二进制的最高位为1
正数二进制的最高位为0
4. 变量
1). 将不确定的数据进行存储
也就是需要在内存中开辟一段空间
2). 如何开辟内存空间
就是明确数据类型、变量名和初始化数据便能在内存中开辟空间。
** 开辟内存空间的三要素
3). 数据类型的分类
(1). 基本数据类型
基本数据类型有3种
[1]. 数值型 (2种):
【1】整型(4种): byte(1B)、int(4B)、short(2B)、long(4B)
int 类型为整型数据的默认数据类型
【2】浮点型(2种):float、double(8B)
double类型为浮点型数据的默认数据类型
[2]. 布尔型(1种)boolean
[3]. 字符型(1种)char (2B)
(2). 引用数据类型
引用数据类型有3种
[1].类类型:class
[2]. 接口类型:interface
[3]. 数组类型:[] 记住:数组是单独的引用数据类型
1. 标示符(重点部分)
1). 算数运算符
(1). 除法运算符 /
(2). 取模运算符 % (也是取余运算)
负数取模运算:结果的符号看被模数 (验证过程就使用大除法即可)
e.g. -1%5 = -1
17%-5=2
个人总结:这个结论不用记,只要是直接用大除法运算一下就OK
(3). 转义字符
通过“\”来改变后面字母的含义。转义之后,\和后面的字母变成一个整体
[1]. \n换行 \b退格 \r按下回车 \t制表位
[2]. Linux中, \n表示回车(由一个转义字符表示)
Windows中, \r\n表示回车(由两个转义字符表示)
DOS中, 直接识别\n (由一个转义字符表示)
2). 比较运算符
比较运算符的结果只能是boolean类型的,要么为true 要么为false
instanceof 也是比较运算符!!!!!!! 所以instanceof运算结果一定是true或者false中的一个
3). 逻辑运算符
(1). !、||和&&
!逻辑非 ||和&&是短路或和短路与
(2). &和|
&和|是非短路运算
(3). 短路运算和非短路运算的区别
[1].短路运算:
||:左边结果是true,右边表达式不用运算
&&:左边结果是false,右边表达式不用运算
[2].&和|无论左边的结果是什么样,右边的表达式都要进行运算。
(4). &和|的第二个作用就是做位运算符
4). 位运算符
(1). ~按位取反运算
注意:按位取反的时候,要考虑这个变量在内存中所占的位数来进行运算。否则运算结果是错误的!!!!
e.g. ~6的结果是多少?
Step1.由于是按位取反运算,所以要考虑这个数的内存情况。6默认是int类型的常量,所以占4B,所以内存中应该是0000-0000 0000-00000000-0000 0000-0110
按位取反的结果就是 1111-1111 1111-1111 1111-11111111-1001
e.g.2 接着问:1111-1111 1111-11111111-1111 1111-1001 对应的十进制数字是多少?
不用真的去运算,间接做!
上面的二进制数是~6。而6按位取反加一的结果就是-6在内存中的存储结果
所以 ~6+1(D) =-6(D) =è ~6 =-7(D)
所以 以上的二进制数对应的十进制数字就是-7
(4). ^异或运算
异或运算的特点:一个数字异或同一个数字两次,结果还是这个数字
应用:异或运算的这个特点可以对数据进行简单的加密和解密
(5). 移位运算
[1]. 如何获取一个32位二进制数字的最低四位?
让这个数和0x0000000f做&运算;
[2]. 如何获取一个32位二进制数字的次低四位?
先让这个数字向右移位四位再和0x0000000f做&运算;
假设这个数为A 次第四位为:int x=(x>>4)&0x0000000f;
[3]. >>和>>>的区别?
整数移位时候,两者结果一样,没有区别;
负数移位时候,>>仍用1来填充移位之后的高位数;>>>采用0作为高位填充数字
5). 三目运算符
格式 条件表达式?表达式1:表达式2
注意!!!三目运算符的结果的类型是表达式1和表达式2的计算结果类型的提升!!!!!
e.g. y =(x >1)? ‘a’ :200
如果:x>1成立,打印的结果是97 而不是’a’, 为什么?
因为三目运算符的结果数据类型是两个表达式结果数据类型的共同提升。’a’为char 200默认是int 共同提升为int 所以 ‘a’被提升为97输出!----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------