参考书目《Java 编程思想》所以大家放心食用

一、注释规范以及API文档

1.注释

1.1三种注释方法

  1. //注释内容 单行注释
  2. /* 注释内容 */ 多行注释
  3. /**注释内容*/ 文档注释

1.2WHY注释

  1. 对代码进行说明,增强可读性,方便自己,方便别人
  2. 调试代码

1.3注释注意事项

单行注释和多行注释,注释了的内容不参与编译。

换句话说,编译以后生成的.class结尾的字节码文件中不包含注释掉的信息

注释内容可以被JDK提供的工具 javadoc 所解析,生成一套以网页文件形式体现的该程序的说明文档。

多行注释不可以嵌套使用

2.Java API 文档

API: Application programming interface. 应用程序编程接口

API文档:Java程序(框架、系统、项目等等)针对类库的一份说明书,类似词典

官网可以下载,进technology那个子域名

Java jdk1.8的API文档

链接:https://pan.baidu.com/s/1xnzm45xi3qkZP9osvgK5Uw

提取码:06uz

复制这段内容后打开百度网盘手机App,操作更方便哦

3.良好的编程风格

好的程序员有良好的编程习惯所写的代码,看起来很“舒服”

个人很喜欢阿里巴巴给的Java开发规范,阿里巴巴的规范要求的注释可能比较多(可能会觉得麻烦),但对于代码的合作开发等等等等是很不错的参考,并且推荐遵守

二、关键字与标识符

1.Java关键字的使用

定义:被Java语言赋予了特殊含义,用做专门用途的字符串(单词)

就是Java预先占用的关键字,不能作为开发者自己的变量名称。

关键字都为小写

关键字需要熟记,当然随着Java的学习与使用,关键字会自然的记在心中

synchronized: 利用锁的机制来实现同步的。

instanceof是Java的保留关键字,也可以叫运算符,用来在运行时指出对象是否是特定类的一个实例。instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例。

用法:

result = object instanceof class

参数:

Result:布尔类型。

Object:必选项。任意对象表达式。

Class:必选项。任意已定义的对象类。

说明:

如果 object 是 class 的一个实例,则 instanceof 运算符返回 true。如果 object 不是指定类的一个实例,或者 object 是 null,则返回 false。

2.保留字

现Java版本尚未使用,但以后版本可能会作为关键字使用。

具体哪些保留字:gotoconst

注意:自己命名标识符时要避免使用这些保留字

3.标识符

Java 中标识符是为方法、变量或其他用户定义项所定义的名称。标识符可以有一个或多个字符。

就是可以自己命名的地方

3.1标识符定义规则(重要)

  • 标识符由数字(09)**和**字母(AZ 和 a~z)美元符号($)、**下划线(_)**以及 Unicode 字符集中符号大于 0xC0 的所有符号组合构成(各符号之间没有空格)。
  • 标识符的第一个符号为字母、下划线和美元符号,后面可以是任何字母、数字、美元符号或下划线。数字不能开头

另外,Java 区分大小写,因此 myvar 和 MyVar 是两个不同的标识符。

提示:标识符命名时,切记不能以数字开头,也不能使用任何 Java 关键字作为标识符,而且不能赋予标识符任何标准的方法名

另外,希望大家养成良好命名规范,关键:命名要有实际意义,可以使用简写但是一定要能看懂意思,比如psg:passage,password就不要psd了

3.2标识符规范(重要)

标识符规范化是为了便于开发,合作,检查等等,不遵守可以运行,但是最好要遵守

这里推荐看看阿里巴巴的规范

PDF我分享在这里,也可以去官网下载

链接:https://pan.baidu.com/s/1qCJU67mwv78sM_YfLD1KgA

提取码:zwv4

复制这段内容后打开百度网盘手机App,操作更方便哦

  • 包:(其实就是源代码文件夹)名字要使用纯小写 aabbcc
  • 类、接口:要求首字母大写,使用驼峰式 AboutMsg
  • 变量名、方法名:要求小写,驼峰式 aboutMy
  • 常量名:要求大写,下划线连接 ABOUT_MY

