java基础详解1----package引入&CLASSPATH

一、对于公共类(public),java源码文件名一定要与类名一致,否则会报错

D:\project\helloWorld>javac hello.java

hello.java:1: 错误: 类HelloWorld是公共的, 应在名为 HelloWorld.java 的文件中声明

public class HelloWorld {

^

1 个错误

二、一个java文件中只能有一个公共类,也可以新加默认(default)类型的类

三、当一个文件中只有默认类的时候,类名可以不与文件名相同,文件中可以有多个默认类

四、同一个目录下的源文件属于同一个包(package)

五、源码文件可以不命名包,但是不适合在项目中使用,只用来简单测试

HelloWorld.java

java 复制代码
//package main;
public class HelloWorld {

    public static void main(String args []){

        System.out.println("hello world");

    }
}

将package注释掉,在当前目录下编译并运行

bash 复制代码
javac HelloWorld.java
java HelloWorld

六、包(package)引入

1、包名要和源文件的物理路径一致,即包名是com.hello,那么该包中的所有源文件都要在com/hello路径下,这引出了另一个事实,即同一个路径下的所有源文件都属于同一个包。

2、import 只会引入单个包成员或者包的全部内容

java 复制代码
import graphics.Rectangle;
import java.awt.*;

七、javac编译源文件时包是如何引入的?

bash 复制代码
java -help
PS C:\Users\love1\Documents\technology\java\project\hello> javac -help
用法: javac <options> <source files>
其中, 可能的选项包括:
  -g                         生成所有调试信息
  -g:none                    不生成任何调试信息
  -g:{lines,vars,source}     只生成某些调试信息
  -nowarn                    不生成任何警告
  -verbose                   输出有关编译器正在执行的操作的消息
  -deprecation               输出使用已过时的 API 的源位置
  -classpath <路径>            指定查找用户类文件和注释处理程序的位置
  -cp <路径>                   指定查找用户类文件和注释处理程序的位置
  -sourcepath <路径>           指定查找输入源文件的位置
  -bootclasspath <路径>        覆盖引导类文件的位置
  -extdirs <目录>              覆盖所安装扩展的位置
  -endorseddirs <目录>         覆盖签名的标准路径的位置
  -proc:{none,only}          控制是否执行注释处理和/或编译。
  -processor <class1>[,<class2>,<class3>...] 要运行的注释处理程序的名称; 绕过默认的搜索进程
  -processorpath <路径>        指定查找注释处理程序的位置
  -parameters                生成元数据以用于方法参数的反射
  -d <目录>                    指定放置生成的类文件的位置
  -s <目录>                    指定放置生成的源文件的位置
  -h <目录>                    指定放置生成的本机标头文件的位置
  -implicit:{none,class}     指定是否为隐式引用文件生成类文件
  -encoding <编码>             指定源文件使用的字符编码
  -source <发行版>              提供与指定发行版的源兼容性
  -target <发行版>              生成特定 VM 版本的类文件
  -profile <配置文件>            请确保使用的 API 在指定的配置文件中可用
  -version                   版本信息
  -help                      输出标准选项的提要
  -A关键字[=值]                  传递给注释处理程序的选项
  -X                         输出非标准选项的提要
  -J<标记>                     直接将 <标记> 传递给运行时系统
  -Werror                    出现警告时终止编译
  @<文件名>                     从文件读取选项和文件

javac javac 后直接根java源文件,在编译源文件的时候,对于所有引入的包会以当前路径为基准,去到该包对应的物理路径下去加载对应的成员。

-classpath 或者 -cp 也可以指定基准路径

八、java 如何运行程序

bash 复制代码
C:\Users\love1\Documents\technology\java\project>java -help
用法: java [-options] class [args...]
           (执行类)
   或  java [-options] -jar jarfile [args...]
           (执行 jar 文件)

java 包名.类名 会以当前路径为基准,去到该包名对应的物理路径下去寻找对应的类,并以此路径为基准加载引入的其他类。

九、设置CLASSPATH

windows

1、C:> sdkTool -classpath classpath1;classpath2...

2、set CLASSPATH=classpath1;classpath2...

3、C:> java -classpath C:\java\MyClasses;C:\java\OtherClasses ...

4、java -classpath C:\java\MyClasses\myclasses.jar utility.myapp.Cool

5、java -classpath C:\java\MyClasses\myclasses.zip utility.myapp.Cool

linux

1、setenv CLASSPATH path1:path2 (unsetenv CLASSPATH)

2、CLASSPATH = path1:path2:... && export CLASSPATH (unset CLASSPATH)

3、java -classpath /java/MyClasses:/java/OtherClasses ...

4、java -classpath /java/MyClasses/myclasses.jar utility.myapp.Cool

5、java -classpath /java/MyClasses/myclasses.zip utility.myapp.Cool

相关推荐
不太可爱的叶某人2 小时前
【学习笔记】Java并发编程的艺术——第6章 Java并发容器和框架
java·笔记·学习
GUET_一路向前2 小时前
【C语言】解释形参void *data用法
c语言·开发语言·通用指针
skywalk81632 小时前
转换一个python项目到moonbit,碰到报错输出:编译器对workflow.mbt文件中的类方法要求不一致的类型注解,导致无法正常编译
开发语言·moonbit·trae
两码事3 小时前
告别繁琐的飞书表格API调用,让飞书表格操作像操作Java对象一样简单!
java·后端
DavieLau3 小时前
C#项目WCF接口暴露调用及SOAP接口请求测试(Python版)
xml·服务器·开发语言·python·c#
张人玉3 小时前
C#Encoding
开发语言·c#
灵魂猎手3 小时前
2. MyBatis 参数处理机制:从 execute 方法到参数流转全解析
java·后端·源码
灵魂猎手4 小时前
1. Mybatis Mapper动态代理创建&实现
java·后端·源码
Hard but lovely4 小时前
C++:stl-> list的模拟实现
开发语言·c++·stl·list
白露与泡影4 小时前
Spring容器初始化源码解析
java·python·spring