Java基础07 包

Anaconda报错no qt platform plugin could be initialized 今天因为在anaconda中安装了一个新包,安装成功后运行python 程序报错:no qt platform plugin could be initialized。 1.安装Anaconda3-4.2.0-Windows-x86_64,对应python版本为3.5.2,scikit learn版本是0.17。因为要用Isolation Forest算法,只有0.18以上版本scikit learn才包含此算法,所以想更新scikit learn。 conda install scikit-lear 阅读详情

作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢!

 

我们已经写了一些Java程序。之前的每个Java程序都被保存为一个文件,比如Test.java。随后,该程序被编译为Test.class。我们最终使用$java Test来运行程序。

然而,在一个正常的Java项目中,我们往往需要编写不止一个.java程序,最终的Java产品包括了所有的Java程序。因此,Java需要解决组织Java程序的问题。包(package)的目的就是为了更好的组织Java程序。

 

 

包的建立

包的建立非常简单。我们只用在Java程序的开始加入package就可以了。我们以Human类为例,将它放入包中:

复制代码
package com.vamei.society;

public class Human
{
    /**
     * constructor
     */
    public Human(int h)
    {
        this.height = h;
        System.out.println("I'm born");
    }

    /**
     * accessor
     */
    public int getHeight()
    {
        return this.height;
    }

    /**
     * mutator
     */
    public void growHeight(int h)
    {
        this.height = this.height + h;
    }

    private int height;
}
复制代码

 

上面的第一行语句

package com.vamei.society;

表示该程序在com.vamei.society包中。com.vamei(vamei.com的反写)表示包作者的域名 (很可惜,这个域名已经被别人注册了,所以只起演示作用)。Java要求包要有域名前缀,以便区分不同作者。society为进一步的本地路径名。com.vamei.society共同构成了包的名字。

包为Java程序提供了一个命名空间(name space)。一个Java类的完整路径由它的包和类名共同构成,比如com.vamei.society.Human。相应的Human.java程序要放在com/vamei/society/下。类是由完整的路径识别的,所以不同的包中可以有同名的类,Java不会混淆。比如com.vamei.society.Human和com.vamei.creature.Human是两个不同的类。

 

再看一个细节。Human类是public的,其构造方法也是public的,所以任意其他对象都可以调用该类。我们之前说过,一个Java文件中只能有一个public的类,该类要去.java文件同名。一个类可以没有public关键字,它实际上也表示一种权限: 该类在它所在的包中可见。也就是说,包中的其他Java程序可以访问该类。这是Java中的默认访问权限。

同样,对象的成员也可以是默认权限(包中可见)。比如我们去掉getHeight()方法前面的public关键字。

 

包的调用

我们只需要将Human.java编译的Human.class放入相应的文件夹就可以了。比如,我将Human.class放入com/vamei/society/中。实际上,你也可以把.java文件放入相应路径,Java会在使用时自动编译。

如果整个包(也就是com文件夹)位于当前的工作路径中,那么不需要特别的设置,就可以使用包了,比如下面的TestAgain.java:

复制代码
import com.vamei.society.*;

public class TestAgain
{
    public static void main(String[] args)
    {
        Human aPerson = new Human(180);
        System.out.println(aPerson.getHeight());
    }

}
复制代码

import用于识别路径。利用import语句,我们可以引入相应路径下的类。*表示引入society文件夹下的所有类。在TestAgain中,我们直接使用了Human类。

 

 

我们也可以提供类的完整的路径。这可以区分同名但不同路径的类,比如:

复制代码
public class TestAgain
{
    public static void main(String[] args)
    {
        com.vamei.society.Human aPerson = 
                  new com.vamei.society.Human(180);
        System.out.println(aPerson.getHeight());
    }

}
复制代码

由于我们提供了完整的类路径,所以不需要使用import语句。

 

如果包没有放在当前工作路径下,我们在使用包时,需要通知Java。比如,我们将包放在/home/vamei/javapackage中,这样Human.class位于/home/vamei/javapackage/com/vamei/society/Human.class,而我们的工作路径为/home/vamei。这样,包就无法被找到。一个方法是在使用javac和java时,用-classpath说明包所在的文件夹路径,比如:

$javac -classpath /home/vamei/javapackage:. TestAgain.java

$java -classpath /home/vamei/javapackage:. TestAgain

就是从/home/vamei/javapackage和工作路径(.)中寻找包。Java可以从/home/vamei/javapackage中可以找到Human类,从.中可以找到TestAgain类。

