Java基础
注释
写注释是一个非常好的习惯,可以让别人跟自己更好的理解自己的代码。
可以搜索”有趣的代码注释“来看一些神注释。
-
单行注释
-
用//标识单行注释
//这是一行单行注释。
-
-
多行注释
-
用/**/来表示多行注释
/* 这是一个多行注释 这是一个多行注释 这是一个多行注释 */
-
-
文档注释
-
用/** */来标识文档注释可以用来加东西
/** *@Description HelloWorld *@Author 沐辰 */
-
标识符
Java所有的组成部分都需要名字、类名、变量以及方法名都被成为标识符。
-
所有的标识符以字母、$、下划线(_)开始
-
首字符后可以是字母、$、下划线或数字的任何字符组合
-
不能使用关键字作为变量名或方法名
-
标识符大小写敏感
-
可以用汉字,但不推荐使用,也可以用拼音,不推荐。
String $hello = "Hello World"; String _hello = "Hello World"; String hello = "Hello World"; String Hello = "Hello World";
关键字
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 | 用在循环结构中 |
数据类型
-
强类型语言
- 要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用。
-
弱类型语言,如JS。
-
Java的数据类型分为两大类
- 基本类型
- 数值类型
- 整数类型:byte占1个字节,short占2个字节,int占4个字节,long占8个字节。
- 浮点类型:float占4个字节,double占8个字节。
- 字符类型:char占2个字节。
- boolean类型:占1位,值只有true和false两个。
- 数值类型
public class demo2 { public static void main(String args[]){ //八大基本类型。 //整数 int num1 = 10;//最常用 byte num2 = 10; short num3 = 30; long num4 = 30L;//Long类型要在数字后面加L //小数:浮点数 float num5 = 10.1F;//float类型要在数字后面加个F。 double num6 = 123.213; //字符 char name = 'A'; //字符串,String不是关键字,是类。 String name2 = "沐辰"; //布尔值:是非 boolean flag = true; } }
- 引用类型:类、接口、数组。
- 基本类型
数据类型拓展
-
整数拓展
- 进制:二进制0b,八进制0,十六进制0x
int i = 10; int i2 = 010; int i3 = 0x10; System.out.println(i); System.out.println(i2); System.out.println(i3);
-
浮点数拓展;如银行业务,钱。
-
float 有限 离散 舍入误差 大约 接近但不等
-
double
-
最好完全避免浮点数进行比较
float f = 0.1f; double f2 = 0.1; System.out.println(f==f2); //false; System.out.println(f); System.out.println(f2);
-
-
字符拓展
-
所有字符本质还是数字
-
Unicode编码表,每个字符都有对应的数字。U0000~UFFFF
char c1 = 'a'; char c2 = '中'; System.out.println(c1);//a System.out.println((int)c1);//97 System.out.println(c2);//中 System.out.println((int)c2);//20013 char c3 = '\u0061'; System.out.println(c3); //a
-
-
转义字符:制表符\t、换行符\n等。
-
布尔值扩展
Less is more
下面的两个if是等效的。
boolean flag = true; if(flag == true){} if (flag){}
-
字符串扩展
- ”==“比较的是字符串的地址,new String会开辟新的地址存储字符串,导致sa、sb的地址不同。
- 字符串比较是否相同要用equal。
String sa = new String("Hello World!"); String sb = new String("Hello World!"); System.out.println(sa == sb); //false String sc = "Hello World!"; String sd = "Hello World!"; System.out.println(sc == sd); //true
类型转换
JDK7的新特性,可以数字之间可以使用下划线分割:100_0000_0000。
-
由于Java是强类型语言,所以进行某些运算的时候,会进行类型转换。字节大小从低到高。
- byte,short,char->int->long->float->double
-
运算过程中,不同类型的数据先转化为同一类型再进行运算。
-
强制类型转换:(类型)变量名 高--低
-
自动类型转换:自动进行 低--高
-
注意:
- 不能对布尔类型进行转换。
- 不能把对象类型转换为不相干的类型。
- 高容量转换为低容量时,使用强制转换。
- 转换的时候可能会出现内存溢出或者精度问题。
变量
- 变量就是可以变化的量
- Java是强类型语言,每个变量都必须声明其类型。
- Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。
- 注意事项:
- 每个变量都有类型,类型可以是基本类型,也可以是引用类型。
- 变量名必须是合法的标识符。
- 变量声明是一条完整的语句,因此每一个声明都必须一分号结束。
变量作用域
- 类变量:static。
- 实例变量:从属于对象,如果不进行初始化,这个类型的默认值 0、0.0;布尔值默认false;出了基本类型,其余都是null。
- 局部变量:必须声明和初始化值。
常量
-
常量:初始化后不能再改变值,不会变动的值。
-
可以理解为特殊的变量,在程序运行过程中不允许被改变。
-
定义方法:
final 常量名 = 值; final double PI = 3.14;
-
常量名一般使用大写字符。
变量的命名规范
- 所有的变量、方法、类名:见名知意。
- 类成员变量:首字母小写和驼峰原则,即小驼峰,除了第一个单词以外,后面的单词首字母大写。
- 局部变量:小驼峰原则。
- 常量:大写字母和下划线:MAX_VALUE。
- 类名:首字母大写和驼峰原则,即大驼峰。
- 方法名:小驼峰原则。
包机制
包的本质是文件夹。
-
为了更好地组织类,Java提供了包机制,用于区别类名和命名空间。
-
包语句的语法格式为:
package pkg1[. pkg2[. pkg3...]];
-
一般使用公司域名的倒置作为包名
-
为了能够使用某一个包的成员,我们需要在Java程序中明确导入该包。“import“语句。
import pkg1[. pkg2[. pkg3...]].(classname|*)
JavaDoc文档生成
- javadoc命令是用来自己生成API文档的。
- 参数信息:
标签 | 说明 | JDK 1.1 doclet | 标准doclet | 标签类型 |
---|---|---|---|---|
@author 作者 | 作者标识 | √ | √ | 包、 类、接口 |
@version 版本号 | 版本号 | √ | √ | 包、 类、接口 |
@param 参数名 描述 | 方法的入参名及描述信息,如入参有特别要求,可在此注释。 | √ | √ | 构造函数、 方法 |
@return 描述 | 对函数返回值的注释 | √ | √ | 方法 |
@deprecated 过期文本 | 标识随着程序版本的提升,当前API已经过期,仅为了保证兼容性依然存在,以此告之开发者不应再用这个API。 | √ | √ | 包、类、接口、值域、构造函数、 方法 |
@throws异常类名 | 构造函数或方法所会抛出的异常。 | √ | 构造函数、 方法 | |
@exception 异常类名 | 同@throws。 | √ | √ | 构造函数、 方法 |
@see 引用 | 查看相关内容,如类、方法、变量等。 | √ | √ | 包、类、接口、值域、构造函数、 方法 |
@since 描述文本 | API在什么程序的什么版本后开发支持。 | √ | √ | 包、类、接口、值域、构造函数、 方法 |
链接到某个特定的成员对应的文档中。 | √ | 包、类、接口、值域、构造函数、 方法 | ||
当对常量进行注释时,如果想将其值包含在文档中,则通过该标签来引用常量的值。 | √(JDK1.4) | 静态值域 |
Dos命令生成注释文档
在代码中写完文档注释之后,可以通过Dos命令,在当前文件夹下生成对应的JavaDoc文档。
命令为:javadoc [选项] [软件包名称] [源文件]
例如:javadoc -encoding UTF-8 -charset UTF-8 Doc.java
IDEA生成注释文档
Tools -> Generate JavaDoc -> 选择要生成的包、选项 -> 生成
注意:
- 路径中不可以有中文,否则报错。
- Local可以填写语言,zh_CN问中文。
- Local下面的Other...可以填入其他选项,如:-encoding UTF-8 -charset UTF-8 。
各种编码规范推荐阅读《阿里巴巴Java开发手册》
《阿里巴巴Java开发手册》下载
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现