Java语言基础
java 三种注释方式
-
单行注释:单行注释用于在代码中添加一行注释。它以双斜杠(//)开头,直到行未的所有文本都被视为注释
// 这是一个单行注释 int x = 5; // 这是一个变量赋值的注释
-
多行注释:多行注释用于注释多行代码块。它以
/*
开头,以*/
结束,之间的所有文本都被视为注释/* 这是一个多行注释 它可以跨行多行 */ int y = 10;
-
Javadoc:文档注释通常用于生成代码文档。它是
/**
开头,以*/
结束,通常出现在类、方法、字段的定义前面,并包含有关它们的详细信息,如参数说明、返回值等/** * 这是一个文档注释示例。 * 这个类用来演示文档注释的使用。 */ public class MyClass{ /** * 这是一个方法的文档注释 * *@param x 一个整数参数 *@return 返回一个字符串 */ public String myMethod(int x){ //方法体 return "Hello, " + x; } }
文档注释通常用于自动生成API文档,可以使用工具如Javadoc来提取这些注释并生成HTML格式的文档。
## Java 标识符
Java中,标识符用来命名变量、方法、类、接口、包等各种元素的名称。标识符必须遵守一些规则和约定。
- 字符集: Java标识符可以包含字母(大小写)、数字、下划线(_)和美元符号($)。例如,
myVarable
、MAX_VALUE
、calculateTotal_2
都是合法的标识符。 - 第一个字符:标识符的第一个字符必须是字母、下划线(_)或美元符号($)。不能以数字开头。例如,
value
、_count
是合法的标识符,而3total
是非法的。 - 大小写敏感: Java是区分大小写的,因此大写字母和小写字母被视为不同的字符。例如,
myVariable
和myvariable
是两个不同的标识符。 - 长度:标识符的长度没有限制,但最好保持适度以保持代码的可读性。
- 关键字:您不能不用Java的关键字(也称为保留字)作为标识符。
关键字 | 语意 | 备注 |
---|---|---|
abstract | 用于声明抽象类或 | |
assert | 用于在断言表达式为false时引发异常 | |
boolean | 用于声明布尔类型的变量或方法返回值 | |
break | 用于退出循环 | |
byte | 用于声明字节类型的变量或方法返回值 | |
case | 用于在switch语句中定义不同的情况 | |
catch | 用于捕获和处理异常 | |
char | 用于声明字符类型的变量或方法返回值 | |
class | 用于定义类 | |
continue | 用于跳过当前循环的其余部分并继续下一次迭代 | |
default | 用于在switch语句中指定默认情况 | |
do | 用于执行循环 | |
double | 用于声明双精度浮点数类型的变量或方法返回值 | |
else | 用于if语句中指定条件不满足时的操作 | |
enum | 用于定义枚举类型 | |
extends | 用于表示类继承另一个类 | |
final | 用于表示不可更改的常量、类或方法 | |
finally | 用于在异常处理中定义最终操作 | |
float | 用于声明单精度浮点数类型的变量或方法返回值 | |
for | 用于定义for循环 | |
if | 用于定义条件语句 | |
implements | 用于表示一个类实现一个接口 | |
import | 用于导入其他包中的类 | |
instanceof | 用于检查对象是否属于某个类或接口 | |
int | 用于声明整数类型的变量或方法返回值 | |
interface | 用于定义接口 | |
long | 用于声明长整数类型的变量或方法返回值 | |
native | 用于指示一个方法使用本地代码实现 | |
new | 用于创建对象实例 | |
package | 用于定义包 | |
private | 用于限制访问权限,表示只能在类内部访问 | |
protected | 用于限制访问权限,表示只能在子类和同一个包中访问 | |
public | 用于指示类、方法或变量是公开可访问的 | |
return | 用于从方法中返回值 | |
short | 用于声明短整数类型的变量或方法返回值 | |
static | 用于指示方法或变量是静态的,属于类而不是实例 | |
strictfp | 用于确保浮点运算的结果在不同平台上一致 | |
super | 用于引用父类的成员 | |
switch | 用于创建多分支选择语句 | |
synchronized | 用于创建同步块或方法,以防止多线程并发问题 | |
this | 用于引用当前对象 | |
throw | 用于抛出异常 | |
throws | 用于声明可能抛出的异常 | |
transient | 用于指示某个字段不会被序列化 | |
try | 用于定义异常处理块 | |
void | 用于表示方法没有返回值 | |
volatile | 用于指示字段可能被多个线程同时修改,需要特殊处理 |
Java 数据类型
Java是强类型语言,支持多种数据类型,这些数据类型可用于声明变量、方法参数、方法和返回值以及类成员。Java的数据类型可以分为两大类:原始数据类型(Primitive Data Types)和引用数据类型(Reference Data Types)。
原始数据类型(Primitive Data Types)
原始数据类型是Java语言内置的基本数据类型,它们用于表示简单的值。Java有8种原始数据类型,分为四个类型:整数类型、浮点数类型、字符类型和布尔类型。
-
整数类型:
数据类型 范围 byte 8位,占1个字节,范围为-128到127 short 16位,占2个字节,范围为-32,768到32,767 int 32位,占4个字节,范围为-231到231 - 1 long 64位,占8个字节,范围为-263到263 - 1,long myLong = 1000000L; // 注意要加上 ‘L’ 或 ‘l’ -
浮点数类型:
数据类型 | 范围 |
---|---|
float | 32位,占4个字节,单精度浮点数,float myFloat = 3.14f; // 注意要加上 ‘f’ 或 ‘F’ |
double | 64位,占8个字节,双精度浮点数 |
-
字符类型:
数据类型 范围 char 16位,占2个字节,表示Unicode字符 -
布尔类型:
数据类型 范围 boolean 占一位表示true或false
引用数据类型(Reference Data Types)
引用数据类型用于引用对象,而不是直接存储值。引用数据类型包括类、接口、数组等。你可以使用他们来创建复杂的数据结构和对象。
一些常见的引用数据类型包括:
类型 | 释意 |
---|---|
类(Class) | 用户自定义的类 |
接口(Interface) | 定义了一组方法的接口 |
数组(Array) | 用于存储相同类型的多个值的数据结构 |
枚举(Enum) | 一种特殊的数据类型,用于表示一组有限的命名值 |
字符串(String) | 表示文本的字符串 |
什么是字节
- 位(bit):是计算机内部数据储存的最小单位,1100100是一个八位二进制数。
- 字节(byte):是计算机中数据处理的基本单位,习惯上用大写B来表示
- 1B(byte,字节)= 8bit(位)
- **字符:**是指计算机中使用的字母、数字、字和符号
- 1bit表示1位
- 1Byte表示一个字节 1B=8b
- 1024B=1KB
- 1024KB=1M
- 1024M=1G1
数据类型转换
Java中,数据类型转换是将一个数据类型的值转换成为另一个数据类型的过程。数据类型转换通常分为两种类型:隐式类型转换(Implicit Type Conversion,也称为自动类型转换)和 显式类型转换(Explicit Type Conversion,也称为强制类型转换)
隐式类型转换(自动类型转换)
隐式类型转换是在不需要显式转换操作符的情况下自动发生的类型转换。这种类型转换通常发生在以下情况下:
-
当将容量小的数据类型赋值给容量大的数据类型时。
-
当将整数类型赋值给浮点数类型是。
-
当将常量表达式赋值给变量时,如果常量表达式的值在目标类型的范围内,则会自动转换为目标类型。
int numInt = 100; double numDouble = numInt; //隐式转换,int到double
显式类型转换(强制类型转换)
显示类型转换需要使用强制类型转换操作符(cast)来将一个数据类型强制转换为另一个数据类型。这种类型转换通常在以下情况下使用:
-
当将容量大的数据类型赋值给容量小的数据类型时,需要进行强制类型转换。
-
当进行精度丢失的转换时,例如将浮点数转换为整数时。
double numDouble = 3.14159; int numInt = (int) numDouble; //强制转换,double到int,会丢失小数部分
-
注意点:
- 在执行强制类型转换时,可能会丢失数据,因此需要谨慎使用
- 强制类型转换可能会导致数据溢出或精度丢失,因此要确保转换后的值在目标数据类型的范围内。
- 对于不兼容的数据类型,强制类型转换可能导致编译时或运行时错误,因此需要确保类型转换是合法的
- 在进行类型转换时,应该遵循Java中的类型规则,以防止不必要的问题.
自动装箱(Autoboxing)
自动装箱是指原始数据类型的值自动封装为相应的包装类对象。在需要使用包装类对象的地方,Java会自动将原始数据类型的值封装为包装类对象。
Integer number = 42; //自动装箱,将int值封装成Integer对象
Double price = 3.99; //自动装箱,将double值封装成Double对象
在这里,整数值42和双精度数值3.99被自动封装为Integer和Double对象,以便赋值给相应的变量。
自动拆箱(Unboxing)
自动拆箱是指将包装类对象自动解包为原始数据类型的值。在需要使用原始数据类型的值是地方,Java会自动从包装类对象中提取出值。
Integer number = 42;
int intValue = number; //自动拆箱,从Integer对象提取int值
在这里,Integer
对象中的整数值被自动拆箱为int
类型的值,以便赋值给intvalue
变量。
Java 变量
Java中,变量是用于存储数据的命名容器。变量可以存储各种类型的数据,例如整数、浮点数、字符、布尔值等。
声明变量
在使用变量之前,必须先声明它。变量的声明告诉编译器变量的类型和名称。声明变量的语法如下:
data_type variable_name;
其中,data_type
表示变量的数据类型,可以为原始数据类型也可以为引用数据类型;variable_name
是变量的名称。
初始化变量
变量可以在声明时或稍后的代码中进行初始化,即给变量赋一个初始值。未初始化的局部变量不能直接使用,会导致编译错误。
int age; //声明一个整数变量
age = 25; // 初始化变量 age
// 或者在声明时初始化
double price = 19.99; //声明并初始化双精度浮点数变量
String name = "zhangsan"; // 声明引用数据类型
变量命名规则
- 变量名称只能包含字母、数字、下划线(_)和美元符号($)。
- 变量名称不能以数字开头。
- 变量名称对大小写敏感。
- 不能使用Java关键字或保留字(
int
、if
、class
等)作为变量名 - 变量名称应具有描述性、以提高代码的可读性
作用域
Java中,变量的作用域(Scope)指的是变量在程序中可见和可访问的范围。变量的作用域由它们的声明位置决定,不同类型的变量具有不同的作用域规则。
局部变量(Local Variables)的作用域
局部变量是在方法、构造函数或代码内部声明的变量。它们只在声明它们的方法、构造函数或代码块内部可见。一旦超出这个范围,局部变量就不能被访问。
public void someMethod() {
int localVar = 42; //局部变量
// localVar 只能在someMethod 内部访问
}
实例变量(Instance Variables)的作用域
实例变量是类的成员变量,它们在类中声明但不在任何方法、构造函数或代码块内部。它们的作用域是整个类的范围,可以被类的任何方法访问。
public class MyClass{
int instanceVar; // 实例变量,在类的任何方法中都可以访问`instanceVar`
}
类变量(Class Variables)的作用域
类变量也称为静态变量,它们是用static
关键字修饰的实例变量。类变量的作用域与实例变量相同,也是整个类的范围。与实例变量不同的是,类变量属于类而不是特定的对象实例。
public class MyClass{
static int classVar; // 类变量,所有该类的对象共享同一个`classVar`
}
注意点:
- 变量的作用域决定了他们的可见性。在超出其作用域范围后,变量将不再可见。
- 同一个名称的局部变量和实例变量可以共存,但局部变量的优先级更高。如果在方法内部有同名局部变量和实例变量,则局部变量将覆盖实例变量。
- 类变量时类的所有实例共享的,因此在任何类的对象上都可以访问它们。
常量
Java中,常量是一种特殊的变量,其值在 声明后不能被修改。常量通常用大写字母表示,以便于常量区别开来,并通过final
关键字来声明。
声明语法
final date_type CONSTANT_NAME = value;
final
:关键字表示该变量是一个常量,其值不能被更改data_type
:是常量的数据类型,可以是整数、浮点数、字符、布尔值等。CONSTANT_NAME
:是常量的名称,通常使用大写字母和下划线value
:是常量的初始值。
常量的命名规则
常量的命名通常采用全大写字母,单词之间用下划线分割
final double PI = 3.14159265359;
final int MAX_VALUE = 100;
final String GREETING = "Hello, WOrld!"
常量的初始化
常量必须在声明时或构造方法中进行初始化,一旦初始化后,他们的值将保持不变。
final int NUM_DAYS_IN_WEEK = 7; // 声明并初始化常量
作用
常量用于存储不会变化的值,以提供代码的可读性和可维护性。例如,Math.PI
是一个常量,他表示圆周率的值,因为圆周率不会改变。
静态常量
常量也可以成名为静态变量,这样它们可以在不创建类的实例的情况下访问。静态常量通常用static final
修饰符声明
public class Constants{
public static final double PI = 3.14159265359;
public static final int MAX_VALUE = 100;
}
在其他类中,您可以通过Constants.PI
来访问这些静态变量。
Java 运算符
Java提供了多种运算符,用于执行各种操作,包括数学运算、逻辑运算、比较运算和位运算等。
算术运算符
用于执行基本的数学计算,如加法、减法、乘法、除法等。
+
:加法-
:减法*
:乘法/
:除法%
:取模(取余数)
关系运算符
用于比较两个值之间的关系,返回布尔值(true
或false
)
==
:等于!=
:不等于<
:小于>
:大于<=
:小于等于>=
:大于等于
逻辑运算符
用于执行逻辑运算,通常用于组合多个条件,返回布尔值。
-
&&
:逻辑与(AND):逻辑与运算用于判断多个条件是否都为真。只有当所有条件都为真时,结果才为真;如果一个或多个条件为假,结果为假。短路判断如果第一个或者中间的某一个为假,哪就不会再去判断后面是否为真,直接返回为假boolean condition1 = true; boolean condition2 = false; boolean result = condition1 && condition2; // 结果为false
-
||
:逻辑或(OR):逻辑或运算用于判断多个条件是否至少有一个为真。只要有一个条件为真,结果就为真;只有当所有条件都为假时,结果才为假。短路判断如果第一个或者中间的某一个为真,哪就不会再去判断后面是否为假,直接返回为真boolean condition1 = true; boolean condition2 = false; boolean result = condition1 && condition2; //结果为false
-
!
:逻辑非(NOT):逻辑非运算用于取反一个条件的值。如果条件为真,取反后为假;如果条件为假,取反后为真。boolean condition = true; boolean result = !condition; //结果为 false
赋值运算符
用于将值赋给变量
-
=
:赋值:用于将右侧的值付给左侧的变量int x = 10; //将10赋给变量x
-
+=
:加法赋值:用于将右侧的值与左侧变量值相加,并将结果赋给左侧的变量。int x = 5; x += 3; //等同于x = x+3; 现在x的值为8
-
-=
:减法赋值:用于将右侧的值从左侧的变量值中减去,并将结果赋给左侧的变量。int x = 10; x -= 4; //等同于 x = x- 4; 现在x的值为6
-
*=
:乘法赋值:用于将右侧的值与左侧的变量值相乘,并将结果赋给左侧的变量。int x = 3; x *= 2; // 等同于 x = x * 2; 现在x的值6
-
/=
:除法赋值:用于将左侧的变量值除以右侧的值,并将结果赋给左侧的变量。int x = 12; x /= 4; //等同于 x = x / 4;现在x的值为3
-
%=
:取模赋值int x = 13; x %= 5; //等同于 x = x % 5; 现在的x的值为3
-
&=
:按位与赋值 -
|=
:按位或赋值 -
^=
:按位异或赋值 -
<<=
:左移位赋值 -
>>=
:右移位赋值 -
>>>=
:无符号右移位赋值 -
这些运算符与位运符一起使用,用于执行位运损操作并将结果赋给左侧的变量。
int x = 5; x &= 3; // 使用位与运算符,现在x的值为1
自增与自减运算法
用于增加或减少变量的值
-
++
:自增运算符 -
--
:自减运算符int a =3; int b = a++; //b的赋值结果为3,a++为先赋值再计算 int c = ++a; //c的赋值结果为4,++a为先计算再赋值
位运算符
用于对二进制位进行操作
-
&
:按位与:对两个操作数的每个位执行与运算。如果两个位都为1,则结果为1;否则结果为0;int a = 5; // 二进制:0101 int b = 3; // 二进制: 0011 int result = a & b //结果为 1(二进制:0001)
-
|
:按位或:对两个操作数的每个位执行或操作。如果任何一个位为1,则结果为1;只有当两个位结果为0时,结果为0。int a = 5; // 二进制:0101 int b = 3; // 二进制:0011 int result = a | b; // 结果为1(二进制:0001)
-
^
:按位异或:对两个操作数的每个位执行异或运算。如果两个位不同,则结果为1;如果两个位相同,则结果为0。int a = 5; //二进制:0101 int b = 3; //二进制:0011 int result = a ^ b; //结果为6(二进制:0110)
-
~
:按位取反:对操作数的每个位执行取反运算,即0变为1,1变为0。int a =5; //二进制:0101 int result = ~a; //结果为 -6(二进制:1010)
-
<<
:左移位:将操作数的二进制左移指定的位数,右侧用0填充。int a =5 ; //二进制:0101 int result = a << 2; // 结果为 20(二进制:10100)
-
>>
:右移位:将操作数的二进制右移指定的位数,左侧用符号位(正数用0,负数用1)填充。int a = 16; // 二进制:11110000 int result = a >> 2; //结果为 -4(二进制:11111100)
-
>>>
:无符号右移位:将操作数的二进制位右移指定的位数,左侧用0填充,无论操作数是正数还是负数int a = -16; // 二进制:11110000 int result = a >>>2; 结果为1073741821 (二进制:00111111111111111111111111111101)
条件运算符(三元运算符)
Java中的三元运算符(也称为条件运算符)是一种简单的条件表达式,用于根据一个条件的结果选择两个值之一。三元运算符具有一下语法
condition ? value1 : value2
-
conditon
是一个布尔表达式,如果它的结果为true
,则表达式返回value1
;如果结果为false
,则返回value2
。 -
value1
和value2
可以是任意表达式,它们的类型必须是兼容的,因为返回的结果类型将根据它们的类型自动确定。int num1 = 10; int num2 = 20; int max = (num1 > num2) ? num1 : num2; System.out.println("较大的数是:" + max); // 输出:较大的数是:20
实例成员访问运算符
用于访问对象的成员(字段和方法)
.
:点运算符
类型转换运算符
用于执行数据类型的强制类型转换
(type)
:类型转换,例如(int) 5.6
instanceof运算符
用于测试对象是否为特定类的实例。
instanceof
:测试对象是否为特定类的实例。
数组成员访问运算符
用于访问数组元素
[]
:用于访问数组中的元素
Java 运算的优先级
Java中,不同运算符具有不同的优先级,这决定了他们在表达中的计算顺序。运算符的优先级是根据Java语言规范定义的,以下是一些常见运算符的优先级从高到到底的顺序:
- 括号
()
:括号具有最高的优先级,用于明确指定表达式的计算顺序。 - 一元运算符:一元运算符包括递增(
++
)、递减(--
)、正号(-
)、负号(-
)以及逻辑非(!
)和位取反(~
)等。 - 算术运算符:包括乘法(
*
)、除法(/
)、取模(%
)、加法(+
)和减法(-
)等。 - 位移运算符:左移(
<<
)、右移(>>
)和无符号右移(>>>
)。 - 关系运算符:包括等于(
==
)、不等于(!=
)、大于(>
)、小于(<
)、大于等于(>=
)和小于等于(<=
)。 - 逻辑运算符:逻辑与(
&&
)、逻辑或(||
)和逻辑非(!
)。 - 位运算符:按位与(
&
)、按位或(|
)、按位异或(^
)。 - 条件运算符(三元运算符):
condition ? value1 : value2
。 - 赋值运算符:赋值运算符包括等号赋值(
=
)、加并赋值(+=
)、减并赋值(-=
)
在表达式中,运算符的优先级决定 了他们计算顺序。当多个运算符同时出现在一个表达式中时,具有更高优先级的运算符将首先计算。如果运算符具有相同的优先级,则根据结合性(从左到右或从右到左)来确定计算顺序
int result = 5 + 3 * 2;
在这个表达式中,乘法运算符*
的优先级高于加法运算符+
,因此先计算3 * 2
,然后再加上5
,所以result
的值为11
int result = (5 + 3) * 2; // 使用括号改变计算顺序,result 的值为16
运算工具类
Math类
Java的Math
类提供了许多用于执行常见数据运算的静态方法。
数学运算方法
Math.abs(x)
:返回x的绝对值。Math.ceil(x)
:返回不小于x的最小整数。Math.floor(x)
:返回不大于x的最大整数。Math.round(x)
:将x四舍五入为最接近的整数。Math.max(x,y)
:返回x和y中较大值。Math.min(x,y):
返回x和y中较小值。Math.pow(x,y):
返回x的y次幂。Math.sqrt(x)
:返回x的平方根Math.cbrt(x)
:返回x的立方根Math.exp(x)
:返回e的x次幂,其中e是自然对数的底数。Math.log(x)
:返回x的自然对数。Math.log10(x)
:返回x的以10为底的对数Math.random()
:返回一个[0,1]范围内的随机双精度浮点数。
三角函数
Math.sin(x)
:返回x的正弦值,x以弧度表示。Math.cos(x)
:返回x的余弦值,x以弧度表示。Math.tan(x)
:返回x的正切值,x以弧度表示。Math.asin(x)
:返回x的反正弦值,结果以弧度表示Math.acos(x)
:返回x的反余弦值,结果以弧度表示。Math.atan(x)
:返回x的反正切值,结果以弧度表示。
常数
Math.PI
:圆周率(π)的值。Math.E
:自然对数的底数(e)的值。
BigDecimal类
BigDecimal
是Java中用于精确表示和操作任意精度的十进制数的类。他通常用于处理需要高精度计算的金融,科学和工程应用,以避免浮点数舍入误差。
创建BigDecimal
对象
import java.math.BigDecimal;
/*
使用字符串构造函数:通过将字符串的数传递给构造函数来创建`BigDecimal`对象,这样可以确保精度。
*/
BigDecimal number1 = new BigDecimal("0.1");
BigDecimal number2 = new BigDecimal("0.2");
/*
使用`valueOf`静态方法,通过将双精度浮点数或长整数传递给`valueOf`方法来创建`BigDecimal`对象。
*/
BigDecimal number3 = BigDecimal.ValueOf(0.1);
BigDecimal number4 = BigDecimal.valueOf(0.2);
进行数学运算
BigDecimal sum = number1.add(number2); //加法
BigDecimal difference = number1.subtract(num2); // 减法
BigDecimal product = number1.multiply(num2); //乘法
BigDecimal quotient = number1.divide(num2); //除法
// 除法,保留两位小数并四舍五入
BigDecimal result = number1.divide(num2,2,RoundingMode.HALF_UP);
比较BigDecimal
int comparison = number1.compareTo(number2);
/*
如果 number1 大于 number2,comparsion将返回整数;
如果 number1 小于 number2,comparsion将返回负数;
如果 number1 等于 number2,comparsion将返回0;
*/
其他操作
BigDecimal absoluteValue = number1,abs(); // 取绝对值
BigDecimal negation = number1.negate(); // 取反
BigDecimal rounded = number1.SetScale(2,ROundingMode.DOWN); //设置小数点后的为数并截断
BigDecimal power = number1.pow(3); // 乘方运算
Java 包机制
Java中,包(package)是一种组织和管理类和接口的方式,用于将相关的类和接口组织到一个命名空间中。包提供了以下几个主要的优势:
- **命名空间管理:**包允许您将类和接口按照逻辑上的关联进行组织。这有助于避免命名冲突,因为类名只在包内唯一。
- **可维护性:**包使代码更有组织性,易于维护。相关的类和接口放在同一个包内,是的查找和修改代码更加容易。
- **可重用性:**包可以包含一组相关的类和接口,这些类和接口可以被其他应用程序或项目重用。
- **访问控制:**Java的包系统允许您控制类和接口的访问权限。可以使用访问修饰符(例如
public
、protected
、private
)来限制对包内部的类和成员的访问。
Java包机制的重要信息:
-
**包的声明:**在Java中,使用
package
关键字来声明一个包。包声明通常位于源文件的顶部。package com.example.myapp;
-
**包的命名规范:**包名通常采用逆域名(reverse domain name)的命名规范,以确保唯一性的可读性。例如,
com.example.myapp
是一个有效的包名。 -
**包的目录结构:**包名通常与目录结构相对应。例如,包
com.example.myapp
的类文件通常位于目录结构com/exmple/myapp
下。 -
**导入其他包:**使用
import
关键字来导入其他包中的类和接口,以便在当前包中使用它们。import com.example.otherpackage.OtherClass;
-
**包访问权限:**默认情况下,包内的类和成员具有包级别的访问权限,只能被同一包内的其他类访问。
-
**访问修饰符:**可以使用不同的访问修饰符来控制类和成员的可见性,包括
public
、protected
、private
和默认(无修饰符)等。 -
类路经(Classpath): Java运行时使用类路经来查找类文件。包结构和类路经密切相关,因此正确设置类路经对于程序的运行至关重要。
JavaDoc
JavaDoc是一种用于生成Java文档的工具,它能够从Java源代码中提取注释信息,并生成HTML格式的文档,以便开发人员,用户和其他项目成员阅读和理解代码的功能和接口。JavaDoc文档通常包括类、方法、字段和注释的描述信息。
**JavaDoc注释:**JavaDoc文档是通过特殊的注释格式编写的,通常位于类、方法、字段和包的声明之前。JavaDoc注释以/**
开始,以*/
结束
/**
* 这是一个示例类的文档注释。
*/
public class ExampleClass {
/**
* 这是一个示例方法的文档注释。
* @param param1 参数1的描述
* @return 返回值的描述
*/
public int exampleMethod(int param1) {
// 方法实现
}
}
**常用的JavaDoc标签:**JavaDoc注释可以包含一些特殊标签,用于提供额外的信息,例如@param
用于描述方法参数,@return
用于描述返回值,@throws
用于描述可能跑出的异常等。
/**
* 计算两个整数的和。
* @param a 第一个整数
* @param b 第二个整数
* @return 两个整数的和
*/
public int add(int a, int b) {
return a + b;
}
**生成文档:**使用JavaDoc工具可以生成Java文档。在命令行中,可以使用以下命令来生成文档:
javadoc ExampleClass.java
这将生成一个名为index.html
的HTML文档和其他相关文件,用于浏览和查看代码的文档。
**查看文档:**生成的JavaDoc文档通常包括类的继承关系、方法和字段的详细信息、参数描述、返回值描述和异常信息等。您可以在浏览器中打开HTML文档来查看文档。
open index.html