----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------
第二章 java语言基础组成
1 标识符
定义:java中对各种变量,方法和类的命名都叫标识符。在java中凡是自己起的名字都叫标识符,都需要遵守标识符规则。
组成:
由26个英文字母大小写、数字(0-9)、和符号_$组成。
java中严格区分大小写,标识符不限制长度
为了方便阅读,标识符的定义要有意义。
规则:
数字不可以开头;
不可以使用关键字。
java中的名称规范
包名:由多单词组成时,所有的单词首字母都小写xxx.yyy.zzz
类名和接口名:由多单词组成时,所有的单词首字母都大写。XxxYyyZzz
变量名和函数名:多单词组成时,第一个单词首字母都小写,第二个单词开始首字母都大写。xxx_Yyy_Zzz
2 关键字
定义:被java语言赋予了特殊含义的,用于专门用途的单词
特点:所有的关键字字母都小写。
定义类型:
定义访问权限修饰符的关键字
定义类、函数、变量修饰符的关键字
定义类与类之间关系的关键字
定义建立实例及引用实例、判断实例的关键字
用于异常处理的关键字
用于包的关键字
定义数据类型
定义数据类型值
定义流程控制的关键字
其它修饰符关键字
3 注释
定义:用来注解说明解释程序的文字就是注释。注释提高了代码的阅读性。
单行注释://
作用范围:从//开始到这一行的末尾(回车符结束)。
可以嵌套使用。
可以调试程序。
多行注释:/*需要注释的代码及文字*/
作用范围:从/*开始,到*/结束
不可以嵌套使用。
文档注释:/** */
是java特有的,可以用javadoc工具生成帮助文档。
对于单行和多行注释,被注释掉的的文字不能jvm虚拟机解释执行;
4 常量与变量
常量:表示不能改变的数值。
分类:
整数常量:所有的整数。
小数常量:所有的小数。
布尔型常量:只有两个数值true和false。
字符常量:将一个数字或者字符用''表示。
字符串常量:将一个或多个字符用""表示。
null常量:只有一个数值null。
表现形式:
二进制:0,1 满2进1,用0b表示开头。
八进制:0-7 满8进1,用0表示开头。
十进制:0-9 满10进1
十六进制:0-9,A-F 满16进1,用0x表示开头。
进制互转
十进制转其它进制
规则(通用方法):除基取余,直到商为0,最后将余数反转
十进制==>>二进制:
除以2,直到商为0 ,将所有取得的余数反转。
技巧:8421码
十进制==>>八进制
除以8,直到商为0,将所有取得的余数反转。
十进制-->二进制-->八进制
先把十进制转成二进制
再把二进制数据每三位组合,左边不够三位,用0补位
然后把每个组合计算成对应的十进制数据
最后从左到右把数据相连接,即可得到八进制数据
十进制==>>十六进制
除以16,直到商为0,将所有取得的余数反转。
十进制-->二进制-->十六进制
先把十进制转成二进制
再把二进制数据每四位组合,左边不够四位,用0补齐
然后把每个组合计算成对应的十进制数据
最后从左到右把数据相连接,即可得到十六进制数据
其它进制转成十进制
规则:把数据的每一位上的系数(数字)乘以对应基数(几进制)的次幂(低位从从零开始),然后相加即可。
变量
概念:内存中的一个存储区域,该区域有自己的名称(变量名)和类型(数据类型)
作用:不断存放同一类型的常量,并可以重复使用。
作用范围:一对{}之间有效。
格式:数据类型 变量名 = 初始化值;
变量的分类:
按照定义的位置划分:
局部变量:方法或语句块内部定义的变量。局部变量必须赋值,否则会出现编译错误
成员变量:方法外部类的内部定义的变量。成员变量可以不赋值,因为java虚拟机会给成员变量赋默认值
类外面与类对应的大括号外面不能定义变量。
按照所属的数据类型划分:
基本数据类型
引用数据类型
变量在使用时的两种格式
在声明的同时赋值:byte b = 100; System.out.println(b);
先声明,再赋值,再使用:
byte b2;
b2 = 100; System.out.println(b2);
5 数据类型
Java语言是强类型语言,对于每一种数据都定义了明确的具体数据类型,在内存中分配了不同大小的内存空间。
基本数据类型(4类8种):在内存中分配的空间大小不同,从而导致它表示的数据范围不同
整数型:
byte 占1个字节
short 占2个字节
int 占4个字节 (整数型变量的默认类型)
long 占8个字节,后面要用L或l标识(建议用L)
浮点型:
float 占4个字节 其后加F或f标识
double 占8个字节 (浮点型变量的默认类型)
字符型:
char 占2个字节
转义字符:
\t:制表符
\n:换行符
\r:回车符
\‘ 单引号字符
\” 双引号字符
\\ 反斜杠字符
转义字符需要写在单引号或双引号里用+号连接,转义字符代表的是一个字符可以放在char里
布尔型 boolean
这个数据类型代表一个比特的信息,但它的“大小”不是精确定义的东西.
true
false(默认为false)
适用于逻辑运算,一般用于程序流程控制。boolean类型数据只允许取值true或者false,不可以0或者非0
的整数替代true和false。
引用数据类型:
类 class
接口 interface
数组 []
6、数据参与运算
自动类型转换(也叫隐式类型转换);
强制类型转换(也叫显式类型转换)
整型,字符型,浮点型的数据在混合运算中相互转换,转换时遵循以下原则:
容量小的类型与容量大的类型进行计算,默认转换为容量大的数据类型
数据类型按容量大小排序为:
byte,short,char->int->long->float->double
byte,short,char之间不会互相转换,他们三者在计算时首先会转换为int类型
容量大的数据类型转换为容量小的数据类型时,要加上强制转换符,但可能造成精度降低或溢出;使用时要格外注意。
有多种类型的数据混合运算时,系统首先自动的将所有数据转换成容量最大的那一种数据类型,然后再进行计算
强制转换符
格式:(数据类型)(要被转换的数据) byte b = (byte)(130);
字符型参与运算
首先会去找对应字符的unicode码值。然后运算。
char 类型内容补充取值范围0~2(16)-1,能不能把整数直接赋值给char类型的变量char ch = 123;
布尔型不能参与运算
字符串参与运算
它是和参与运算的数据相连接组成了一个新的字符串。
因为有了这个特性,所以我们求出了我们名字的字符值就可以在内存中这样输出
System.out.println(""+'\u51AF'+'\u4F73');
思考:哪句是编译失败的呢?
byte b1=3,b2=4,b;
b=b1+b2; //编译失败。byte,short,char三种数据类型在内存中运算的时候会自动类型提升为int去运算
b1和b2是两个变量值,jvm无法判断里面值的大小
b=3+4; //编译通过。3+4的结果是7,jvm可以对常量值进行判断,如果在byte的取值范围就不会报错,
这和我们直接定义byte b = 3;的道理是一样的,3在内存中默认也是int型的,但是当jvm判
断它是在byte的范围之内就不会报错;
7、运算符
算术运算符 + - * / % ++ --
取模运算符 %
当左边的绝对值小于右边:结果是左边
当左边的绝对值等于右边或者是右边倍数的时候:结果是0
当左边的绝对值大于右边:结果是余数,符号取决与左边的的符号
取余的正负号取决于左边,右边忽略不记
用途:任意正整数%2 结果是要么0,要么1。用于切换条件
除号运算符 /
它的整数除和小数除是有区别的:整数之间做除法时,只保留整数部分而舍弃小数部分。
例:int x=3510;x=x/1000*1000;
递增递减运算符 ++ --
就是加1或者减1
单独存在,放在操作数的前面或者后面,结果一样
参与运算时:
放在操作数的前面,先自身加或者减1,然后再参与运算(赋值)
放在操作数的后面,先参与运算(赋值),然后再自身加或者减1
加号运算符 +
作为数据的符号(正号)
做加法运算
字符串连接符:把非字符串转换成字符串
赋值运算符
赋值运算符 =
把右边的值赋给左边。
举例:int x = 3; 把3赋给int类型变量x
加赋值运算符 +=
把左边和右边的和赋给左边
举例:int x = 3; x+=2;等同于 x = x + 2;
byte b = 5;
b += 127; //编译通过。b=(byte)(5+127);+=运算符在给b赋值时,自动完成了强转操作。、
NwYZSystem.out.println(b);
比较运算符 ==, !=, >, <, >=, <=
比较运算符的结果都是boolean型,也就是要么是true,要么是false。
逻辑运算符
逻辑运算符用于连接布尔型表达式。
与运算符 "&"
左右两边同时为true,结果为true。
或运算符 "|"
左右两边只要有一个结果是true,结果为true。
异或运算符 ^
左右两边相同,结果为false
非运算符 "!"
!true-->false !false-->true !!true-->true
短路与运算符 "&&"
&:左边无论什么结果,右边都执行。
&&:左边为false,右边不执行,结果为false。
短路或运算符 "||"
当左右都为true时,结果为false。
| 左边无论什么结果,右边都执行。
|| 左边为true,右边不执行,结果为true。
位运算符
左移位运算符: (<< )
一个数向左移动几位就乘以2的几次幂
右移位运算符: (>>)
一个数向右移动几位就除以2的几次幂
无符号右移运算符:(>>>)
无符号右移无论最高位的符号位是0还是1,高位符号位都是补0
与位运算符: (&)
二进制位进行&运算,只有1&1时结果是1,否则是0;
或位运算符: (|)
二进制位进行 | 运算,只有0 | 0时结果是0,否则是1;
异或位运算符: (^)
相同二进制位进行 ^ 运算,结果是0;1^1=0 , 0^0=0
不相同二进制位 ^ 运算结果是1。1^0=1 , 0^1=1
三元运算符
格式:(条件表达式)?表达式1:表达式2;
如果条件为true,运算后的结果是表达式1;
如果条件为false,运算后的结果是表达式2;
三元运算符运算完之后一定有一个结果。