从头开始学Java—Java基础语法

一、注释、标识符、关键字

注释

在上课的时候,所有教语言的老师都会要求我们写注释,并告诉我们,书写注释是一个非常好的习惯*,注释虽然对运行代码没有帮助,但是他能帮助别人看懂我的代码。何止别人,我在课设答辩的时候,也都是靠注释保命的。

Java中的注释有三种:

  1. 单行注释

    //这是单行注释符号,这里写注释
    这里写代码
    
  2. 多行注释

    /*
    这是多行注释符号
    可以注释一段文字
    */
    这里写代码
    
  3. 文档注释

    /**
    *这是JavaDoc注释即文档注释
    *每一行注释前都有一个*
    *以“/**”开头
    * 这个注释是有功能的,可以添加一些描述
    * @Description hello world
    * @Author Jerry
    */
    

标识符

  • Java所有的组成部分都需要名字。类名,变量名以及方法名都称之为标识符。

  • 标识符的命名规则:由字母(A-Z或a-z),数字,下划线(_),美元符($)组成,但数字不能开头。

  • 标识符不能是java的关键字和保留字,但可以包含关键字和保留字,不能包含空格。

  • 标识符只能包含美元符($),不能包含@,#等其它字符。

  • 标识符区分大小写。

  • Java 9规定:不允许单独使用下划线作为分隔符。

  • Java 的关键字加上goto const true false nulll 一共有53个关键字和保留字,都不能作为Java的标识符。

  • 合法标识符举例:aBig,Abc,_1jerry,_1_Jerry,$jerry……

  • 非法标识符举例:123,1abc,#1j,@jerry……

关键字

Java关键字是对Java编译器有特殊含义的字符串,用来表示一种数据类型,或者表示程序的结构等,关键字不能用作变量名、方法名、类名、包名和参数。

关键字 含义
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语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。

byte:

  • byte 数据类型是8位、有符号的,以二进制补码表示的整数;
  • 最小值是 -128(-2^7);最大值是 127(2^7-1);默认值是 0

short:

  • short 数据类型是 16 位、有符号的以二进制补码表示的整数
  • 最小值是 -32768(-2^15);最大值是 32767(2^15 - 1);默认值是 0

int:

  • int 数据类型是32位、有符号的以二进制补码表示的整数;
  • 最小值是 -2,147,483,648(-2^31)
  • 最大值是 2,147,483,647(2^31 - 1)
  • 一般地整型变量默认为 int 类型;
  • 默认值是 0

long:

  • long 数据类型是 64 位、有符号的以二进制补码表示的整数;
  • 最小值是 -9,223,372,036,854,775,808(-2^63);最大值是 9,223,372,036,854,775,807(2^63 -1);默认值是 0L
  • 这种类型主要使用在需要比较大整数的系统上;

float:

  • float 数据类型是单精度、32位、符合IEEE 754标准的浮点数;
  • float 在储存大型浮点数组的时候可节省内存空间;
  • 默认值是 0.0f
  • 浮点数不能用来表示精确的值,如货币;

double:

  • double 数据类型是双精度、64 位、符合IEEE 754标准的浮点数;
  • 浮点数的默认类型为double类型;
  • double类型同样不能表示精确的值,如货币;
  • 默认值是 0.0d

boolean:

  • boolean数据类型表示一位的信息;
  • 只有两个取值:true 和 false;
  • 这种类型只作为一种标志来记录 true/false 情况;
  • 默认值是 false

char:

  • char类型是一个单一的 16 位 Unicode 字符;
  • 最小值是 \u0000(即为 0);
  • 最大值是 \uffff(即为65、535);
  • char 数据类型可以储存任何字符;

三、类型转换

整型、实型(常量)、字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算。

自动类型转换从低级到高级。强制类型转换从高级到低级。

低  ------------------------------------>  高