再次强调:命名要有实际意义,适当 缩写

4.变量

4.1数据类型

详细说明:

  1. 整型:byte(1字节=8bit) \ short(2字节) \ int(4字节) \ long(8字节)

    1. byte范围:-128 ~ 127
    2. 声明long型变量,必须以"l"或"L"结尾 long a=456L
      • 【强制】在 long 或者 Long 赋值时,数值后使用大写的 L,不能是小写的 l,小写容易跟数字 1 混淆,造成误解。 说明:Long a = 2l; 写的是数字的 21,还是 Long 型的 2? (阿里巴巴规范)
    3. 通常,定义整型变量时,使用int型。
    4. ④整型的常量,默认类型是:int型
  2. 浮点型:float(4字节) \ double(8字节)
    1. 浮点型,表示带小数点的数值
    2. float表示数值的范围比long还
    3. 定义float类型变量时,变量要以"f"或"F"结尾
    4. 通常,定义浮点型变量时,使用double型。
    5. 浮点型的常量,默认类型为:double
  3. 字符型:char (1字符=2字节)
    1. 定义char型变量,通常使用一对’’,内部只能写一个字符
    2. 表示方式:1.声明一个字符 2.转义字符 3.直接使用 Unicode 值来表示字符型常量
  4. 布尔型:boolean
    1. 只能取两个值之一:true 、 false
    2. 常常在条件判断、循环结构中使用

4.2按声明位置分类

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZO0F758a-1584118449829)(E:\notes\Java复习笔记\image-20200313141924046.png)]

4.3 自动类型转换(只涉及7种基本数据类型)

这里是不包含boolean类型的,在Java中,布尔类型boolean的值不等于0或1

另外boolean与Boolean不相同!回忆我们的命名规范,你应该知道,Boolean是一个对象,实际上是将要接触的包装类

结论:当容量小的数据类型的变量与容量大的数据类型的变量做运算时,结果自动提升为容量大的数据类型

byte 、char 、short --> int --> long --> float --> double

特别的:当byte、char、short三种类型的变量做运算时,结果为int型

说明:此时的容量大小指的是,表示数的范围的大和小。比如:float容量要大于long的容量

字面值

布尔字面值只有两个逻辑值:truefalsetruefalse的值不转换为任何数字表示。

Java中的真正字面值不等于1,false字面值也不等于0.在Java中,它们只能分配给声明为boolean的变量。

4.4强制类型转换(只涉及7种基本数据类型):自动类型提升运算的逆运算。

更详细的说明在运算符章节

1.需要使用强转符:()

int a=(int)b/c;

2.注意点:强制类型转换,可能导致精度损失

另外,有一个本人经常犯错误的点:

当从session取出数值时,转换为Integer,这里一定要注意,Integer是包装类,如果使用了强制类型转换,多半报错。涉及变量转换和是否可以为null的坑很多,一定要小心

comment.setCommentAuthorId(Integer.valueOf(subject.getPreviousPrincipals().getPrimaryPrincipal().toString()));

4.5String与8种基本数据类型间的运算

关于运算在下面字符串操作符中有讲解,相关深度的内容较后发出

  1. String属于引用数据类型,翻译为:字符串 ,String也是一个对象
  2. 声明String类型变量时,使用一对""
  3. String可以和8种基本数据类型变量做运算,且运算只能是连接运算:+
  4. 运算的结果仍然是String类型

    避免:

    String s = 123;//编译错误

    String s1 = “123”;

    int i = (int)s1;//编译错误

5.直接常量

一般情况下,如果在程序中使用了直接常量,编译器可以直接得出生成的类型,但是有时是模棱两可的,需要程序员加适当的“指导”,用与直接常量有关的某些字符来额外增加一些信息。

Ox2f
Ox2F
200L

直接常量的后缀字符标志了它的类型。

  • 字母L(也可以为小写,避免混淆,不推荐)代表long
  • 字母F、f代表float
  • 字母D、d代表double
  • 十六进制:0x开头,或0X开头,后跟0-9、a-f
  • 八进制前缀0

