包和jar命令-21

在开发系统中很多人参与的,避免同名,可用不同文件夹中可以保存同名文件。所谓的包实际就是一个文件夹
在工作之中,所有的类都一定要放在包之中(不存在没有包的类),每一个类的完整名称都是“包.类”。
定义包:
package cn.mldn.drmo;//定义包
public class Hello{
}
本程序与之前只是多了一个package;
javac -d . Hello.class;语法的意义如下:
“-d”:表示生成文件夹,而文件夹的名称就由package定义;
“.”:表示在当前所在的目录下保存生成的包“Hello.class”文件
那么在一个类编译完成之后执行的时候不要进入到包中执行,即“java cn.mldn.drmo Hello”


包的导入:
有了包的定义之后,实际就将一个完整的项目按照功能保存在不同的包之中。这些包中的类进行互相访问,那么此时使用impcet关键字使用所需数的包
范例:定义一个cn.mldn.drmo Info类:
pachage cn.mldn.drmo;
class Info{
public String getMsg(){ 
return "Hello World";}
}
范例:定义使用Info类
pachage cn.mldn.test;
import cn.mldn.util,Info;//导入类
class TestInfo{
public static void main(String args[]){
Info info=new Info();
System.out.println(info.getMsg());
}
}
总结:关于两种类声明的区别
public class 类名称:文件名称要与类名称保持一致,如果一个类需要被外包所访问那么必须使用public class;
class 类名称:文件名称可以与类名称不同,此个类只希望被本包所访问
范例:修改Info java类
pachage cn.mldn.drmo;
public class Info{
public String getMsg(){ 
return "Hello World";}
}
所以在很多的时候可以使用java的自动联编的方式:“javac -d.*.java”
那么此时可以使用通配符“*‘完成类的自动导入:
import cn.mlan.util *;//导入类
但是使用”*“并不意味着要导入一个包之中的全部类;java在执行的时候只会加载所需要的类,不需要的不加载。
可是也有可能出现这样一种情况,此时有两个Info类(cn.mldn.util,Info msg.Info),因为某种需求,需要在同一程序导入
范例:在TestInfo导入两个包
这两个包都存在有Info类
错误信息:对Info的引用不明确
所以要写完整名称,例如:
package cn.mldn.test;
import cn.mldn.util *;//导入类
import msg *;//导入类
public class TestInfo{
public static void main(String args[]){
cn.mldn.util.Info info=new cn.mldn.util.Info ();
System.out.println(info.getMsg());
}
}


jar命令
项目中的* class文件打成一个压缩文件格式发送给用户,那么这样的格式在java之中使用jar进行表示,而jar时JDK的一个命令
在jar命令之中有三个参数比较重要的;
”-c“:创建新文件;
”-f“:定义生成的jar文件的名称;
”-v“:将压缩的详细信息进行显示。
范例:现在有一个Info.java类
package cn.mldn.util;
public class Info{
public String getMsg(){
return "Hello wordl";
}
}
1.首先将Info.java类进行编译:javac -d .Info.java,一定会形成包类名称;
2.将生成的类进行打包操作:jar -cvf my jar cn,将cn目录下的内容打包成my.jar;
3.此时建立TestInfo.java类,而且my.jar保持在于TestInfo.java同级目录中
但是要想想让*.jar文件之中的类起作用,这必须配置CLASSPATH
SET CLASSPATH=.:d:\javademo\my.jar
但是通过SET编译只能够针对于当前窗口完成,也可以直接编辑CLASSPATH的坏境变量


系统常见包(理解)
几个常见的程序包(java的基础包)
java.lang:包含了一些基本的常用类,例如:String,Integer,Object
java.lang.reflect:反射机制操作包
java.util:java 工具包,里面包含了大量的系统类,例如:数据结构支持
java.util.regex:正则操作包
java.io:文件及数据传输编写
java.net:TCP,UDP程序编译
java.sql:数据库操作:
java applet:开发Applet(应用小程序)程序,不过已经不用了
java.awt  java.swing:GUI开发包,进行图形界开发的
解释关于Applet和Application的区别?
java程序最早的时候时应用在网页上的技术,而当时主推的是Applet,那么Applet需要编写相应的网页程序,将*.class文件嵌套在页面之中才可以执行
而在之前一致所学习的属于Application程序,时利于主方法执行的


访问控制权限(重点)
对于访问控制权限在java之中一共分为四种:private,default,protected,public

范围private default  protectedpublic
1 同一包的同一类可以可以可以可以
2 同一包的不同类不可以可以可以可以
3 不同包的子类不可以不可以可以可以
4 不同包的不同类不可以不可以不可以可以


严格来讲封装应该有三种:private,default,protected 
如果时定义属性用:private
如果是定义方法用:public


命名规范总结:
类名称:每一个单词的开头首字母大写,例如:TsetDemo
方法名称:第一个单词字母小写,而后每个单词首字母大写,例如:printInfo();
属性名称:第一个单词字母小写,而后每个单词首字母大写,例如,studetName;
包名称:所有字母小写,例如:cn.mldn.demo;
常量名称:所有字母大写,例如:INFO;


总结
只要是类就要放在包之中,package,import;
jar只需要知道就行了
四种权限要记住
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值