黑马程序员技术交流社区
标题:
集合类问题
[打印本页]
作者:
\(^o^)/
时间:
2014-4-21 23:48
标题:
集合类问题
本帖最后由 \(^o^)/ 于 2014-4-23 09:56 编辑
import java.util.*;
class CollectionDemo
{
public static void main(String[] args)
{
//创建一个集合容器,使用collection接口的子类,ArrayList
ArrayList a1=new ArrayList();
//添加元素。
a1.add("java01");
a1.add("java02");
a1.add("java03");
a1.add("java04");
//获取个数,集合长度。
sop("size:"+a1.size());
}
public static void sop(Object obj)
{
System.out.println(obj);
}
}
复制代码
为什么在第一行不加import java.util.*;会编译失败,之前写程序的时候也没写过存在哪个包啊。。。
作者:
a3330682
时间:
2014-4-22 00:01
ArrayList这个类是在uilt这个包里面 ;你不导入这个包调用肯定不行啊;
作者:
ノtrack
时间:
2014-4-22 00:15
因为你楼上正解
作者:
左拉
时间:
2014-4-22 00:41
import是导入的意思。
在java里面存在很多个包,每个包都封装了很多类库,那些类都是java语言设计者为开发人员预备的,因为Java的支持开源,所以在JDK安装之后可以阅读源代码(jdk安装路径的src目录下)。
所以,使用import导包的意思就是,你使用了java语言系统中某个包中的类,在程序编译运行的时候jre就能识别出来。
java中的包主要有:
java.lang包:java的核心类库,包含了运行java程序必不可少的系统类,如基本数据类型、基本数学函数、字符串处理、线程、异常处理类等,系统缺省加载这个包
java.util包:包含如处理时间的date类,处理变成数组的Vector类,以及stack和HashTable类
java.awt包:构建图形用户界面(GUI)的类库,低级绘图操作Graphics类,图形界面组件和布局管理如Checkbox类、Container类、LayoutManger接口等,以及界面用户交互控制和事件响应,如Event类
java.net包:实现网络功能的类库有Socket类、ServerSocket类
java.sql包:实现JDBC的类库
java.io包:java语言的标准输入/输出类库,如基本输入/输出流、文件输入/输出、过滤输入/输出流等等
所以在学习java的初级阶段,我们使用一些简单的数据类型计算,输出,转换等等都实际上导入了java.lang这个包,不过在java语言中,这个包是基础包,设置为默认存在,所以不用import语句就可以编译运行。
而在你这个代码中,使用了ArrayList这个类,这个类在java.lang包中是不存在的,它在java.util包中,必须手动导入jre才能识别它是什么(除非你把这个自定义成类)。
自定义包:
我们可以将一些常用的功能写在一个包里面,然后在需要的时候直接导入自定义的包就可以使用自己写的类,这样可以省略很多重复代码,有助于提高编码效率。
自定义包的时候,需要定义一个包名,包名可以随意取,但是普遍的包命名规范是:小写,而且采用域名反转的形式命名,比如可以用org.test.myname的形式,如果是这样的命名形式,那么你的源代码的目录相对路径就是:\org\test\myname\src
假设在自定义的包中定义了一个类Student:
package org.test.myname;
//package表示这是一个用户自定义的包
//自定义一个类
public class Student{
private String name;
//构造方法
public Student(String name){
this.name=name;
}
public String toString(){
return this.name;
}
}
复制代码
那么当你以后要使用Student这个类的时候就可以导入刚才定义的包:
//导入刚才定义的包,JVM就可以识别包中的Student类
import org.test.myname;
public class Test{
public static void main(String[] args){
//使用自定义包中的自定义类
Student stu=new Student("Test-1");
System.out.println(stu);
}
}
复制代码
如果你在包中写了两个类,Student和Teacher,在导包的时候有两种做法
1:根据自己的需要导入相应的类(指定名称)
import org.test.myname.Student;
2:让JVM自动识别包中的类
import org.test.myname.*; 在这里*表示任意的意思,java虚拟机系统会根据代码中出现的类自动导入那个类
这两种做法实际效果是完全一样的,当你在使用Student类的时候,java虚拟机不会对Teacher类进行加载而造成性能的下降。
作者:
四川男人
时间:
2014-4-22 00:53
平时你用的基本上是自己些的类,而ArrayList是JDK封装在类库中的,调用人家的类,导入类的位置
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2