Integer.toBinaryString()以及Long.toBinaryString()可以转化为二进制表示数字的字符串

6、指数记数法

1.9e-7的意义与数学不同,e是”10的幂次”,即1.9*10^-7

三、操作符

几乎所有的操作符都只能操作“基本类型”。例外的操作符是“=”、“==”和“!=”,这些操作符能操作所有的对象(这也是对象令人糊涂的地方)。除此以外,Sting类支持“+”和“+=”

——《Java编程思想》·

计算顺序:先乘除后加减,使用括号明确顺序,防止意外

1、算术运算符

同C语言相通,没有改变

加减乘除取余: +、-、*、/、%

自增、自减 – ++ ,注意该运算符的位置也会影响结果

But,++或者–位置不不同,也有不同的意义

这两个操作符各有两种使用方式,通常被称为“前缀式”和“后缀式”。“前缀递增”表示“++”操作符位于变量或表达式的前面;而“后缀递增”表示“++”操作符位于变量或表达式的后面。类似的,“前缀递减”意味着“–”操作符位于变量或表达式的前面;而“后缀递减”意味着“–”操作符位于变量或表达式的后面。对于前缀递增和前缀递减(如++a和–a),会先执行运算,再生成值。而对于后缀递增和后缀递减(如a–和a++),会先生成值,再执行运算

——摘录自《JAVA编程思想》

就是说,在 b=++a的情况下

或者++a=b等等情况

如果++在变量前就先给变量+1再进行运算,如果在变量后就先给变量-1再进行运算

2、赋值运算符

赋值运算符:= += -= *= /= %=

简单来说分为两类

  • 直接赋值
  • 计算然后赋值

直接赋值

没什么讲的,就是直接赋值 = ,还能用于对象

计算然后赋值

举例a+=2; 实质是a=a+2;相当于缩写

-= 、*=、 /= 、%=同理

注:复合运算符的运算的结果不会改变变量本身的数据类型!所以推荐使用复合运算符,如下图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UAEhll9l-1584118449830)(E:\notes\Java复习笔记\image-20200313192727846.png)]

3、关系操作符

关系操作符生成的是一个boolean(布尔)结果为真就是true,为假就是false

大于(>)、小于(<)、等于(==)、不等于(!=)、小于或等于(<=)、大于或等于(>=)

其中的等于和不等于适用于所有的数据类型,其他的比较符不适用于boolean类型,因为boolaen类型只能为true或false

3.1、对象的等价性

看这个例子

Integer n1=new Integer(47);
Integer n2=new Integer(47);
System.out.println(n1==n2);
/*Output
false
*/

例子将两个对象进行比较,两个对象是同一种类,并且内部的信息也相同,结果却是false,为什么?

==和!=比较的是对象的引用(是否同一个对象)

如何比较对象内实际内容是否相同?

使用equals()方法,该方法不适用于基本类型!

equals()方法的默认行为是比较引用需要我们重载方法来达到我们的需要(Integer类正是重写了这一方法)

Integer n1=new Integer(47);
Integer n2=new Integer(47);
System.out.println( n1.equeals(n2) );
/*Output
true
*/ Class In{
int value;
In(int value){
this.value=value;
}
} In n1=new In(47);
In n2=new In(47);
System.out.println( n1.equeals(n2) );
/*Output
false
*/

我们发现Integer比较合乎了我们的需要

若是普通的类,却变成了false

4、逻辑运算符

**&& || ! ** 与 或 非

单目运算符& 与 |?

& 与 &&、|与|| 的运算结果相同

但是当符号左边是false时,&继续执行符号右边的运算。&&不再执行符号右边的运算。

双目运算符有短路的特性,而单目不支持,这意味着单目运算符要可能更耗时,同时单目运算符也有为运算符的功能,在后面位运算符中详细解释

我们在使用中,了解能作为逻辑就行了,不要使用&|,而使用双目运算符作为逻辑运算符

短路