另外也可以设置系统的CLASSPATH环境变量,将上述路径加入到该变量中,而不用每次都键入-classpath选项。

 

类似于包的机制在其他语言中也很常见,比如Python中的import机制。它们都是为了更好的组织和使用已有的程序。利用包,我们可以比较容易的拓展Java程序,使用已有的Java程序库。注意到,包管理的是.class文件。Java号称"一次编译,处处运行" (Compile Once, run anywhere)。.class文件可以在任意装有Java虚拟机(JVM, Java Virtual Machine)的平台上运行,这帮助我们克服了系统差异造成的程序移植困难。

系统之间的差异可以非常大。如果我们用C语言编写程序,需要将源程序在各个平台上重新编译,以适应不同的硬件条件。 Java虚拟机衔接了平台和Java宇宙,它构成了硬件和编程逻辑的中间层。JVM隐藏了硬件差异,提供给程序员一个“标准”的Java宇宙。而.class文件可以看做这个 Java宇宙中流通的通货。在JVM的基础设施下,加上包的管理辅助,Java程序实现了良好的可移植性(portability)。

 

总结

package, import

默认权限: 包中可见

-classpath, CLASSPATH

SAP BTP Trial 生命周期全解析:90 天试用、30 天活跃规则、Kyma 有效期与向 Free Tier 的顺滑迁移 摘要: SAP BTP免费试用账号(trial)提供90天有效期,需每30天登录一次保持活跃状态。Kyma运行时有效期仅14天,需特别注意重建。到期后数据不可恢复,建议将关键配置脚本化并保存。若需长期使用,可迁移至无时间限制的免费层(free tier)。文章详细拆解了试用生命周期规则,包括续期、删除机制,并针对CAP开发、集成套件和Kyma等场景提供实操建议,帮助用户规避常见误区,高效利用试用资源。(150字) 阅读详情

相关推荐

现控报告-- 分析倒立摆系统稳定性、能控性及能观性分析,设计PID控制方案(附matlab)

建立直线一级倒立摆系统的动力学模型,推导该系统的运动方程,求出直线一级倒立摆系统传递函数模型及空间状态方程模型。接着描述了PID控制系统设计原理及PID控制器各校正环节的作用,简要叙述了参数的整定方法。设计了直线一级倒立摆摆杆摆角及小车位置常规单回路控制器,通过Simulink仿真知道常规单回路控制器能控制摆杆摆角,不能控制小车位置。于是设计出了直线一级倒立摆双闭环控制器及基于倒立摆系统的状态空间方程控制器,利用软件进行仿真,仿真结果表明,常规双闭环控制方案和基于状态空间方程加控制方案均能对摆杆摆角及小车位

mengshenglo的博客 4万+

常用java程序包

多用几次就熟悉了,多看下常用的包:1、java.lang包:java的核心类库,包含了运行java程序必不可少的系统类,如基本数据类型、基本数学函数、字符串处理、线程、异常处理类等,系统缺省加载这个包2、java.io包:java语言的标准输入/输出类库,如基本输入/输出流、文件输入/输出、过滤输入/输出流等等3、java.util包:包含如处理时间的date类,处理变成数组的Vect

mengyuan10的专栏 1518

GprMax正演模拟:为什么你的反射波‘消失’了?可能是直达波在捣鬼(附Python后处理脚本)

本文深入探讨了GprMax正演模拟中反射波信号被直达波淹没的现象,并提供了Python后处理脚本的实战指南。通过时域置零、自适应增益控制、频域滤波等多种技术,有效增强反射波信号,帮助用户解决探地雷达模拟中的常见问题。文章还包含详细的代码示例和效果评估方法,适合GPR数据处理的研究人员和工程师参考。

weixin_29305313的博客 232

一、java基础包总览

一、java基本类库 java.applet 是创建APPLET的必须包;包含applet运行时所需要的一些类 java.awt 提供图形用户接口的能力 java.beans 允许你建立软件组件 java.io ...

M_azed的博客 540

别再纠结了!手把手教你根据项目需求选对目标检测框架(MMDetection/Detectron2/YOLOv8实战对比)

本文详细对比了三大目标检测框架MMDetection、Detectron2和YOLOv8的适用场景与实战技巧,帮助开发者根据项目需求精准选型。从毕业设计到工业落地,分析不同场景下的核心需求与框架优势,提供决策树和避坑指南,确保技术选型与项目目标高度匹配。

weixin_30342209的博客 554

