注释


  • [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]