A||B,若A为真那么式子肯定为真,所以出现了短路的情况,根据前面的语句已经得到了式子的结果,Java将不再运行后面的逻辑语句。

特别注意:逻辑运算符操作的都是boolean类型的变量。而且结果也是boolean类型

5、按位运算符:

& :按位与

| :按位或
:按位非

^ :按位异或

我们将布尔类型作为一种单比特值对待,所以它多少有些独特。我们可对它执行按位“与”、“或”和按位”异或“运算,但不能按位”非“(大概是为了避免与逻辑NOT混淆)。对于布尔值,按位操作符具有与逻辑操作符相同的效果,只是不会中途”短路“。

6、移位操作符

只能处理整数类型

<< :左移 在右边补 0 ,在没有数据溢出的前提下,左移 N 位,也是乘以 2 的N次方

>> :右移 在左边补符号位。 右移 N 位,也是除以 2 的N次方。当除不尽的情况,实际得到的整数总是比实际算术计算的值略小

>>>:Java新增,无符号右移 在左边补0

移位还能与等号连用>>>= 、>>= 、<<=

7、三元操作符if-else

boolean ? value0 : value1

boolean为true结果为value0,

为false则结果为value1

8、字符串操作符+ +=

是Java的重载操作符(操作符重载)

连接不同字符串,结果为字符串

如果一个表达式以字符串起头,那么后面所有的操作数都必须为字符串型。后面的语句加了括号的话,仍从 数值加号 开始,遇到字符串再更换为字符串

例子建议看一下

 System.out.println("hell"+2+2+2);//hell222
System.out.println(2+2+2+"hell");//6hell
System.out.println("hell"+2+2-2);//错误
System.out.println("hell"+2+ (2-2) );//hell20

9、常见错误

把双等号漏了一个变成了赋值,出错率很高!!

== -> =

10、类型转换操作符

类型转换(cast)。适当情况有自动转换(向大规模转换)

使用小括号 (类型)

可以对常量和变量进行类型转换,

在java中是一种比较安全的操作。

窄化转换(装换为容纳信息更小的类型),会面临信息丢失,此时编译器会强制转换扩展转换则不必显式进行类型转换,因为不会有信息丢失。

11、截尾和舍入

在进行数据转换的时候,若有窄化操作,则会直接去尾

如 1.8(float) -> int 结果是 1

若要使用舍入,可以通过java.lang.Math.round()

12、Java没有sizeof()

Java虚拟机的特性使得Java开发不需要考虑跨平台,不需要sizeof()方法

《Java基础复习》—规范与基础的更多相关文章

  1. Java递归与基础复习

    Day01-基础复习,递归 1.递归 定义:指在当前方法内调用自己,即函数内部调用本函数 分类: 直接递归和间接递归 直接递归成为方法自身调用自己 间接递归可以A方法调用B方法,B方法调用C方法,C方 ...

  2. Java基础复习笔记系列 九 网络编程

    Java基础复习笔记系列之 网络编程 学习资料参考: 1.http://www.icoolxue.com/ 2. 1.网络编程的基础概念. TCP/IP协议:Socket编程:IP地址. 中国和美国之 ...

  3. Java基础复习笔记系列 八 多线程编程

    Java基础复习笔记系列之 多线程编程 参考地址: http://blog.csdn.net/xuweilinjijis/article/details/8878649 今天的故事,让我们从上面这个图 ...

  4. Java基础复习笔记系列 七 IO操作

    Java基础复习笔记系列之 IO操作 我们说的出入,都是站在程序的角度来说的.FileInputStream是读入数据.?????? 1.流是什么东西? 这章的理解的关键是:形象思维.一个管道插入了一 ...

  5. Java基础复习笔记系列 五 常用类

    Java基础复习笔记系列之 常用类 1.String类介绍. 首先看类所属的包:java.lang.String类. 再看它的构造方法: 2. String s1 = “hello”: String ...

  6. Java基础复习笔记系列 四 数组

    Java基础复习笔记系列之 数组 1.数组初步介绍? Java中的数组是引用类型,不可以直接分配在栈上.不同于C(在Java中,除了基础数据类型外,所有的类型都是引用类型.) Java中的数组在申明时 ...

  7. Java基础复习笔记基本排序算法

    Java基础复习笔记基本排序算法 1. 排序 排序是一个历来都是很多算法家热衷的领域,到现在还有很多数学家兼计算机专家还在研究.而排序是计算机程序开发中常用的一种操作.为何需要排序呢.我们在所有的系统 ...

  8. Java网络编程学习A轮_01_目标与基础复习

    A. A轮目标 复习网络编程基础知识,重点学习下TCP三次握手四次挥手,以及可能引发的异常情况. 回顾 Socket 编程,好多年没写(chao)过相关代码了. 重学 NIO,以前学的基本忘光了,毕竟 ...

  9. 《Java基础复习》-控制执行流程

    最近任务太多了,肝哭我了,boom 参考书目:Thinking in Java <Java基础复习>-控制执行流程 Java使用了C的所有流程控制语句 涉及关键字:if-else.whil ...

  10. 《Java基础复习》—常识与入门

    突然发现自己Java基础的底子不到位,复习! 所记知识会发布在CSDN与博客网站jirath.cn <Java基础复习>-常识与入门 一.Java语言的知识体系图 分为三部分 编程语言核心 ...

