2020/2/21学习笔记-day03

java-day3

目录

java-day3

早上

第一节课

回顾昨天的内容

一个类中没有声明public类(文件名不用和类名一致)

第二节课

回顾程序入口的知识

MF文件最后的样子

压缩成jar包

修改MF文件

通过java包直接运行可执行jar包

第三节课

jar包的打包方式

包含当前文件夹

不包含当前文件夹

下载调用别人的API

下午

第一节课

修改MF文件的时候容易出现的问题

package对class起到的作用

一个类加上包的编译运行

将两个类都加上包编译运行

第三节课

将Person.class打上jar包


早上

第一节课

回顾昨天的内容

注意:编译生产的class文件的名字,不是和java文件名字保持一致,而是和java类的名字保持一致, 因为如果一个java类不是pub1ic的,那么这个类的名字是可以和java文件名字不一致的,但是最后编译生产的class文件会和类的名字保持一致。I

注意: 一个java源文件中,可以编写多个java类,他们是平行/并列的关系,也就是说编译一个java源文件,可能同时生产多个class文件,每一个class文件都对应了这个java源文件中的一个java类

注意: 一个java源文件中,可以编写多个java类,但是最多只能有一个类是public的,而且如果这个类是pub1ic的,那么这个类的名字就必须和java源文件的名字保持一致。

一个类中没有声明public类(文件名不用和类名一致)

 

 

第二节课

回顾程序入口的知识

使用java命令去运行一个类,其实就是运行这个类中的程序入口(main方法)
把java代码编译成class之后,我们还可以把class文件打成一个jar包
 1、jar包本质.上其实就是一个压缩包,使用电脑中的解压缩软件,就可以直接把这个压缩包打开,也可以进行添加、删除和修改等操作。
 2、使用jar命令,就可以完成class的打包工作,打包完成只会,jar中不仅有class文件,还有一些对当前jar做出描述的文件 /META-INF目录下生产一个MF文件。
 3、默认情况下,这个jar是不能直接运行的,也就是它不是一个可执行jar包,我们可以通过对MF文件的修改,让它变成一个可执行的jar包,前提是这个jar中的class文件里面的类中有程序入口。
    修改方式:MF文件中国添加一行内容,格式为key:value
    Main-Class: 包.类名
    如果没有包,那么就直接写类,但是这个类一定有程序入口

MF文件最后的样子

这样子这个jar包就变成一个可执行jar包,通过java命令直接运行
例如:java -jar Hello.jar 

压缩成jar包

修改MF文件

通过java包直接运行可执行jar包

第三节课

jar包的打包方式

jar -cvf hello.jar Hello.class
把当前目录下的Hello.class打到Hello.jar这个jar包当中
​
把当前目录下的Hello.class Person.class打到hello.jar这个jar包中
jar -cvf hello.jar Hello.class Person.class
​
把当前目录下的所有的class打到hello.jar这个jar包中
jar -cvf hello.jar *.class
​
把当前目录下的test文件夹里面的所有文件打到这个jar包中,同时包含test文件夹
jar -cvf hello.jar test/   (/可以不要)
​
把当前目录下的test文件夹里面的所有文件打到这个jar包中,但是不包含test文件夹
jar -cvf hello.jar -C test.

包含当前文件夹

不包含当前文件夹

maven可以收集各个网站的jar包
https://mvnrepository.com/

下载调用别人的API


下午

第一节课

修改MF文件的时候容易出现的问题

1、单词拼写的错误      
错例:Mian-Class
正例:Main-Class
​
2、中英文输入法切换问题 
错例:Main-Class:
正例:Main-Class:
​
3、MF最后要保留一个空行
错例:
--------------------
Manifest-Version: 1.0
Created-By: 1.8.0_74 (Oracle Corporation)
Main-class: Hello
--------------------
正例:
---------------------
Manifest-Version: 1.0
Created-By: 1.8.0_74 (Oracle Corporation)
Main-class: Hello
​
---------------------

package对class起到的作用

在程序中要区分一些东西,我们一般会采用【命名空间】的设计方式
​
在java中,package其实就是class的命名空间,用来唯一标识这个类的
​
一般情况,这个包是一个公司、组织、社团所在的网站,把网址倒过来写
例如: http://commons.apache.org/这个官网下的项目代码中的包都是以pacakge org.apache.commons开头的。
​
一个类加上包名,在编译后这个类的包都必须要有对应的文件夹
​

一个类加上包的编译运行

package com.briup.test;
public class He11o{....}
运行的时候需要加入包名: java com.briup.test.Hello
生成的class文件需要放到和包名对于的目录结构中: com/briup/test/Hello.class
​

在编译一个带包的类的时候,可以添加命令参数,让编译器自动生成和包对应的目录结构

将两个类都加上包编译运行

//Hello类
package com.xxx;
import org.apache.commons.lang3.math.NumberUtils;
public class Hello{ 
    public static void main(String [] args){
        int a=NumberUtils.max(1,2,3);
        System.out.println(a);
        Person.getA();
    }
}
//Person类
package com.xxx;
public class Person {
    public static void getA(){
        System.out.println("hahaha");
    }
}

第三节课

将Person.class打上jar包

发布了82 篇原创文章 · 获赞 52 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/iostream992/article/details/104423025