byte,short,char—> int —> long—> float —> double 

	1. 不能对布尔值进行转换
	2. 不能把对象类型转换成不相干的类型,比如说你不能把🐖转换成人            
	3.在把高容量转换到低容量数据类型时,要强制转换            
	4.转换时可能存在数据溢出等问题`

四、变量、常量

变量

变量,就是可以变化的量。Java是一种强类型语言,每个变量都必须声明其类型。Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。变量分为全局变量,局部变量,类变量(使用范围从大到小排列)。

注意:每个变量都有类型,类型可以是基本类型,也可以是引用类型;变量名必须是合法的标识符;变量声明是一条完整的语句,因此每一个声明必须以英文分号结束。

常量

常量,是初始化后不能再变化的值。可以看作是特殊的变量,他的值被设定后,在程序中不能被改变。定义常量的关键字为final

例: final 常量名 = 值;常量名一般使用大写字母表示

​ final double PI = 3.14;

变量的命名规范

  • 所有变量、方法名、类名要见名知意
  • 类成员变量:首字母小写,命名遵守驼峰原则 ,即除第一个单词后面的单词首字母大写,如 finalExamination
  • 局部变量:首字母小写,命名遵守驼峰原则
  • 常量:大写字母,有多个单词用下划线分割开如 MAX_VALUE
  • 类名:首字母大写,命名遵守驼峰原则,如 LoginProxy()
  • 方法名::首字母小写,命名遵守驼峰原则,如 getUsers()

五、运算符

算数运算符

算术运算符用在数学表达式中,它们的作用和在数学中的作用一样。

操作符 描述
+ 加法 , 相加运算符两侧的值
- 减法 , 左操作数减去右操作数
* 乘法 , 相乘操作符两侧的值
/ 除法 ,左操作数除以右操作数
取余 , 左操作数除以右操作数的余数
++ 自增: 操作数的值增加1
-- 自减: 操作数的值减少1

前缀自增自减法(++a,--a): 先进行自增或者自减运算,再进行表达式运算。

后缀自增自减法(a++,a--): 先进行表达式运算,再进行自增或者自减运算

赋值运算符

操作符 描述
= 简单的赋值运算符,将右操作数的值赋给左侧操作数
+ = 加和赋值操作符,它把左操作数和右操作数相加赋值给左操作数
- = 减和赋值操作符,它把左操作数和右操作数相减赋值给左操作数
* = 乘和赋值操作符,它把左操作数和右操作数相乘赋值给左操作数
/ = 除和赋值操作符,它把左操作数和右操作数相除赋值给左操作数
(%)= 取模和赋值操作符,它把左操作数和右操作数取模后赋值给左操作数
<< = 左移位赋值运算符
>> = 右移位赋值运算符
&= 按位与赋值运算符
^ = 按位异或赋值操作符
| = 按位或赋值操作符

关系运算符

Java定义了位运算符,应用于整数类型(int),长整型(long),短整型(short),字符型(char),和字节型(byte)等类型。

位运算符作用在所有的位上,并且按位运算。

运算符 描述
== 检查如果两个操作数的值是否相等,如果相等则条件为真。
!= 检查如果两个操作数的值是否相等,如果值不相等则条件为真。
> 检查左操作数的值是否大于右操作数的值,如果是那么条件为真。
< 检查左操作数的值是否小于右操作数的值,如果是那么条件为真。
>= 检查左操作数的值是否大于或等于右操作数的值,如果是那么条件为真。
<= 检查左操作数的值是否小于或等于右操作数的值,如果是那么条件为真。

instanceof 运算符

该运算符用于操作对象实例,检查该对象是否是一个特定类型(类类型或接口类型)。

( Object reference variable ) instanceof  (class/interface type)

逻辑运算符

操作符 描述
&& 称为逻辑与运算符。当且仅当两个操作数都为真,条件才为真。
| | 称为逻辑或操作符。如果任何两个操作数任何一个为真,条件为真。
称为逻辑非运算符。用来反转操作数的逻辑状态。如果条件为true,则逻辑非运算符将得到false。

位运算符

& , | , ^ , ~ , >> , << , >>>

条件运算符

条件运算符也被称为三元运算符。该运算符有3个操作数,并且需要判断布尔表达式的值。该运算符的主要是决定哪个值应该赋值给变量。

variable x = (expression) ? value if true : value if false
// 如果 a 等于 1 成立,则设置 b 为 20,否则为 30
b = (a == 1) ? 20 : 30;

扩展赋值运算符

+= , -= , *= , /=

运算符优先级

一般使用括号()来分割使用,把式子表示的明明白白

类别 操作符 关联性
后缀 () [] . (点操作符) 左到右
一元 expr++ expr-- 从左到右
一元 ++expr --expr + - ~ ! 从右到左
乘性 * /% 左到右
加性 + - 左到右
移位 >> >>> << 左到右
关系 > >= < <= 左到右
相等 == != 左到右
按位与 左到右
按位异或 ^ 左到右
按位或 | 左到右
逻辑与 && 左到右
逻辑或 | | 左到右
条件 ?: 从右到左
赋值 = + = - = * = / =%= >> = << =&= ^ = | = 从右到左
逗号 左到右

六、包机制、JavaDoc

包机制

包,相当于在PC中常用的文件夹。Java 使用包这种机制是为了防止命名冲突,访问控制,提供搜索和定位类、接口、枚举和注释等。

  • 包的作用
    • 把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用。
    • 如同文件夹一样,包也采用了树形目录的存储方式。同一个包中的类名字是不同的,不同的包中的类的名字是可以相同的,当同时调用两个不同包中相同类名的类时,应该加上包名加以区别。因此,包可以避免名字冲突。
    • 包也限定了访问权限,拥有包访问权限的类才能访问某个包中的类。

一般使用公司域名倒置为包名,如,博客园www.cnblogs.com ,包名com.cnblogs.www

为了能够使用某一个包的成员,我们可以在Java程序中使用“import"语句导入该包

import package[.package2...].(classname|*);

JavaDoc

JavaDoc命令是用来生成自己的API文档的,就如同Java的APIJDK8在线帮助文档

标签 描述 示例
@author 标识一个类的作者 @author description
@deprecated 指名一个过期的类或成员 @deprecated description
指明当前文档根目录的路径 Directory Path
@exception 标志一个类抛出的异常 @exception exception-name explanation
从直接父类继承的注释 Inherits a comment from the immediate surperclass.
插入一个到另一个主题的链接
插入一个到另一个主题的链接,但是该链接显示纯文本字体 Inserts an in-line link to another topic.
@param 说明一个方法的参数 @param parameter-name explanation
@return 说明返回值类型 @return explanation
@see 指定一个到另一个主题的链接 @see anchor
@serial 说明一个序列化属性 @serial description
@serialData 说明通过writeObject( ) 和 writeExternal( )方法写的数据 @serialData description
@serialField 说明一个ObjectStreamField组件 @serialField name type description
@since 标记当引入一个特定的变化时 @since release
@throws 和 @exception标签一样. The @throws tag has the same meaning as the @exception tag.
显示常量的值,该常量必须是static属性。 Displays the value of a constant, which must be a static field.
@version 指定类的版本 @version info

posted on 2021-03-15 23:25  Cap-Jerry  阅读(101)  评论(0)    收藏  举报