回顾Java基础1
学习方法
- 需求:为什么学习新技术
- 工作需要
- 技术控
- 日常工作需求观察:能否用传统技术解决
- 能解决,但是不完美
- 解决不了
- 引出新技术和知识点:知晓新技术优势所在
- 学习进技术或者知识点的基本原理和语法(不考虑细节)
- 快速入门新技术(基本程序,crud)
- 能搭出一个大的框架
- 等到需求的时候,再研究细节(细节是无止境的,根据项目学习)
- 注意事项
- 使用细节
- 使用规范
- 如何优化
Java代码的一些规范
- 类、方法的注释,要用Javadoc的方式来写
- 非Javadoc的注释,往往是给代码的维护者看的,着重告诉读者为什么要这么写,如何修改,注意什么问题等
- 使用tab操作,实现缩进,默认整体向右移动,shift+tab整体向左移
- 运算符和 = 两边习惯性各加一个空格。如:2 + 4 * 5 + 345 - 89
- 源文件使用utf-8编码
- 行宽度不要超过80字符
- 代码编写次行风格和行尾风格
运算符
取模运算符的本质
例如
a % b = a - a / b * b;
10 % 3 = 10 - 10 / 3 * 3; // 1
(-10) % 3 = (-10) - (-10) / 3 * 3; // -1
10 % (-3) = 10 - 10 / (-3) * (-3); // 1
(-10) % (-3) = (-10) - (-10) / (-3) * (-3); // -1
自增运算符
int i = 1;
i = i++;
sout(i);//i = 1
//原理等同于
int i = 1;
int temp;
temp = i++;//temp = 1, i = 2
i = temp;//i = 1
sout(i);//i = 1 temp = 2,但是temp被丢弃了
逻辑运算符
&和&&的区别
逻辑与和短路与的区别,功能上相同,短路与如果第一个条件为false,则不会判断第二个条件,逻辑与无论第一个条件是什么,第二个条件都要判断。效率低。开发中使用的基本都是短路与,效率高。
|与||同理
练习题
boolean x = true;
boolean y = false;
short z = 46;
if((z++ == 46)&&(y = true)) z++;
T 47 T 48
if((x = false)||(++z == 49)) z++;
F T 49 50
sout(z);// 50
逻辑运算符基本不用&和|,&和|也是位运算符。
赋值运算符
复合赋值运算符会进行类型转换(强制)
byte b = 2;
b += 3;//正确
b = b + 3;//错误,int型不能转到byte型
三元运算符
条件?表达式1:表达式2
表达式1和表达式2要为可以赋给接受变量的类型(或强制转换)
int a = 3;
int b = 5;
int c = a > b ? a : b;//a和b要和c的类型保持一致,或可自动转换的,或强制转换为c类型
int c = a > b ? 1.1 : 3.4;//错 double类型不能转成int类型
int c = a > b ? (int)1.1 : (int)3.4;//对
原码、反码、补码
- Java没有无符号位,换言之,Java中的数都是有符号的。
- 二进制的最高位表示符号位,0位正,1位负。
- 正数的原码、反码、补码都一样。
- 负数的补码=反码+1,反码=补码-1。
- 计算机的存储和运算都是以补码的形式。
- 看运算结果的时候,看的是原码。
位运算符
- &与
- |或
- ^异或
- ~非
- <<算术左移:符号位不变,低位补0:本质是*2
- 算术右移:低位溢出,符号位不变,并用符号位补益出的高位:本质是/2
- 逻辑右移:无符号右移:低位溢出,高位补0
没有<<<符号
有关位运算
- 先将运算数的原码表示出来
- 将原码转换成补码,进行运算
- 获得结果补码,回推成原码
- 根据原码转换成运算数
原码、反码、补码的转换,符号位不变
位运算符~。按位取反,符号位也变
程序流程控制
分支控制
-
多分支可以没有else,如果所有的条件表达式都不成立,则一个执行入口都没有。
-
如果有else,所有的条件表达式都不成立,则默认执行else代码块。
嵌套分支
不要超过3层(可读性不好)
switch分支结构
switch(表达式)中的表达式返回值必须是byte、short、int、char、enum、String这几种

浙公网安备 33010602011771号