栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

[7] Java包机制

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

[7] Java包机制

Java包机制

文章目录
  • Java包机制
    • 初识Java包
    • 包的定义
    • 命令行创建包
    • Intellij IDEA中创建包
    • 包的导入
    • 包的静态导入

初识Java包

包的本质:包其实就是文件夹

包的用途:主要用来管理类的,当项目做大的时候肯定要写很多的类,如果都放在同一个文件夹下面,就看到得很乱,使用包类整理一下,就看得比较清晰。然后包也可以解决一些类的同名情况,把相同的类放在不同的包,那这两个类就是不一样的。

包的由来:其实也是为了防止重复造轮子,所以Java就把已经写好的类放在一个文件夹中,下次要使用的时候直接导入包然后就直接使用包里面的类就好,这样就不用每次都要写同样的类了。

Java包的关键字 package

包的定义

定义包的格式:

package 包名;

包名的命名规则:

一般包名是按照公司域名起的(倒置)。比如百度:com.baidu.www

个人的话也可以是按博客命名,同样也是倒置。com.Cukor.blog

使用起名的时候用小写。

package关键字要放在类的首行,在它之前不能有其他的语句,否则会报错。

命令行创建包

现在把java源文件写一下:

package com.zhong.www;		//定义包的格式

public class Hello{
    public static void main(String[] args){
        System.out.println("Hello");
        System.out.println("This is test of create package");
    }
}

然后进入命令行去编译Hello.java文件。注意使用的命令

编译后出现了com文件夹。进入com文件夹中看看:

里面存放的是Hello.class文件

然后运行程序看看:

命令行的代码格式是

java 包名.类名

其中.具有分割包的作用,就相当于路径。最后到达.class文件的时候就使用类名就可以了。

  • 对命令行代码的解释:
    • -d 表示的是要生成一个目录,而目录的结构就是package定义的结构
    • . 表示的就是在当前目录下
    • 所以上面的代码表示的意思就是在当前的目录下生成一个子目录
Intellij IDEA中创建包

现在有几个类已经写好了,没有一个包管理一下,现在就几个那还好,如果是多了就难受了,所以建立一个包来管理一下。

给包起个名字:

再在com包中创建包,同样的方法:

最后创建包到blog:

在IDEA中直接鼠标拖动.java文件到com.Cukor.blog中,弹出窗口直接点重构。

然后在com.Cukor.blog包中就会多出一些东西:

这个就是在IDEA中创建包,操作简单,只用鼠标点点点就完事了。

包的导入

导入的关键字是import

再创建一个test包

然后在test包中写测试代码,想要使用到com.Cukor.blog包中的类(MM、GG等类),那就使用import语句将该包中的东西导入到test包中的测试类中:

直接看代码:

//MM类中
package com.Cukor.blog;		//MM类在com.Cukor.blog中,已经写好,代码如下

public class MM {
        private String name;
        int age;
        int faceScore;
        public MM(String name,int age,int faceScore){
                this.name=name;
                this.age=age;
                this.faceScore=faceScore;
        }
        public void printInfo(){
                System.out.println(this.name+"t"+this.age+"t"+this.faceScore);
        }
}

//在TestCode类中
package test;

import com.Cukor.blog.MM;	//导入com.Cukor.blog包中的MM类

public class TestCode {
        public static void main(String[] args) {
                MM mm=new MM("Alice",20,100);
                mm.printInfo();
        }
}

输出结果:

Alice	20	100

如果在com.Cukor.blog包中还有很多类,testCode类中也都想使用com.Cukor.blog包中的类就必须将com.Cukor.blog包导入进来,有两种方案:

  • 按照上面的方式:包名.类名 一个个导入
  • 使用新方式:包名.* 使用了通配符“*”,告诉JDK,自己去找相应的类导进来。很方便。

上面两种方式,效果和性能都是一样的,当包中的类很多的时候使用第一种方法就不太合适了,因为要写很多代码。

看看代码实现:

现在个包com.Cukor.blog,里面有MM类和GG类

package com.Cukor.blog;

public class MM{
    private String name;
    private int age;
    private int faceScore;
    public MM(String name,int age,int faceScore){
        this.name=name;
        this.age=age;
        this.faceScore=faceScore;
    }
    public void printInfo(){
        System.out.println(this.name+"t"+this.age+"t"+this.faceScore);
    }
}
package com.Cukor.blog;

public class GG{
        private String name;
    private int age;
    private int money;
    public MM(String name,int age,int money){
        this.name=name;
        this.age=age;
        this.money=money;
    }
    public void printInfo(){
        System.out.println(this.name+"t"+this.age+"t"+this.money);
    }
}

测试类:(在test包中)

package test;

import com.Cukor.blog.MM;	//导入com.Cukor.blog包中的MM类
import com.Cukor.blog.GG;	//导入com.Cukor.blog包中的GG类

public class TestCode {
        public static void main(String[] args) {
                MM mm=new MM("Alice",20,100);
                mm.printInfo();
            	GG gg=new GG("Jack",21,8888);
                gg.printInfo();
        }
}

输出结果:

Alice	20	100
Jack	21	8888

把测试代码改改:

package test;

import com.Cukor.blog.*;	//让JDK自己去找

public class TestCode {
        public static void main(String[] args) {
                MM mm=new MM("Alice",20,100);
                mm.printInfo();
                GG gg =new GG("Jack",21,8888);
                gg.printInfo();
        }
}

输出结果:

Alice	20	100
Jack	21	8888

通过测试后发现两个代码的效果是一样的。

包的静态导入

当一个类中的全部方法都使用了static修饰,可以采用静态导入的操作。

现在有一个类,类中的方法都使用static修饰,意味着这些方法可以直接调用不需要对象来调用。

package com.Cukor.blog;

public class HaveStatic {
        public static int sum(int a,int b){
                return a+b;
        }
        public static int max(int a,int b){
                return a>b?a:b;
        }
}

然后在测试类中静态导入

package test;

import static com.Cukor.blog.HaveStatic.*;	//静态导入的写法

public class TestCode {
        public static void main(String[] args) {
                int result=sum(99,55);
                System.out.println(result);
                result=max(99,55);
                System.out.println(result);
        }
}

输出结果:

154
99

学Java找Cukor丘克

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/358050.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号