随机推荐

  1. 点云3d检测模型pointpillar

    PointPillars 一个来自工业界的模型.https://arxiv.org/abs/1812.05784 3D目标检测通常做法 3d卷积 投影到前平面 在bird-view上操作 处理思路依然 ...

  2. java算法--链表

    虽然这个文章看着很多,但是大多是对于细节的讲解,如果想要快速了解,可以直接观看末尾代码.上面的代码内容都是来自于文章末尾的代码. 很重要的算法,也是比较简单的算法. 但是在java中,因为不存在c和c ...

  3. 编译putty 源码去掉 Are you sure you want to close this session? 提示

    0, 为什么要编译 putty ?在关闭窗口的时候,会弹出一个 Are you sure you want to close this session?要把这个去掉.当然也可以用 OD 之类的来修改. ...

  4. C++类的多态

    目录 一.静态多态 二.动态多态 三.虚函数 四.纯虚函数 五.C++ 接口(抽象类) 六.应用经验 七.版权声明 多态按字面的意思就是多种形态.当类之间存在层次结构,并且类之间是通过继承关联时,就可 ...

  5. vue基础回顾 router

    vue-router 1. 底层原理 hash 或者h5 histroy(有兼容性) 2. 使用的时候Vue需要引入VueRouter Vue.use(VueRouter) //VueRouter 底 ...

  6. ASP.NET 开源导入导出库Magicodes.IE 完成Excel图片导入导出

    Magicodes.IE Excel图片导入导出 为了更好的根据实际功能来迭代,从2.2的里程碑规划开始,我们将结合社区的建议和意见来进行迭代,您可以点此链接来提交您的意见和建议: https://g ...

  7. IDEA启动项目报错:Cannot open URL.Please check this URL is correct

    IDEA启动项目报错:Cannot open URL.Please check this URL is correct 问题:IDEA启动SSM项目,使用的Tomcat,报错 Cannot open ...

  8. 聊聊OkHttp实现WebSocket细节,包括鉴权和长连接保活及其原理!

    一.序 OkHttp 应该算是 Android 中使用最广泛的网络库了,我们通常会利用它来实现 HTTP 请求,但是实际上它还可以支持 WebSocket,并且使用起来还非常的便捷. 那本文就来聊聊, ...

  9. nested exception is java.lang.StackOverflowError解析

    背景介绍: 项目是微服务的,使用docker容器,使用jenkins部署.测试环境有个公共服务一直以来都能正常发布,突然有一天不行了,经常发布失败,然后多发布几次就好了. 报错如下: 是栈溢出了,一般 ...

  10. 在linux系统中安装LANMP

    1.安装LANMP步骤 root@kali:~# wget http://dl.wdlinux.cn/files/lanmp_v3.tar.gz #下载 root@kali:~# tar xzvf l ...