2. 标识符
2.1. 定义:
就是用来起到 标识作用的符号;
(就是程序员对自己定义的东西起的名字)
2.2. 命名规则(语法规定的,必须遵守的):
1、可以由大小写字母、数字、下划线(_)、美元符号($)组成;
2、数字不能开头;
3、关键字不能使用;
4、严格区分大小写
合法的标识符:name; _Abc; a, A;;clasz;
非法的标识符:0nae;1name; class ;
2.3. 书写规范:
驼峰法:
1、类名:首字母大写;多个单词,每个单词首字母大写; 如:Demo; XxxxYyyyZzzz;
2、方法名(函数名):首字母小写,多个单词,从第二个单词开始,每个单词首字母大写; 如:xxxxYyyyZzzz
3. 注释
3.1. 定义:
生活中的注释:文言文;英语单词;
Java中的注释,就是对代码起到解释说明的文字;
(给开发者看得;JVM不会看,所以编译的时候,不会编译注释的内容)
3.2. 写法:
单行注释://被注释的内容,直到这一行结束
多行注释:/* 被注释的内容 */
文档注释:/** 被注释的内容 */
作用是,可以让被注释的内容,被javadoc工具提取出来,生成一个帮助文档;
3.3. 作用:
1、解释代码,提高代码的可读性;降低开发和维护的难度;
2、被注释的内容不会被编译,可以在排查错误使用,或者调整功能;
对于新手来说,
1、将思路和分析的过程用注释写出来,有助于理清思路;
2、养成良好的注释的习惯,在面试的时候有用;
4. 常量
4.1. 定义:
就是定义之后不会改变的数据;
4.2. java中常量的分类:
数值型:
整数型:正数、负数、0;
浮点型(带小数点的数):-3.4,0.0,7.8;
文本型:
字符型:用英文的单引号括起来的单个的字符;’2’;’a’;
字符串型:用英文的双引号括起来的零个或多个的字符;”” ; “ ”; “a”;”123” ;“嗨!美女!”;
布尔型:只有两个值:true(表示真,对) , false(表示假, 错);
空值常量:null;
4.3. 计算机数值的表示(知道):
计算机只认识二进制的数据;
4.3.1. 进制介绍
生活中一般使用十进制计数,逢十进一,一个数字位上,最大是9;
进制,就是数字进位的规则;
x进制,就是逢x进一,一个数字为上,最大的数字就是x-1;
4.3.2. 二进制的由来
计算机中使用电信号工作,能够准确表示的只有高电位和低电位;相当于开关的开和关;
一个数字位只能表示两个数字,在计算机中,这个数据量叫做1bit;
一般使用8个数据位表示一个数字,称为一个字节:
8bit = 1byte;(B)
1024 byte = 1kb;
1024kb = 1mb;
1024mb = 1Gb;
1024Gb = 1Tb;
1024Tb = 1 Pb;
4.3.3. 八进制和十六进制
八进制和十六进制,解决了二进制数字书写太长的问题;
100:
二进制:加前缀:0b; 0b100;
八进制:加前缀:0; 0100;
十进制:默认没有前缀;
十六进制:加前缀:0x; 0x100;
4.3.4. 进制转换
任意进制转换为十进制:位权展开法;
十进制转换为任意进制:短除法;
快速转换法:
4.3.5. 负数的二进制表示
4.4. 计算机字符的表示(编码表):
计算机中只能识别二进制的数字;
A |
0 |
B |
1 |
C |
2 |
D |
3 |
BBC: 112
ABCD:0123
在要表示的字符和数字之间建立一个一一对应的关系,在底层还是通过数字表示;
保存这个对应关系的表格,就是编码表;
常见的编码表:ASCII;Unicode;GB2312;BGK
……
5. 变量
5.1. 变量的概念
可以改变的数据;
在Java中,变量指的是内存中的一块空间,可以存放常量数据的;
5.2. java的数据类型
基本数据类型:
数值型:
整数型:
byte:一个字节;-128 ~ 127;
short:两个字节:-2^15 ~ 2^15-1;
int:四个字节:-2^31 ~ 2^31-1;
long:八个字节:-2^63 ~ 2^63-1;
在Java中,整数默认都是int型的;
浮点型:
float:四个字节; -2^127 ~ 2^127;
double:八个字节; -2^1023 ~ 2^1023;
在Java中,浮点数默认都是double型的;
字符型(char):两个字节; 0 ~65535;
布尔型(boolean):true false;
引用数据类型:后面数组的时候讲; String 不是基本数据类型;
5.3. 变量的书写格式
数据类型 变量名;
变量名 = 数值;
数据类型 变量名 = 数值;
使用变量,是通过变量名来使用的;
5.4. 变量的命名
变量名,是标识符;命名规则,和标识符的命名规则是一样的;
书写规范,在驼峰法中,和函数名的书写规范一样:
第一个单词的首字母小写;多个单词从第二个单词开始,首字母大写;
一般标识符的命名最好都有意义;
5.5. 变量的使用注意事项
5.5.1. 变量都有使用范围
5.5.2. 变量使用前,都要赋值
5.5.3. 给变量赋值,需要和变量的数据类型一致
5.6. 数据类型转换
5.6.1. 自动类型转换:
将取值范围小的类型的数据,往取值范围大的类型的变量中放,可以直接放进去,不会损失精度;
这种情况叫做Java的自动类型转换;
byte --> short --> int --> long --> float --> double;
char -->int
5.6.2. 强制类型转换:
将取值范围大的类型的数据,往取值范围小的类型的变量中放,有可能放不进去,会出现精度损失;
如果必须往里面放,就需要使用一种方法:
小的范围的数据类型 变量名=(小的范围的数据类型)变量名;
这种情况叫做Java的强制类型转换;
原因:
一个面试题:
Java中整数默认都是int的,要声明一个long类型的常量,需要在数字后面加上字母:L(大小写都可以,推荐大写,方便识别)
Java中浮点数默认都是double的,要声明一个float类型的常量,需要在数字后面加上字母:F(大小写都可以)
6. 运算符
6.1. 算术运算符
就是用来对数据进行算术运算的符号;
+(加);-(减);*(乘);/(除);%(模运算:相当于取余运算);
参与运算的两个数据,如果数据类型不一致,结果是取值范围大的类型;
++:自增运算符;一元运算符,就是只有一个数据参与运算;
int a = 100;
运算符在运算的数据左边,叫做左自增:++a;
左自增,就是在参与运算的数据的自身上进行加一运算;
运算符在运算的数据右边,叫做右自增:a++;
- -:自减运算符;
自减运算符,原理和自增运算符一样,不同之处是,进行的是减一运算;
自增自减运算符练习:
+ :当运算符两边任意一边存在字符串时,它就是一个字符串连接符,作用就是将两边的数据连接成一个大的字符串;
练习:
总结:字符+字符是对应的ASCII上的数字 字符+字符串 字符串拼接
6.2. 赋值运算符
=: 表示将符号右边的值赋值给符号左边的 变量;
+=:-=;*=;/=;%=;
复合赋值运算符,其实是一种简写的形式;
a += b <=> a = a+b;
可以自动进行强制类型转换:
6.3. 比较运算符
运算结果都是布尔型常量;
>;
>=;
<;
<=;
==:
!=;
所有的基本类型的数据,都可以通过 == 符号进行相等性验证;
注意:区间判断,不能连接着写;
1.1. 逻辑运算符
&:与,相当于并且的意思,表示运算符两边的数据都为真,结果才是真;
&&:短路与,运算结果和&是一样的;
|:或,系那个当与 或者的意思,表示运算符两边的数据,有一个为真,结果就是真;
||:短路或,运算结果和|是一样的;
^:异或,表示运算符两边的数据不一样,结果才为真,否则就是假;
上面的运算符都是二元运算符,而且参与运算的两个数据和运算的结果都是布尔型的数据;
!:非;表示相反的意思;是一个一元运算符;
逻辑运算符练习:
逻辑运算表:!true = false; !false = true;
运算符左边 |
运算符右边 |
&(&&) |
|(||) |
^ |
true |
true |
true |
true |
false |
true |
false |
false |
true |
true |
false |
true |
false |
true |
true |
false |
false |
false |
false |
false |
&和&&的异同:
相同点:运算结果都一样;表示的逻辑运算关系也是一样的;
不同点:
&:不管符号左右两边的值是多少,两边都要进行运算;
&&:如果符号左边为false,就不计算右边;否则,右边也要计算;
|和||的异同:
相同点:运算规则也是一样的;运算结果也是一样的;
不同点:
|:不管左右两边如何,两边都要计算;
||:如果左边为真,结果一定为真,就不去计算右边;否则,就要计算右边;
问题:什么时候使用&和|?
如果右边一定要计算,就要使用& 和 |;
1.2. 三元运算符
格式:
变量名 = 布尔表达式 ? 表达式一 : 表达式二;
运算过程:
需要注意:三元运算符,必须有一个变量接收运算结果;
1.3 流程控制语句
<<:左移运算符:
>>:有符号右移(算术右移),运算前后,数字的正负号不改变;
总结:有符号右移运算,左边空出来的都是用原来的符号位的数字补齐;
>>>:无符号右移(逻辑右移),右移后,左边空出来的全部用0补齐;
&:按位与;
^:按位异或
按位^的应用
总结
上面代码首先ab异或获取到c的值,然后当c与a异或 获取b 然后把b的值赋给a 然后 c与b异或获取a 然后把a的值赋值给b 这样就能获取两个数值的调换。
然后这样有个缺点是必须要给c进行初始化,那么为了节省内存空间 直接在ab两个值之间进行计算,少去c的运算步骤
1. a与b异或获取一个c 把c 赋给 a 2. a与b异或把酒相当于 c与b异或 获取到a的值 然后把a的值赋值给b 3.a与b异或就相当与 c与a异或获取b然后把值赋给a
~:按位取反: