Java基础-第一天

时间:2022-05-05 00:31:01

一、Eclipse常用快捷键:

内容提示:Alt+/

快速修复:Ctrl+1

导包:Ctrl+shift+O

格式化代码块:Ctrl+shift+F

向前向后:Alt+方向键

添加注释:Ctrl+shift+/

去除注释:Ctrl+shift+\

程序的调试和运行:F5(跳入)、F6(跳过)、F7(跳出)

二、JUnit4详解:

http://www.cnblogs.com/eggbucket/archive/2012/02/02/2335697.html

三、语法概念:

3.1迭代器

Iterator是一个接口,它有三个方法,分别是next(),hasNext(), remove();

这三个方法都没有参数

next()返回泛型对象

hasNext()返回一个boolean型,用来标志是否还有元素

这俩相对好理解。

remove(),就是要删除一个元素。到底删除谁?

假如有一个List里面有 a,b,c,d,e。我们想要删除掉c,怎么删。

ArrayList有一个方法可以找到c然后把它删掉,如果要是For循环的话,记得删掉了就break;

其实还有另外一个方法,就是用这个Iterator;

Iterator i = someList.iterator();
i.next();
i.next();
i.next();
i.remove();

如此一来就把c删掉了。

核心JAVA中是这么说的,Iterator对象存在于一个list的各个元素之间,从第一个元素前面开始,一直到最后一个元素的后面。

每调用一次next()方法就会往后跳一下,返回被跳过元素的引用。以备remove来删除。。。

也就是说,不能没有调用next()方法就直接调用remove()方法。

3.2自动装箱/拆箱

自动装箱:指开发人员可以把一个基本数据类型直接赋值给对应的包装类。

自动拆箱:把一个包装类对象直接赋给对应的基本数据类型。

3.3增强for循环

增强for循环只能用在数组、或实现Iterable接口的集合类上。

//集合类:?

语法格式:

For(变量类型 变量:需迭代的数组或集合){

}

3.4集合类

Map集合、HashMap集合、ArrayList集合、Integer集合、set集合

HashMap&LinkedHashMap

http://blog.csdn.net/touchsea/article/details/750923

3.5泛型

Map<K,V> map=new HashMap();

http://blog.csdn.net/csh624366188/article/details/7314991

四、遇到的问题

publicclass LoadBox{

      

       public static void main(String[] srgs){

             

              List list=new ArrayList();

              list.add(1);   //装箱

              list.add(2);

              list.add(3);

             

              Iterator it=list.iterator();

              while(it.hasNext()){

                     intj=(Integer)it.next();  //拆箱

                     System.out.print(j+"");

              }

       }

}

为什么ArrayList换成List就不行?

 

4.1剖析:

Console输出如下:

Exception in thread "main" java.lang.Error:Unresolved compilation problems:

       Typemismatch: cannot convert from ArrayList to List

       The methodadd(String) in the type List is not applicable for the arguments (int)

      

       The methoditerator() is undefined for the type List

出错的原因在于导入的包不对。

这个例子的错误在于导入了java.awt.List包,因为Iterator, List等都是util的工具类,所以应该导入java.util.List这个包。

 

4.2延伸:java.util.List与java.awt.List有什么区别

A: java.util.*与java.awt.*都是java的标准库包,其中*表示java.util和java.awt包里的所有类。 她们的不同之处在于java.util.*包含的是一些工具类,如集合类中List、Map、HashMap、Set等,而java.awt.*则封装的是和图形绘制相关的类,如点Point、线Line等。用到相应包里的类时,就会相应import相应的包。

 

如果把这个例子的List list=new ArrayList();换成ArrayList list=new ArrayList();就可以呢?即使是导入了awt包,我不是很明白

但我觉得应该搞清楚接口与类的区别,以及类的转型问题,百度了一下:

(1)List和ArrayList的区别

为什么会有如下的写法呢?
List list=new ArrayList();
Set set=new HashSet();
之类的写法啊?

 

A1: List是一个接口,是Collection接口的一个子接口。是一个有序的集合。而ArrayListList的一个实现类,可以实现数组大小的可变,可以很方便的进行增加和删减数组内元素的操作。

List list=new ArrayList();
这种形式成为向上转型,ArrayList实现了List接口,可以看成是从List继承而来,一个子类的对象可以指向它父类。比如,狗从动物继承而来,狗是一只动物,所以狗的对象可以当作一只普通的动物来看待。
A2List是一个接口,而ArrayList 是一个类。 ArrayList 继承并实现了List
List list = new ArrayList();
这句创建了一个ArrayList的对象后把上溯到了List。此时它是一个List对象了,有些ArrayList有但是List没有的属性和方法,它就不能再用了。而ArrayList list=new ArrayList();创建一对象则保留了ArrayList的所有属性。
 

2)ArrayList、linklist、list的区别

 

A: List是一个接口,ArrayListLinkedList是两个实现类,他们实现的方式不一样,其实LinkedList才是真正的链表(如果不清楚什么是链表,需要了解一下相关数据结构的知识,这不是一两句话能说清楚的),而ArrayList是用数组实现的,它不是真正的链表,在初始化的时候它先对数组设置一个初始容量,当数组空间不够的时候,它会重新构建一个容量更大的数组,然后把先前的元素拷贝进去。
ArrayList
LinkedList本质上的区别就是数组和列表这两种数据结构的区别。课参阅相关数据结构的知识。
我这里简单的为你归纳几点:
ArrayList
:缺点:内存使用量要大一些,添加删除元素效率较低。元素随机访问的效率较高。
LinkedList
:相反。

五、相关概念:

JDK(Java DevelopmentKitJava开发包,Java开发工具)是一个写Javaapplet和应用程序的程序开发环境。它由一个处于操作系统层之上的运行环境还有开发者编译,调试和运行用Java语言写的applet和应用程序所需的工具组成。

JDK(Java Development Kit)Sun Microsystems针对Java开发员的产品。自从Java推出以来,JDK已经成为使用最广泛的Java SDKSoftware development kit)。

JDK包含的基本组件包括:

   ·javac – 编译器,将源程序转成字节码

   ·jar – 打包工具,将相关的类文件打包成一个文件

   ·javadoc – 文档生成器,从源码注释中提取文档

   ·jdb – debugger,查错工具

JDK中还包括完整的JREJava Runtime EnvironmentJava运行环境),也被称为private runtime。包括了用于产品环境的各种库类,以及给开发员使用的补充库,如国际化的库、IDL库。

JDK中还包括各种例子程序,用以展示Java API中的各部分。