/* 

  包: 

  Java中的包就相当于Windows文件夹。 





  包的作用: 

      1.解决类名重复产生冲突的问题 

2.便于软件版本的发布。 



 定义包的格式: 

     package 包名; 

 包名的命名规范:包名全部小写 



 包语句要注意的事项: 

     1.package语句必须位于Java文件中第一个语句。 

     2.如果一个类加上了包语句,那么该类的完整类名就是:包名.类名 

     3.一个Java文件只能有一个包语句 

 问题:每次编译的时候都需要自己创建一个文件夹,把对应的class文件存储到文件夹中。烦!! 



    javac -d 指定类文件的存放的路径 



 */ 

 package aa; 

 class Demo1  

 { 

public static void main(String[] args)  

{ 

System.out.println("这个是Demo1的main方法"); 

} 
}
package bb;
 class Demo1 
 {
public static void main(String[] args) 
{
System.out.println("这个是Demo2的main方法");
}
 }
/*


 有了包之后类与类之间的访问


 问题:有了包之后类与类之间的访问每次都必须要写上包名!烦!!


 解决方案:sun提供导包语句让我们解决该问题。


 导包语句的作用:简化书写。(误区:把一个类导入内存中)




 导包语句的格式:
     import 包名.类名 (导入xxx包中的某个类)




 导包语句要注意的细节:
     1.一个java文件中可以出现多句导包语句
2."*"是导包语句的通配符,可以匹配任何的类名,不能匹配包名。
     3.import aa.*;是不会作用于aa下面的子包的。
 推荐使用import 包名.类名  因为使用*通配符的结构不清晰。


 什么时候使用import语句:
     1.相互访问的两个类不是在同一个包下面,这时候就需要使用到导包语句。
2.java.lang包是默认导入的,不需要我们自己导入。


导包语句的格式:
   import 包名.类名
import 包名.*;
 */


 package aa;
 public class Demo3 
 {
static{


System.out.println("这是Demo3的静态代码块");
     }
public  void print() 
{
System.out.println("这个是Demo3的print方法");
}
 }package bb;
 import aa.*;
 import aa.Demo3;
 //import cc.Demo5;
 class Demo4 
 {
public static void main(String[] args) 
{
Demo3 d1 = new Demo3();
d1.print();
int[] arr= {1,234,3}
Arrays.sort(arr);
Obj


/*
Demo5 d2 = new Demo5();
d2.test();
*/




}
 }
package aa;
 public class Demo5 
 {
static{


System.out.println("这个是Demo5的静态代码块");



}
public void test() 
{
System.out.println("这个是Demo5的test");
}
 }

/*
 权限修饰符:权限修饰符就是用来控制被修饰的成员的范围的可见性。
          public(公共的)  protected(受保护的)  default(缺省)   private(大到小)


 同一个类      true        true                   true                  true


 同一个包      true        true                   true                  false 




 子父类        true         true                  false                 false




 不同包        true          false                 false                 false




 注意:在不同包下面只有public与protected可以访问,而且protected必须是在继承关系下
 */
 package aa;
 class Demo7 
 {
public static void main(String[] args) 
{
protected int i=10;
System.out.println("Hello World!");
}
 }package aa;
 class Demo8 
 {
public static void main(String[] args) 
{
System.out.println("Hello World!");
}
 }

/*
 打jar包:需要使用到jdkde 开发工具(jar.exe)
 jar的用法:
     使用格式:


      jar  cvf jar文件的名字 class文件或者文件夹


 打jar包要注意的事项:
      1.一个程序打完了jar之后必须要在清单文件上指定入口类:格式 Main-Class: 包名.类名
 
2.jar包双击运行仅对于图形化界面的程序起作用,对控制台的程序不起作用。


 jar文件的作用:
     1.方便用户快速运行一个项目
2.提供工具类以jar包的形式给别人使用。


 如果使用jar包里面的类必须先设置classpath路径。
 jre = jvm + 核心类库
 */


 package qq;
 import javax.swing.*;
 class Demo9 
 {
public static void main(String[] args) 
{
//System.out.println("QQ程序");
JFrame frame = new JFrame("QQ程序");
frame.setSize(400,500);
frame.setVisible(true);//设置窗口可见
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);


}
 }
import myutil.MyArrays;
 class Demo10 
 {
public static void main(String[] args) 
{
int[] arr = {5,1,3,6};
System.out.println(MyArrays.toString(arr));
}
 }