包
关键字: package
一个包就相当于一个文件夹
包必须写在该包里面所有类的上方
格式: package demopackage(包名全小写);(分号)
如果手写dos命令那么需要用命令来创建一个包
javac -d .....(文件路径) + 编译的主类(注意如果位置不同要将包所在的路径定义到classpath里面) set classpath = ,,,,
四个关键字的作用域 public > proteted > default > private
proteted 受保护的
default 默认权限
public proteted default private
同类 √ √ √ √
同包 √ √ √ ×
不同包子类(继承或实现) √ √ × ×
不同包非子类 √ × × ×
一个函数如果要被外部类调用,那么该函数和类都要public
一个类其实默认了包名为该目录,如果要调用另一个包名的类那么要 包名.类名
如果包名很长很长那就很麻烦
关键字 import 导入
意思为导入这个包,那么就能直接写类名,注意不能有导入两个包时,而调用的那个类在这两个包里面都共有,会产生编译错误
* 通配符可以 实例 import pack1.pack2.*
假设pack1里面有pack2
pack2里面有pack3, pack4
那么这样做可以使pack3, pack4都被导入
这样做也有一个缺点,就是如果这个pack2 里面有100个文件夹,而我们只要2个文件夹,对内存的消耗会很大,不建议这样写
在高级编译器里面可以简化这一操作
一般为了防止冲突会用Url来作为名称(域名)
线程
每一个进程里面都有好多线程
因为java 拥有垃圾处理机制,假设不考虑其他的线程,那么一个进程里面肯定会有一个垃圾处理机制和主函数的线程
这个主函数的线程就是main 所以运行的时候要写一个main函数
线程的出现一定程度上能加速程序的运行
关键字 Thread 线程
如果要调用只要继承这个线程并且覆盖run函数,run函数里面的东西就是我们要运行的代码
start()功能运行线程
class test extends Thread { public void run() { for(int i = 0; i < 100; i++) System.out.println("Hello Thread"+i); } } class demo_线程 { public static void main(String[] args) { test demo = new test(); demo.start(); //demo.run(); for(int i = 0; i < 100; i++) System.out.println("Hello default"+i); } }
实现了多进程
如果只写了run那么只会从上到下一次运行
getName
getPackage
函数