java的常用概念及应用规则(此博客内容根据动力节点老师课堂笔记总结)

一、标识符:
• 在ediplus中以黑色字体显示
• 标识符可以标识类名,方法名,变量名,接口名,常量名

1、标识符命名规则
• 只能由**“数字,字母,下划线_,美元符号$”**组成,不能含有其他符号
不能数字开头
严格区分大小写
关键字不能做标识符
• 理论上长度不受限制

2、标识符的命名规范
• 最好见名知意
• 遵守驼峰规则
• 类名、接口名:首字母大写,后面每个单词首字母大写
• 变量名、方法名:首字母小写,后面每个单词首字母大写
• 常量名:全部大写

二、字面值:
1、字面值就是数据

2、由整数组成的数据属于整数型字面值
由小数组成的数据属于浮点型字面值
由字母组成的数据属于布尔型字面值
由双引号组成的数据属于字符串型字面值
由单引号组成的数据属于字符型字面值**(且单引号中只能存在一个字符)**
• 单双引号必须是半角的

三、变量:
1、变量包含“数据类型”、“名称”、“字面值(数据)”三部分

2、是内存中存储数据的最基本单元

3、在变量中,数据类型决定了该数据在内存中占有多大空间

4、变量中储存的数据必须与数据类型一致

5、声明或定义变量:
• 数据类型 变量名;
(变量名首字母小写,后面每个单词首字母大写)

6、变量的赋值:
• 变量名=字面值;
(要求字面值数据类型与变量的数据类型一致)

7、变量赋值后,可以重新赋值:
• int i=10;
• i=20;

8、有了变量的概念之后,内存空间得到了重复的使用。

9、通常访问一个变量,包括两种访问形式:
• 第一种:读取变量中保存的具体数据(get/获取)
• 第二种:修改变量中保存的具体数据(set/设置)

10、变量在一行上可以声明多个。

11、Java中变量必须声明并赋值后才能访问:
• int i=10

12、在“方法体”中的Java代码是遵守至上而下的顺序执行的。若上一行代码未结束则不能执行下一行代码。

13、在同一个作用域中,变量名不能同名。

14、变量的有效范围,就是变量的作用域,(作用域的界限就是大括号)

15、变量的分类:
•局部变量:在方法体之中的变量
•成员变量:在方法体之外的变量
(在不同作用域中变量可以同名)

四、数据类型:(四大类、八小类)
1、基本数据类型:
•第一类:整数型
bayt、short、int、long
•第二类:浮点型
float、double
•第三类:布尔型
boolean
•第四类:字符型
char

2、引用数据类型:

3、字符串“abc”不属于基本数据类型,属于引用数据类型,字符属于基本数据类型。

4、八种数据的取值范围:
类型描述 关键字 字节数
字节型 byte 1个字节
短整型 short 2个字节
整型 int 4个字节
长整型 long 8个字节
单精度浮点型 float 4个字节
双精度浮点型 double 8个字节
字符型 char 2个字节
布尔型 boolean 1个字节

5、字节(byte):
1 byte=1024 bit
1 KB=1024 byte
1 MB=1024 KB
1 GB=1024 MB
1 TB=1024 GB
【1个字节=8比特位】一个比特位表示一个二进制位:1/0

6、整数型当中的byte类型,占用一个字节,所以byte类型的数据占用8个比特位。
•在二进制中最走变得二进制位被称为“符号位”,0表示正数,1表示负数。

7、Java语言中整数型字面值被默认当做Int类型处理。在整数型字面值后家“L”即可作为long类型处理

8、浮点型数据类型默认被当做double处理,要想该字面值当float类型处理,需要用强转符号或在字面之后添加F

9、布尔型数据类型在java中只有true(真)、false(假)两个值
• 在底层存储的时候boolean类型占用一个字节,因为false底层是0,true底层是1

10、java语言中整数型字面值表示方式有三种:
• 第一种:十进制【是一种缺省默认的方式】
• 第二种:八进制【在编写八进制整数型字面值是需以0开始】
• 第三种:十六进制【编写时需以0x开头】

11、自动类型转换机制:
• 如:long x=456;
• (以上类型可自动转换)
• 如果超出类型取值范围,要手动转换为下一个类型

12、强制转换原理:
• long类型数据为八个字节,若要转换为int类型,则清除前面四个字节变为int,如:
long k=2147483648L;
转换为int类型
int R=(int)k;
(结果损失精度非常严重,为-2147483648)