使用 Python 获取实时港股行情数据

在本教程中,你将学习如何通过 Infoway API 获取港股实时行情数据,具体以腾讯控股(0700.HK)和汇丰控股(0005.HK)为例,使用 Python 进行数据请求和解析。

kk_stoper的博客 1516

Java进阶?你可以看看这些

学习的路上一个人是孤单的,一群人学习是孤单的狂欢。今天给大家精心推荐几个Java原创公众号,覆盖了几乎所有Java开发的领域,各个公号擅长的领域不一样,有擅长JVM的、J...

Java团长的博客 273

详解Pytorch求导

本文主要详解Pytorch求导,希望能对学习Pytorch的同学有所帮助。 文章目录 1. pytorch求导问题 2. pytorch三大类求导代码示例 2.1 标量求导 2.2 向量求导&矩阵求导

weixin_43178406的博客 3073

java基础07 包,jar包

包 1 包概述 (1) 作用 a 对类文件进行分类管理 b 给类提供多层命名空间 (2)、特点 a 写在程序文件的第一行 b 类名的全称是 包名.类名 c 包也是一种封装形式 2包的定义 (1)、定义包的关键字是packet (2)、包名所有字母小写 (3)、异常:NoClassDefFoundEr

u011504232的专栏 860

【LangChain编程:从入门到实践】实现多模态代理

【LangChain编程:从入门到实践】实现多模态代理 关键词:LangChain, 多模态代理, 自然语言处理, 机器学习, 知识图谱, 对话系统, 代码生成, AI代理 1. 背景介绍 随着人工智

欢迎来到我的优快云空间!这里聚焦AI大模型应用实战,分享前沿技术、实战案例与开发经验。 581

thermal系列(5)-DTSI中配置Thermal

By: fulinux E-mail: fulinux@sina.com Blog: https://blog.youkuaiyun.com/fulinus 喜欢的盆友欢迎点赞和订阅! 你的喜欢就是我写作的动力! 目录thermal系列目录DTSI中配置ThermalDTSI节点类型描述CPU0的配置举例CPU核hot-plugging举例修改热缓解阈值DTSI的node中带有tracks-lowDTSI中关闭某个Thermal Zones thermal系列目录 thermal系列(1)-引言部分 thermal.

fulinux的博客 1232

Java零基础系列教程07有参方法和包

配套视频教程 本文B站配套视频教程 为什么要用带参数的方法 定义带参数的方法 参数列表: (数据类型 参数1,数据类型 参数2…) public class ZhazhiJi { public String zhazhi ( String fruit ) { String juice = fruit + "汁"; return juice; } } 调用带参数的方法 /*调用zhazhi方法*/ ZhazhiJi myZhazhij

douyh的专栏 617

企业级AI平台架构设计:AI应用架构师的未来趋势

企业级AI平台是AI从“实验室”走向“生产线”的关键,而AI应用架构师就是这条“生产线”的总设计师。未来,随着生成式AI、边缘计算、自治式AI的发展,架构师的角色将越来越重要——他们不仅要构建技术平台,还要连接技术与业务,让AI真正创造价值。“不要做‘只会调模型的工程师’,要做‘能解决业务问题的架构师’。因为,真正有价值的AI,从来不是“最先进的模型”,而是“能落地、能复用、能创造业务价值的平台”。愿你在企业AI转型的浪潮中,成为那个“搭建桥梁的人”——连接技术与业务,连接现在与未来。

小程序开发 973

Java零基础-07-包/import/IDEA

javase

u010953852的专栏 358

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

import com.google 报错

问题: 在打开NFCDemo时, import com.google.common.base.Charsets; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableMap; import com.google.common.collect.Iterables;

Holinan的专栏 1372

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Java基础——JAR包和WAR是什么?有何区别?

在Java应用开发中,JAR(Java ARchive)包和WAR(Web Application Archive)包是两种常见的打包格式,分别用于不同类型的Java应用程序。下面是对JAR包和WAR包的详细介绍,包括它们的定义、结构、使用场景、创建和部署方式等方面的内容。JAR文件的主要作用是将Java应用程序的多个文件整合成一个文件,便于分发和执行。WAR包将Java类文件、HTML文件、JSP文件、CSS文件、JavaScript文件以及Web应用的配置文件(如。目录,用于存储元数据。

qq_42631788的博客 3096
上一篇: Java基础06 组合
下一篇: Java基础08 继承
袖手红尘
博客等级 码龄13年 11粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值