回顾Java基础1

学习方法

  1. 需求:为什么学习新技术
    • 工作需要
    • 技术控
  2. 日常工作需求观察:能否用传统技术解决
    • 能解决,但是不完美
    • 解决不了
  3. 引出新技术和知识点:知晓新技术优势所在
  4. 学习进技术或者知识点的基本原理和语法(不考虑细节)
    • 快速入门新技术(基本程序,crud)
    • 能搭出一个大的框架
  5. 等到需求的时候,再研究细节(细节是无止境的,根据项目学习)
    • 注意事项
    • 使用细节
    • 使用规范
    • 如何优化

Java代码的一些规范

  1. 类、方法的注释,要用Javadoc的方式来写
  2. 非Javadoc的注释,往往是给代码的维护者看的,着重告诉读者为什么要这么写,如何修改,注意什么问题等
  3. 使用tab操作,实现缩进,默认整体向右移动,shift+tab整体向左移
  4. 运算符和 = 两边习惯性各加一个空格。如:2 + 4 * 5 + 345 - 89
  5. 源文件使用utf-8编码
  6. 行宽度不要超过80字符
  7. 代码编写次行风格和行尾风格

运算符

取模运算符的本质

例如

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;//对

原码、反码、补码

  1. Java没有无符号位,换言之,Java中的数都是有符号的。
  2. 二进制的最高位表示符号位,0位正,1位负。
  3. 正数的原码、反码、补码都一样。
  4. 负数的补码=反码+1,反码=补码-1。
  5. 计算机的存储和运算都是以补码的形式。
  6. 看运算结果的时候,看的是原码。

位运算符

  • &与
  • |或
  • ^异或
  • ~非
  • <<算术左移:符号位不变,低位补0:本质是*2
  • 算术右移:低位溢出,符号位不变,并用符号位补益出的高位:本质是/2
  • 逻辑右移:无符号右移:低位溢出,高位补0

没有<<<符号

有关位运算

  1. 先将运算数的原码表示出来
  2. 将原码转换成补码,进行运算
  3. 获得结果补码,回推成原码
  4. 根据原码转换成运算数

原码、反码、补码的转换,符号位不变

位运算符~。按位取反,符号位也变

程序流程控制

分支控制

  1. 多分支可以没有else,如果所有的条件表达式都不成立,则一个执行入口都没有。

  2. 如果有else,所有的条件表达式都不成立,则默认执行else代码块。

嵌套分支

不要超过3层(可读性不好)

switch分支结构

switch(表达式)中的表达式返回值必须是byte、short、int、char、enum、String这几种

posted @ 2021-07-07 21:35  灰线  阅读(43)  评论(0)    收藏  举报