目录
注释
优点及作用
分类
单行注释
多行注释
文档注释
标识符、关键字
定义
注意
数据类型
语言分类
Java数据类型分类
基本类型
引用类型
类型转换
原因
注意
变量
定义
作用域
注意事项
命名规范
常量
定义
运算符
分类
算术运算符
赋值运算符
、<、<=、>=、==、!=instanceof">关系运算符:>、<、<=、>=、==、!=instanceof
逻辑运算符
位运算符
条件运算符
扩展赋值运算符
面试题
包机制
作用
语法格式
import关键字
作用
格式
注意
JavaDoc
作用
参数信息
生成API文档
注释
优点及作用
-
书写注释可以养成好的习惯
-
对代码进行解释,便于观看代码者理解
-
在程序中,尤其是复杂的程序中,适当地加入注释可以增加程序的可读性,有利于程序的修改、调试和交流。
-
注释的内容在程序编译的时候会被忽视,不会产生目标代码,注释的部分不会对程序的执行结果产生任何影响。
-
注意事项:多行和文档注释都不能嵌套使用。
分类
-
单行注释
-
多行注释
-
文档注释
单行注释
书写注释可以养成好的习惯
对代码进行解释,便于观看代码者理解
在程序中,尤其是复杂的程序中,适当地加入注释可以增加程序的可读性,有利于程序的修改、调试和交流。
注释的内容在程序编译的时候会被忽视,不会产生目标代码,注释的部分不会对程序的执行结果产生任何影响。
注意事项:多行和文档注释都不能嵌套使用。
-
单行注释
-
多行注释
-
文档注释
单行注释
语法
-
//
//我是一行注释
作用区域
-
“//”标识后的单行区域
多行注释
语法
作用区域
-
标识中的多行文本
文档注释
语法
作用区域
-
标识中的多行文本
区别
-
专门为了用javadoc工具自动生成文档而写的注释,它是一种带有特殊功能的注释
-
与一般注释的最大区别在于起始符号是/*而不是/或//
-
文档注释只负责描述类(class)、接口(interface)、方法(method)、构造器(constructor)、成员字段(field)
-
文档注释必须写在类、接口、方法、构造器、成员字段前面
-
文档注释中内容尤描述部分与标记部分组成,标记部分跟在描述部分之后,且前面必须有一个空行间隔
常见标记
-
@author 作者,没有特殊格式要求,名字或组织名称都可以
-
@version 软件版本号(注意不是java版本号),没有特殊格式要求
-
@param 方法参数,格式为: @param 参数名称 参数描述
-
可以在参数描述中说明参数的类型
-
可以在参数名称和参数描述之间添加额外的空格来对齐
-
破折号或其他标点符号不能出现在参数描述之外的地方
-
-
@return 方法返回值,格式为: @return 返回值描述 ,如果方法没有返回值就不要写@return
-
@deprecated 应该告诉用户这个API被哪个新方法替代了,随后用 @see 标记或 {@link} 标记指向新API
-
@throws (或 @exception )包含方法显式抛出的检查异常(Checked Exception),至于非显示抛出的其他异常(Unchecked Exception),除非特别有必要,否则就别写了。一个原则就是,只记录可控的问题,对于不可控的或不可预测的问题,不要往上面写。
-
自定义标记
标识符、关键字
定义
-
Java所有组成部分都需要名字,类名、变量名和方法名都被成为标识符
-
Java所有组成部分都需要名字,类名、变量名和方法名都被成为标识符
注意
-
所有标识符都必须以字母(A-Z或a-z)、美元符($)、下划线(_)开头
-
首字母之后可以是字母(A-Z或a-z)、美元符($)、下划线(_)或者数字的任意组合
-
关键字不可用于类名、变量名及方法名等
-
尽量保持良好的命名规范,标识符对于字母的大小写极为敏感
-
标识符可以使用中文命名,但通常不建议,也不建议使用拼音。
数据类型
语言分类
-
强类型语言
-
Java属于强类型语言,要求变量的使用要严格符合规定,所有变量都必须先定义在使用
-
安全性高,速度慢
-
弱类型语言
-
对于变量的要求可以不符合规范
-
安全性低,速度快
Java数据类型分类
所有标识符都必须以字母(A-Z或a-z)、美元符($)、下划线(_)开头
首字母之后可以是字母(A-Z或a-z)、美元符($)、下划线(_)或者数字的任意组合
关键字不可用于类名、变量名及方法名等
尽量保持良好的命名规范,标识符对于字母的大小写极为敏感
标识符可以使用中文命名,但通常不建议,也不建议使用拼音。
语言分类
-
强类型语言
-
Java属于强类型语言,要求变量的使用要严格符合规定,所有变量都必须先定义在使用
-
安全性高,速度慢
-
弱类型语言
-
对于变量的要求可以不符合规范
-
安全性低,速度快
Java数据类型分类
强类型语言
-
Java属于强类型语言,要求变量的使用要严格符合规定,所有变量都必须先定义在使用
-
安全性高,速度慢
弱类型语言
-
对于变量的要求可以不符合规范
-
安全性低,速度快
基本类型
数值类型
-
整数类型
-
byte:占1个字节范围
-
short:占2个字节范围
-
int:占4个字节范围 //最常用
-
long:占8个字节范围 //Long类型要在数字后加"L",用来区分类型
-
-
浮点类型
-
完全避免使用浮点数进行比较
-
float:占4个字节 //Float类型要在数字后加"F",用来区分类型
-
double:占8个字节
-
-
字符类型
-
char:占2个字节
-
-
字符串类型
-
String:不是关键字,而是类
-
布尔类型
-
boolean:占1个“位”
数据储存单位
-
位(bit):计算机内部储存最小的单位,11001100是一个八位二进制数,
-
字节(byte):是计算机中数据处理的基本单位,习惯上用“B”来表示
-
字符:计算机中使用的字母、数字、字和符号,本质还是数字
-
转换规则
-
1bit表示一“位”
-
1byte表示一“字节” 1B=1b
-
1024B = 1KB
-
1024KB = 1MB
-
1024Mb = 1GB
-
1024GB = 1TB
-
引用类型
-
类
-
接口
-
数组
类型转换
原因
-
由于Java是强类型语言,所以在某些运算中需要用到类型转换
-
而在运算中,不同类型的数据要先转换为相同类型,在进行运算
类
接口
数组
原因
-
由于Java是强类型语言,所以在某些运算中需要用到类型转换
-
而在运算中,不同类型的数据要先转换为相同类型,在进行运算
由于Java是强类型语言,所以在某些运算中需要用到类型转换
而在运算中,不同类型的数据要先转换为相同类型,在进行运算
-
而从高到低转换,成为强制类型转换
-
格式:(类型)变量名
-
-
而自动类型转换则是从低到高转换
-
不能对布尔类型进行转换
-
不能将对象类型转换为不相干的类型
-
在高容量向低容量进行转换时,要强制转换
-
转换时要注意内存溢出或精度问题
-
溢出问题解决:
-
先将运算数中的一个数先进行转换,运算结果则自动转换
-
变量
定义
-
变量就是可以变化的量
-
Java是一种强类型语言,每一个变量都必须声明其类型
-
Java变量是程序中最基本的储存单元,其要素包括变量名、变量类型、作用域
变量就是可以变化的量
Java是一种强类型语言,每一个变量都必须声明其类型
Java变量是程序中最基本的储存单元,其要素包括变量名、变量类型、作用域
作用域
-
类变量:声明在类中,方法体之外,但必须声明为 static 类型,也叫静态变量
-
实例变量:定义在类中,方法体之外的变量。这种变量从属于对象,在创建对象的时候实例化。成员变量可以被类中方法、构造方法和特定类的语句块访问
-
若实例变量没有定义初始值,则为默认值
-
数值型变量的默认值是0,布尔型变量的默认值是false,引用类型变量的默认值是null
-
局部变量:在方法、构造方法或者语句块中定义的变量被称为局部变量。必须变量声明和初始化,且都是在方法中,方法结束后,变量就会自动销毁
类变量:声明在类中,方法体之外,但必须声明为 static 类型,也叫静态变量
实例变量:定义在类中,方法体之外的变量。这种变量从属于对象,在创建对象的时候实例化。成员变量可以被类中方法、构造方法和特定类的语句块访问
-
若实例变量没有定义初始值,则为默认值
-
数值型变量的默认值是0,布尔型变量的默认值是false,引用类型变量的默认值是null
局部变量:在方法、构造方法或者语句块中定义的变量被称为局部变量。必须变量声明和初始化,且都是在方法中,方法结束后,变量就会自动销毁
注意事项
-
每个变量都有类型,类型可以是基本类型也可以是引用类型
-
变量名必须是合法的标识符
-
变量声明是一个完整的语句,所以每一条声明变量都需要以“;”结尾
-
不建议在一条声明语句中定义多个变量
命名规范
每个变量都有类型,类型可以是基本类型也可以是引用类型
变量名必须是合法的标识符
变量声明是一个完整的语句,所以每一条声明变量都需要以“;”结尾
不建议在一条声明语句中定义多个变量
常量
定义
-
初始化之后就不能在改变值,且不会变动
-
可以理解为一种特殊的变量,值被设定后,在程序运行过程中不允许改变
-
需要使用final关键字修饰(修饰符不存在先后顺序)
-
常量名一般使用大写字母
初始化之后就不能在改变值,且不会变动
可以理解为一种特殊的变量,值被设定后,在程序运行过程中不允许改变
需要使用final关键字修饰(修饰符不存在先后顺序)
常量名一般使用大写字母
运算符
分类
算术运算符
-
+
-
-
-
*
-
/
-
%
-
++
-
__
-
前缀自增自减法(++a,--a): 先进行自增或者自减运算,再进行表达式运算
-
后缀自增自减法(a++,a--): 先进行表达式运算,再进行自增或者自减运算
-
+
-
-
-
*
-
/
-
%
-
++
-
__
-
前缀自增自减法(++a,--a): 先进行自增或者自减运算,再进行表达式运算
-
后缀自增自减法(a++,a--): 先进行表达式运算,再进行自增或者自减运算
-
-
任何整数类型相运算时,只要有一个Long类型,则结果为Long,若没有Long,则都为Int
赋值运算符
-
=:将右边的操作数赋给左边变量或或常量等
关系运算符:>、<、<=、>=、==、!=instanceof
逻辑运算符
-
&&:两个皆为真,结果才为真
-
短路运算:若前为假,则其后不再执行
-
||:两个其一为真,结果即为真
-
!:若真则假,若假则真
位运算符
=:将右边的操作数赋给左边变量或或常量等
逻辑运算符
-
&&:两个皆为真,结果才为真
-
短路运算:若前为假,则其后不再执行
-
||:两个其一为真,结果即为真
-
!:若真则假,若假则真
位运算符
&&:两个皆为真,结果才为真
-
短路运算:若前为假,则其后不再执行
||:两个其一为真,结果即为真
!:若真则假,若假则真
-
&:上下位比较,若两个都为1,才为1,否则为0
-
|:上下位比较, 若两个都为0,才为0,否则为1
-
^:上下位比较,若两个相同为0,否则为1
-
~:每一位若0则1,若1则0
-
<<:相当于*2 效率极高!!!!!!!
-
">>":相当于/2 效率极高!!!!!!!
-
">>>":按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充。
-
面试题:2*8怎么最快:2<<3(2的二进制向左位移三次,相当于三次2乘2)
-
条件运算符
-
"? :" :也被称为三元运算符(必须掌握)
"? :" :也被称为三元运算符(必须掌握)
三元运算符优点
-
使代码精简且便于理解
x ? y :z //若x为true,则结果为y,否则为z
扩展赋值运算符
*=:a=a*b
+=:a=a+b
-=:a=a-b
/=:a=a/b
面试题
-
字符串连接位置的变化对输出语句中数字运算的影响
int a = 10;
int b = 20;
System.out.println(""+a+b);---->1020
System.out.println(a+b+"");---->30
//""相当于字符串,在字符创拼接中,如果字符串在前,后面内容会拼接
//字符串在后面,前面的依旧进行运算
-
字符串连接位置的变化对输出语句中数字运算的影响
int a = 10;
int b = 20;
System.out.println(""+a+b);---->1020
System.out.println(a+b+"");---->30
//""相当于字符串,在字符创拼接中,如果字符串在前,后面内容会拼接
//字符串在后面,前面的依旧进行运算
包机制
作用
-
可以更好地组织类,用于区别类名的命名空间,可以有效地防止命名冲突
-
把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用
-
采取了树形目录的存储方式,同一个包中的类名是不同的,不同包中的类名是可以相同的,同时调用两个不同包中同名的类时,应该加上包名以区分,
-
包也限定了访问权限,拥有包访问权限的类,才可以调用某个包中的类
-
更容易实现访问控制,并且让定位相关类更加简单
语法格式
packge pkg1[.pkg2[.pkg3…]];
import关键字
作用
-
想要使用某一个包中的类时,需要使用import来明确的导入这个类所在的包
格式
import package1[.package2…].(classname|*);
注意
-
在创建包时,一般利用公司域名倒置作为包名
-
在调用本包中的一个类时,不用导包
-
packge语句应位于类的最上方
-
import语句应为与packge语句之后,类声明之前
-
将类放在包中,包名成为类名的一部分
-
且包名应与相应的字节码所在的目录结构相吻合
-
想要调用一个包中所有类时,可以使用通配符“ * ”,来调用包中的所有类
-
可以更好地组织类,用于区别类名的命名空间,可以有效地防止命名冲突
-
把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用
-
采取了树形目录的存储方式,同一个包中的类名是不同的,不同包中的类名是可以相同的,同时调用两个不同包中同名的类时,应该加上包名以区分,
-
包也限定了访问权限,拥有包访问权限的类,才可以调用某个包中的类
-
更容易实现访问控制,并且让定位相关类更加简单
语法格式
packge pkg1[.pkg2[.pkg3…]];
import关键字
作用
-
想要使用某一个包中的类时,需要使用import来明确的导入这个类所在的包
格式
import package1[.package2…].(classname|*);
注意
-
在创建包时,一般利用公司域名倒置作为包名
-
在调用本包中的一个类时,不用导包
-
packge语句应位于类的最上方
-
import语句应为与packge语句之后,类声明之前
-
将类放在包中,包名成为类名的一部分
-
且包名应与相应的字节码所在的目录结构相吻合
-
想要调用一个包中所有类时,可以使用通配符“ * ”,来调用包中的所有类
-
想要使用某一个包中的类时,需要使用import来明确的导入这个类所在的包
格式
import package1[.package2…].(classname|*);
注意
-
在创建包时,一般利用公司域名倒置作为包名
-
在调用本包中的一个类时,不用导包
-
packge语句应位于类的最上方
-
import语句应为与packge语句之后,类声明之前
-
将类放在包中,包名成为类名的一部分
-
且包名应与相应的字节码所在的目录结构相吻合
-
想要调用一个包中所有类时,可以使用通配符“ * ”,来调用包中的所有类
在创建包时,一般利用公司域名倒置作为包名
在调用本包中的一个类时,不用导包
packge语句应位于类的最上方
import语句应为与packge语句之后,类声明之前
将类放在包中,包名成为类名的一部分
且包名应与相应的字节码所在的目录结构相吻合
想要调用一个包中所有类时,可以使用通配符“ * ”,来调用包中的所有类
JavaDoc
作用
-
JavaDoc命令用作生成自己的API文档
-
加在什么上就是什么的注释
参数信息
-
@author-----作者名
-
@version----版本号
-
@since-------指明需要最早使用的jdk版本
-
@param-----参数名
-
@return-----返回值情况
-
@throws----异常抛出情况
JavaDoc命令用作生成自己的API文档
加在什么上就是什么的注释
-
@author-----作者名
-
@version----版本号
-
@since-------指明需要最早使用的jdk版本
-
@param-----参数名
-
@return-----返回值情况
-
@throws----异常抛出情况
生成API文档
-
在命令行使用javadoc命令
-
使用idea工具生成
在命令行使用javadoc命令
使用idea工具生成