13、关于基本数据类型之间互相转换:转换规则
• 八种基本类型当中除布尔类型之外剩下的七种类型之间都可以互相转换
• 小容量向大容量转换,称为自动类型转换。容量从小到大排序:
byte < short(char)< int < long < float < double
【任何浮点类型不管占用多少字节都比整数型容量大】
【char和short可表示的种类数量相同,但是char可以取得更大的正整数】
• 大容量转换成小容量叫做强制类型转换,需要加强制类型转换服,程序才能编译通过,但是在运行阶段可能会损失精度,所以谨慎使用。
• 当整数字面值没有超过byte、short、char的取值范围,可以直接赋值(但运算时不同)
• byte、short、char混合运算时,各自优先转换为int类型在运算
• 多种数据类型混合运算,先转换成最大的那种类型再做运算。

五、转义字符:
转义字符会将特殊字符转换成普通字符。
• \n 换行符
• \t 制表符
• \u 结合后面的一串字符是某个文字unicode编码。

1、JDK中自带的native2ascii.exe命令,可以将文字转换为unicode编码形式
• 使用方式:在命令行中输入native2ascii,回车,然后输入文字之后,回车即可得到unicode编码。

六、原码补码和反码:
1、原码反码补码的转换规则
• 1100110011 原
• 1011001100 反(除符号位,按位取反)
• 1011001101 补(除符号位,按位取反再加一)

2、计算机系统都是用补码储存信息
• 正数的补码:与源码相同
• 负数的补码:复数的绝对值对应的二进制码所有二进制位取反,再加1

3、当一个整数字面值没有超出byte、short、char的取值范围,这个字面值可以直接赋值给byte、short、char类型的变量**

七、运算符:
1、算数运算符:
+ 求和
- 求减
* 乘积
/ 商
% 求余数
++ 自加一
– 自减一
(一个表达式中有多个运算符时,运算符有优先级,不确定的加小括号,优先级得到提升。没必要记忆运算符的优先级)
• +运算符在java中有两个作用:运算求和、字符串连接运算,一般来说,在没有小括号的前提下,遵循从左到右依次运算
• ++和–符号可以出现在字面值的前后,当出现在前面时,如:
int R=++10
• 则System.out.println®;值为11(先运算,再赋值)
• 若出现在后面如:
int k=10++
• 则System.out.println(k);值为10(先赋值,再运算)此时若再次输出k值则为11

2、关系运算符:
> 大于
< 小于
>= 大于等于
<= 小于等于
== 等于
!= 不等于
• 关系运算符的运算结果一定是布尔型:true/false【关系运算符比较的是值而不是变量】

3、逻辑运算符:
& 逻辑与
| 逻辑或
! 逻辑非
^ 逻辑异或
&& 短路与
|| 短路或
• 逻辑运算符要求两边的算子都是布尔型,并且结果也是布尔型。
• 短路与和逻辑与运算结果相同,但短路与存在短路现象
• 短路或和逻辑或运算结果相同,但短路或存在短路现象
【短路现象是当判定一个表达式已经得出结果时,另一个表达式不运算】

4、赋值类运算符:
• 基本的赋值类运算符
=
• 扩展的赋值类运算符
+=
-=
*=
/=
%=
• 赋值类运算符的优先级:先算右边,再赋值给左边的变量。
• 重要结论:
扩展类运算符不改变运算结果的类型,例如:
int y=20
y+=5【结果就是25,等同于y=(int)(20+5)】

