1. java介绍
1.1 java的特性
1.2 java的执行过程
编译型:先编译后执行;例如 C java
解释型:边解释边运行;例如:javascript 等脚本语言
java属于编译型语言:
java源文件先编译成.class字节码文件;
jvm加载.class字节码文件进行解释执行;
面试题:
java语言为什么是跨平台的?
1) java先编译为统一格式的字节码文件.class文件;
2) 使用统一标准的jvm进行统一执行.class字节码文件;
2. java注释
java的注释一般有三种:
单行注释:
// 注释内容
/* */
多行注释:
/*
* 注释内容
*
*/
doc注释:
/**
* 注释内容
*
*/
注意:doc注释多用在类、方法、变量等;可以使用jdk的doc命令生成api使用说明文档;
要求:
代码中至少要有30%的注释内容;
也即是 10行代码中至少要写3行注释内容;
后期要求每个同学必须写注释;
3.java数据类型
4.1 数据类型的分类
基本数据类型:java有8种基本数据类型;
引用数据类型(对象数据类型):存储在内存堆中,需要申请内存空间;
4.2 基本数据类型
数值型:
整型:byte(1字节) short(2字节) int(4字节) long(8字节)
默认值:0
默认类型:int
浮点型:float(4字节) double(8字节)
默认值:0.0
默认类型:double
布尔型:
boolean(与编译器有关)
默认值:false
字符型:
char(2字节)
默认值:'\u0000'
赋值要求:
char类型要求赋值的字符有且仅有一个,并且使用 '' 引出;
'' 不能为空,其中可以为 英文字符、汉字、Unicode编码;
char类型进行默认类型转换,会直接转换为int类型;
默认类型的处理:
long的处理:可以数值后面添加后缀L或者l;
float的处理:后缀F或者f;
数据类型转换问题:
1)默认(自动)转换
从范围小类型到范围到类型;
从整型到浮点型;
从字符型到int型;
基本数据类型中几种常见的转换路线:
byte --> short --> int -->long
char --> int -->long
整型 --> 浮点型
2)强制类型转换
从范围大到范围小;
语法格式:
使用小括号进行强制类型转换;
范围小类型 ii = (范围小类型)范围到类型变量;
造成精度丢失;【注意】
基本数据类型常见的注意事项:
整型:会对结果记性截取只保留整数部分;如果运算结果为int类型,则运算结果中即便有小数部分,也值保留整数部分,小数部分会被舍弃
整型中的 byte short char 可以直接赋值其范围内的数值,而不需要进行强制类型转换;
表达式的运算结果的数据类型和表达式中的最高类型保持一致;
如果运算表达式中只有byte、short、char类型,则运算结果为int类型;【特殊情况】
4.String类
String不是java的数据类型,也不是java的关键字;
只是java基础类库中的一个类名;
String 类的赋值 使用 "" 引出;引号中可以有0个、1个、多个字符;
这一点和char类型进行区别比较;
String类型可以 + 进行拼接计算;类似于C++中的运算符重载;
字符串中的转义字符的使用:
针对一些特殊的字符需要进行转义才能使用;
在Java里面也支持多种转义字符的使用,
例如:换行(\n)、制表符(\t)、\(\\)、双引号(\")、单引号(\')
5. 运算符
5.1 算术运算符
+ - * / %
+= -= *= /= %=
+=形式类似于:
a+=b;
等价于:
a= a+b;
5.2 位运算符
& | ^ ~ 【扩展:自行补充运算规则】
位运算:对二进制数值按位进行计算;
位运算的效率非常高;
位运算操作的数值都是以补码的形式存在的;【★★★】【扩展:什么是补码】
计算机中的所有的数都是以补码的形式存在的。【课外补充了解一下】
【补充@0302】
位移运算:
<< 左移/不带符号左移/有符号左移 : 等价于这个数乘以2的n次方;
二进制下,符号位不变,其他各位向左移动n位,空余的位填充0;
>> 右移/不带符号右移/有符号右移 : 等价于这个数除以2的n次方;
二进制下,符号位不变,其他各位向右移动n位,空余的位填充符号位的值(符号位是0就填充0,符号位是1就填充1);
>>> 无符号右移/带符号右移
二进制下,符号位参与移动,连同符号位向右移动n位,空余的位填充0;
该运算只对正数有意义,对负数没有意义;
5.3 自增自减运算
++ --
在当前变量的基础之上,进行+1或者-1运算;
自增自减分为先增后增;先减后减两种情况;
在自增自减表达式中有两种值:
一种是变量自身的值;
一种是正个表达式的值;
例如代码:
int iii2 = 1;
int iii3 = ++iii2;
先增:
先增运算表达式 是 ++iii2;
这个表达式整体有一个运算结果值;其中还有变量iii2自身的值;
先增:表达式的值是变量的值+1;变量自身的值+1;
同理:
后增:表达式的值是变量之前的值;变量自身的值+1;
自减运算也是一样的道理;
5.4 比较运算
> < == != >= <=
比较运算的表达式结果的数据类型为boolean类型;
5.5 逻辑运算
非 ! 与 && 或 ||
进行逻辑判定的运算;
逻辑运算要求运算表达式中的数据类型为boolean类型,且运算结果也为boolean类型;
因为比较运算的结果是boolean类型,因此逻辑运算经常与比较运算进行搭配使用;
// 课堂扩展作业:
逻辑运算的运算法则?
总结:
非: false 变 true ;true变false;
与:只有true和true与结果为true;其他都为false;
或:只有false和false或结果为false;其他都为true;
逻辑运算与位运算的区别:
逻辑运算是对boolean类型进行操作;
位运算是对二进制的 0 或 1 进行操作;
因为逻辑与和逻辑或运算的特点,会产生逻辑运算短路的现象:
特点:
与:只有true和true与结果为true;其他都为false;
或:只有false和false或结果为false;其他都为true;
逻辑短路:
逻辑与短路:
有多个连续的与运算时,从左往右,如果遇到一个操作数为false,
则该操作数之后的其他的与运算不在执行,直接返回表达式结果为false;
逻辑或短路:
有多个连续的或运算时,从左往右,如果遇到一个操作数为true,
则该操作数之后的其他的或运算不再执行,直接返回表达式的结果为true;
逻辑短路扩展:【该知识点不作为课堂内容讲解,作为课外扩展知识进行了解即可】
其实jvm对于混合的与或运算也会进行短路优化;具体规则作为课外扩展知识;
混合运算的逻辑短路规则是结合了与和或运算优先级的判定;
逻辑短路的目的和意义所在:
jvm使用逻辑运算的特点进行jvm优化的一种手段;
5.6 问号表达式/三目运算符
判定表达式?结果表达式1:结果表达式2;
运算规则:
如果判定表达式为true,则整个问号表达式的结果是结果表达式1;否则,是结果表达式2;
问号表达式可以进行嵌套使用,等价于if-else语句;