Java基础总结
来源:互联网 发布:淘宝详情页ps怎么切片 编辑:程序博客网 时间:2024/06/14 12:33
1.为什么需要包(package):
如果所有源文件都写在当前目录下,如果出现同名的文件就会出错,所以我们使用包package将他们层次分开
2.编译带包的java原文件后怎么运行编译出的.class文件
当我编译一个带包声明class A,即使我们cd到包目录下也无法运行这个编译后的字节码文件,这是因为在编译后这个类名字已经不再是A 而是带包申明的A,例如cn.jxau.cl.A;当我们cd到包下运行java A;这样名字名字类A与cn.jxau.cl.A不匹配就找不到,
而我们在包下运行java cn.jxau.cl.A,也是不行的,因为这个是名字的同时也是一个路径,java回去包目录下的/cn/jxau/cl找字节码文件它总的路径变成了/cn/jxau/cl/cn/jxau/cl,这下面并没有A字节码文件。
所以我么只能在跟目录下运行java cn.jxau.cl.A,这样既通过路径找到A字节码文件,切里面存放的又是名为cn.jxau.cl.A的类符合这两个条件。
3. 学习过程中碰到过这样一个问题,在源文件存在的情况下,使用import cn.jxau.cl.A是可以的,而使用import cn.jxau.cl.*可能会出错
这个原因要从这两种导包的原理说起:
Java中有两种包的导入机制:
单类型导入(single-type-import),例如import java.io.File:因为包名和文件名都已经确定,可以一次性查找定位到。
按需类型导入(type-import-on-demand),例如import java.io.*:编译器会把包名和文件名进行排列组合,然后对所有的可能性进行类查找定位。
例如:package com;
import java.io.*;
import java.util.*;
当你的类文件中使用到了File类,那么File可能会出现在以下几个地方:
1 File File没有package语句,编译器首先搜索无名包。问题就出现在这里,它找到了与类名相同的.java文件就会报不是.class文件错误
2 com.File File类属于当前包。
3 java.lang.File 自动导入
4 java.io.File
5 java.util.File
另外需要注意的是,上面的第4种情况下,编译器找到java.io.File后并不会停止下一步的搜寻,而是把所有的可能性都查找完以确定没有类冲突,如果有类冲突,则会报错,删除不用的类后再编译。假使此时的顶层路径有3个,编译器则会进行3*5=15次查找
- 【总结】Java基础总结⑵
- 【总结】Java基础总结⑶
- 【总结】Java基础总结⑷
- 【总结】Java基础总结⑸
- 【总结】Java基础总结⑹
- 【总结】Java基础总结⑺
- java基础的总结
- java基础总结知识点
- JAVA基础总结
- java基础总结
- Java基础小小总结
- Java基础概念总结
- Java语言基础总结
- java基础总结
- Java基础学习总结
- java基础总结
- java 基础语法总结
- java基础--线程总结
- Redis和Memcache的区别
- CodeForces344B
- layer中父子层的信息交互
- Linux 调试器之处理变量!
- Logistic Regression及python实现
- Java基础总结
- ShadowImageView 阴影效果
- spring data jpa使用二级缓存
- C++的发展
- 关于电源去耦
- bzoj1951 [Sdoi2010]古代猪文 ( 欧拉定理+CRT+lucas )
- ARM汇编伪指令
- 模拟实现strcpy函数
- 大数据分析:某日头条搜索java的分词报告