八、控制语句:
【关于Java语言中的if语句属于选择结构,if语句,又被称为分支语句/条件控制语句】
1、if语句的语法结构:四种
• 第一种:
if(布尔表达式){
java语句;
java语句;


• 第二种:
if(布尔表达式){
java语句;
java语句;

}else{
java语句;
java语句;


• 第三种:
if(布尔表达式){
java语句;
java语句;

}else if(布尔表达式){
java语句;
java语句;

}else if(布尔表达式){
java语句;
java语句;

}…

• 第四种:
if(布尔表达式){
java语句;
java语句;

}else if(布尔表达式){
java语句;
java语句;

}else if(布尔表达式){
java语句;
java语句;

}else{
java语句;
java语句;


2、重点:对于java中的if语句来说,只要有一个分支执行,整个if语句全部结束。

3、所有的控制语句都是可以嵌套使用的,只要合理嵌套就行。(该缩进的时候必须缩进)

4、If语句的分支中,只有一条Java语句的话,大括号可以省略不写。

2、swich语句:
• swich也属于选择结构,也是分支语句
• swich语句的语法结构:
swich(int或String类型的字面值或变量){
case int或String类型的字面值或变量:
java语句;

break;
case int或String类型的字面值或变量:
java语句;

break;

default;
java语句;


• swich语句匹配成功的分支执行分支当中,最后有“break;”语句的话,整个switch语句终止。
• 匹配成功的分支执行,分支当中没有“break;”语句的话,直接进入下一个分支执行,(不进行匹配)这种现象被称为“case穿透现像”【提供break语句可以避免穿透】
• 所有分支都没有匹配成功的话,当有default的语句,会执行default分支当中的程序。
• case可以合并:
int i =10;
switch(i){
case 1: case 2:case10:
System.out.println( “hhh” );

3、for循环语句:
• 语法结构:
for(初始化表达式;布尔表达式;更新表达式){
循环体:由java语句组成

• for循环的执行过程\执行原理【*****】
• 初始化表达式、布尔表达式、更新表达式都不是必须的【但是两个分号是必须的】
• 初始化表达式最先执行,并且在整个for循环当中只执行一次。
• 布尔表达式必须是true\false,不能是其他职。
• for循环执行过程:
先执行初始化表达式,并且只执行一次。
判断不我表达式的结果是true还是false?
当布尔表达式是true时,执行循环体,然后执行更新表达式,再判断布尔表达式…
当布尔表达式为false时,循环终止

4、while循环语句:
• 语法结构:
while(布尔表达式){
循环体;

若布尔表达式为true,则执行循环体,然后再判断布尔表达式,直到表达式为false,循环结束。

5、do…while语句:
• 语法规则:
do{
循环体;
}while(布尔表达式);
• 执行原理:先执行循环体,再判断布尔表达式,若为true,再执行循环体,直到表达式为false,循环结束

6、break(中断)语句:
• break;是一个完整的java语句
• break表示终止整个循环,不再开始下次循环
• 在默认情况下,break终止的是离它最近的语句,也可以终止特定的语句,格式为:
break 循环语句名称;

7、continue(继续)语句:
• continue;也是一个完整的java语句
• continue表示终止本次循环,开始下次循环
• continue后加循环名称也可终止特定循环语句

九、方法(method):
定义在类体中
• 在一个类中可以定义多个方法,但一个方法中不能再定义方法
• 语法结构:
[修饰符列表]返回值类型 方法名(形式参数列表){
方法体;

• 修饰符列表:
• 不是必填的
• 方法的修饰符列表有“static”的话,调用方法为:类名.方法名(实际参数列表);

• 返回值类型:
• 方法结束之后返回最终执行结果,执行结果可能是一个具体存在的数据,这个数据就是返回值。
• 返回值类型可以是基本数据类型和引用数据类型

• 如果方法执行后不返回任何数据,则填写“void”关键字
• 如果返回值类型不为“void”,则方法结束后必须返回具体数值
• 如何返回值:
只要在方法体中加“return 值”即可返回值【返回值的数据类型必须和方法中声明的返回值类型相同】
• 只要输入带“return”的语句执行,则整个方法结束

我的手机 2019-08-26 20:35:37
• 形参:
• 形参是局部变量
• 可以是0到N个,形参之间用“逗号”隔开
• 形参中起决定性作用的是形参的数据类型,形参的名字就是局部变量的名字。
• 实参列表和形参列表必须满足数量相同,类型对应相同。

十、java内存划分中主要的内存空间:
• 方法区内存
• 堆内存
• 栈内存
1、关于“栈”数据结构:
• 栈:stack,是一种数据结构
• 栈内存数据结构图:java的常用概念及应用规则(此博客内容根据动力节点老师课堂笔记总结)_第1张图片

JVM内存结构图:
java的常用概念及应用规则(此博客内容根据动力节点老师课堂笔记总结)_第2张图片
2、代码首先在方法区内存中分配内存,当方法不执行时,不分配内存。而方法体属于.class文件,所以在方法区内存中分配内存。而当方法执行时,在栈内存中分配内存

你可能感兴趣的:(java的常用概念及应用规则(此博客内容根据动力节点老师课堂笔记总结))