注释
- [x] 平时我们编写代码,在代码量比较少时,我们还可以看懂自己写的,但是当项目结构一旦复杂起来,我们就需要用到注释了。
- [x] 注释并不会被执行,是给我们写代码的人看的
- [x] 书写注释是一种非常好的习惯
- [x] Java中的注释有三种:
单行注释 //单行注释,只注释当前行 多行注释 /* 多行注释 多行注释 多行注释 ...... */ 文档注释 /** * javadoc注释 * javadoc注释 * javadoc注释 **/
标识符
Java所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。
标识符的命名规则:
- [ ] 所有的标识符都应该以字母(A-Z或者a-z),美元符($),或者下划线(_)开始
- [ ] 首字母之后可以是字母(A-Z或者a-z),美元符($),下划线(_)或数字的任何字符组合
- [ ] 不能使用关键字作为变量名或方法名
- [ ] 标识符是大小写敏感的
- [ ] 合法标识符举例:age、$salary、_value、__1_value
- [ ] 非法标识符举例:123abc、-salary、#abc
- [ ] 可以使用中文命名,但是一般不建议这样去使用,也不建议使用拼音
标识符的命名规范:
- [ ] 最好见名知意
- [ ] 遵守驼峰命名方式:systemService、userService、customerService
- [ ] 类名、接口名:首字母大写,后面每个单词首字母大写:GoodMan
- [ ] 变量名、方法名:首字母小写,后面每个单词首字母大写:lastName
- [ ] 常量名:全部大写:MAX_VALUE
关键字
abstract | assert | boolean | break | byte |
case | catch | char | class | const |
continue | default | do | double | else |
enum | extends | final | finally | float |
for | goto | if | implements | import |
instanceof | int | interface | long | native |
new | package | private | protected | public |
return | strictfp | short | static | super |
switch | synchronized | this | throw | throws |
transient | try | void | volatile | while |
关键字 | 含义 |
abstract | 表明类或者成员方法具有抽象属性 |
assert | 断言,用来进行程序调试 |
boolean | 基本数据类型之一,声明布尔类型的关键字 |
break | 提前跳出一个块 |
byte | 基本数据类型之一,字节类型 |
case | 用在switch语句之中,表示其中的一个分支 |
catch | 用在异常处理中,用来捕捉异常 |
char | 基本数据类型之一,字符类型 |
class | 声明一个类 |
const | 保留关键字,没有具体含义 |
continue | 回到一个块的开始处 |
default | 默认,例如,用在switch语句中,表明一个默认的分支。Java8 中也作用于声明接口函数的默认实现 |
do | 用在do-while循环结构中 |
double | 基本数据类型之一,双精度浮点数类型 |
else | 用在条件语句中,表明当条件不成立时的分支 |
enum | 枚举 |
extends | 表明一个类型是另一个类型的子类型。对于类,可以是另一个类或者抽象类;对于接口,可以是另一个接口 |
final | 用来说明最终属性,表明一个类不能派生出子类,或者成员方法不能被覆盖,或者成员域的值不能被改变,用来定义常量 |
finally | 用于处理异常情况,用来声明一个基本肯定会被执行到的语句块 |
float | 基本数据类型之一,单精度浮点数类型 |
for | 一种循环结构的引导词 |
goto | 保留关键字,没有具体含义 |
if | 条件语句的引导词 |
implements | 表明一个类实现了给定的接口 |
import | 表明要访问指定的类或包 |
instanceof | 用来测试一个对象是否是指定类型的实例对象 |
int | 基本数据类型之一,整数类型 |
interface | 接口 |
long | 基本数据类型之一,长整数类型 |
native | 用来声明一个方法是由与计算机相关的语言(如C/C++/FORTRAN语言)实现的 |
new | 用来创建新实例对象 |
package | 包 |
private | 一种访问控制方式:私用模式 |
protected | 一种访问控制方式:保护模式 |
public | 一种访问控制方式:共用模式 |
return | 从成员方法中返回数据 |
short | 基本数据类型之一,短整数类型 |
static | 表明具有静态属性 |
strictfp | 用来声明FP_strict(单精度或双精度浮点数)表达式遵循[IEEE 754](https://baike.baidu.com/item/IEEE 754)算术规范 |
super | 表明当前对象的父类型的引用或者父类型的构造方法 |
switch | 分支语句结构的引导词 |
synchronized | 表明一段代码需要同步执行 |
this | 指向当前实例对象的引用 |
throw | 抛出一个异常 |
throws | 声明在当前定义的成员方法中所有需要抛出的异常 |
transient | 声明不用序列化的成员域 |
try | 尝试一个可能抛出异常的程序块 |
void | 声明当前成员方法没有返回值 |
volatile | 表明两个或者多个变量必须同步地发生变化 |
while | 用在循环结构中 |
数据类型
强类型语言:要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用
Java的数据类型分为两大类
- [ ] 基本数据类型(primitive type)
- [ ] 引用数据类型(reference type):类、接口、数组
基本数据类型 | 占用空间大小 | 字节范围 | 举例 |
byte | 1 | -128 ~ 127 | byte num = 10; |
short | 2 | -32768 ~ 32767 | short num = 10; |
int | 4 | -2147483648 ~ 2147483647 | int num = 10; |
long | 8 | long num = 10L; | |
float | 4 | -2147483648 ~ 2147483647 | float num = 3.14F; |
double | 8 | double num =3,14; | |
char | 2 | 0 ~ 65535 | char name = '国'; |
boolean | 1 | true、false | boolean flag = true; |
#什么是字节
位(bit):是计算机内部数据存储的最小单位,11001100是一个八位二进制
字节(byte):是计算机中数据处理的基本单位,习惯上用大写B来表示
1B(byte,字节) = 8bit(位)
字符:是指计算机中使用的字母、数字、字和符号
1bit表示1位
1Byte表示一个字节 1B = 8b
1024B = 1KB
1024KB = 1M
1024M = 1G
二进制【以0b开始】 | 十进制 | 八进制【以0开始】 | 十六进制【以0x开始】 |
int i = 0b10; | int i = 10; | int i = 010; | int i = 0x10; |
转义字符出现在特殊字符之前,会将特俗字符转换成普通字符
\n | 换行符 |
\t | 制表符 |
\' | 普通的单引号 |
\\ | 普通的反斜杠 |
\" | 普通的双引号 |
类型转换
- [ ] 由于Java是强类型语言,所以要进行有些运算的时候,需要用到类型转换
低 --------------------------------------------------> 高
byte,short,char -> int -> long -> float -> double
- [ ] 运算中,不同类型的数据先转化为同一类型,然后进行运算
- [ ] 强制类型转换
大容量转换成小容量,需要进行强制类型转换,强制类型转换需要加”强制类型转换符“。
加上强制类型转换符之后编译通过了,但是运行阶段可能损失精度。
所以强制类型转换符谨慎使用,因为损失精度之后可能损失很严重。 - [ ] 自动类型转换
小容量可以自动转换成大容量,称为自动类型转换机制
#注意点
1.不能对布尔值进行转换
2.不能把对象类型转换为不相干的类型
3.再把高容量换到低容量的时候,强制转换
4.转换的时候可能存在内存溢出,或者精度问题
变量
变量是什么:就是可以变化的量!
Java是一种强类型语言,每个变量都必须声明其类型。
Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。
type varName [= value][{,varName[= value]}];
//数据类型 变量名 = 值; 可以使用逗号隔开来声明多个同类型变量。
#注意事项
1.每个变量都有类型,类型可以是基本类型,也可以是引用类型。
2.变量名必须是合法的标识符。
3.变量声明是一条完整的语句,因此每一个声明都必须以分号结束
变量作用域
变量作用域:其实描述的就是变量的有效范围。在什么范围之内是可以被访问的,只要出了这个范围该变量就无法访问了。
- [ ] 类变量:需要有staitc关键字。在类里面,方法外面。如果不自行初始化,输出这个类型的默认值
- [ ] 实例变量:在类里面,方法外面。如果不自行初始化,输出这个类型的默认值
- [ ] 局部变量:在方法里面
public class Variable{
static int allClicks = 0; //类变量
String str = "hello world"; //实例变量
public void method(){
int i = 0; //局部变量
//变量类型(引用类型) 变量名字 = new Variable();
Variable variable = new Variable();
System.out.println(variable.str);
System,out.println(allClicks);
}
}
常量
常量(Constant):初始化(initialize)后不能再改变值!不会变动的值。
所谓常量可以理解成一种特殊的变量,它的值被设定后,在程序运行过程中不允许被改变。
final 数据类型 常量名 = 值;
final double PI = 3.14;
常量名一般使用大写字符。
运算符
算术运算符 | + , - , * , / , % , ++ , -- |
赋值运算符 | = |
关系运算符 | > , < , >= , <= , == , != , instanceof |
逻辑运算符 | && , || , ! |
位运算符 | & , | , ^ , ~ , >>(右移/2) , <<(左移*2) , >>> |
条件运算符 | ?: |
扩展赋值运算符 | += , -= , *= , /= |
++运算符可以出现在变量前,也可以出现在变量后,无论是变量前还是变量后,只要++运算结束,该变量中的值一定会自加1
++运算符出现在变量后。规则:先做赋值运算,再对变量中保存的值进行自加1。
++运算符出现在变量前。规则:先进行自加1运算,然后再进行赋值操作。
&逻辑与(两边的算子都是true,结果才是true)
|逻辑或(两边的算子只要有一个是true,结果就是true)
!逻辑非(取反,!false就是true,!true就是false,这是一个单目运算符)
^逻辑异或(两边的算子只要不一样,结果就是true)
&&短路与
||短路或
#注意
1.逻辑运算符要求两边的算子都是布尔类型,并且逻辑运算符最终的运算结果也是一个布尔类型
2.短路与和逻辑与最终的运算结果是相同的,只不过短路与存在短路现象
3.短路或和逻辑或最终的运算结果是相同的,只不过短路或存在短路现象
+运算符在java语言当中有两个作用:
1.加法运算,求和
当“+”运算符两边的数据都是数字的话,一定是进行加法运算。
数字 + 数字 ---> 数字【求和】
2.字符串的连接运算
当“+”运算符两边的数据只要有一个数据是字符串,一定会进行字符串连接运算。并且连接运算之后的结果还是一个字符串类型
数字 + “字符串” ---> “字符串”【字符串拼接】
在一个表达式出现多个“+”,在没有添加小括号的前提之下,遵循自左向右的顺序依次运算。
public static void main(String[] args){
int a = 10;
int b = 20;
System.out.println("" + a + b); // 1020
System.out.println(a + b + ""); // 30
}
#三元运算符/三目运算符/条件运算符
#语法规则:
布尔表达式?表达式1:表达式2;
#三目运算符的执行原理
1.当布尔表达式的结果是true的时候,选择表达式1作为整个表达式的执行结果
2.当布尔表达式的结果是false的时候,选择表达式2作为整个表达式的执行结果
boolean sex = false;
char c = sex?'男':'女';
System.out.println(c); //可以,女
char c = sex?"男":'女'; //编译错误,类型不兼容,"男"是字符串,'女'是字符
System.out.println(sex?"男":'女'); //可以,因为println()可以输出字符串或字符
包机制
- [ ] 为了更好地组织类,Java提供了包机制,用于区别类名的命名空间。
- [ ] 包语句的语法格式为:
package pkg1[.pkg2[.pkg3...]];
- [ ] 一般利用公司域名倒置作为包名;
- [ ] 为了能够使用某一包的成员,我们需要在Java程序中明确导入该包。使用"import"语句可完成此功能
import package1[.package2].(classname|*);
JavaDoc
javadoc命令是用来生成自己API文档的
@author | 作者 |
@version | 版本号 |
@since | 指明需要最早使用的jdk版本 |
@param | 参数名 |
@return | 返回值情况 |
@throws | 异常抛出情况 |
javadoc -encoding UTF-8 -charset UTF-8 java文件名[Doc.java]
















