基础概念2

 

 

1、foreach语句即增强for循环的使用。   2016-5-26

优点:代码整洁,减少了代码量。

缺点:只可以单纯的遍历数组和集合,不可以操作。

举例如下:

class Demo 
{
	public static void main(String[] args) 
	{
		int[] arr=new int[10];
		int a=0;
		//使用普通for循环赋值
		for(int i=0;i<arr.length;i++)
		{
			
			arr[i]=a++;
		}

        //使用高级for循环来读取数组
		for(int i:arr)
		{
			System.out.println(i);
		}
		
	}
}




2、变量的表面类型和实际类型        2016-6-7

      在Java中,只要定义变量就必然要有类型,一个变量可以有两种类型:表面类型和实际类型。表面类型是在定义的时候赋予的类型,实际类型是对象的类型。

interface Person{
	void run();
	
}
class People implements Person{

	@Override
	public void run() {
		System.out.println("人在行走。。。");
		
	}
	
}

public class  PicClient
{
	public static void main(String[] args)
	{
		Person p=new People();
		p.run();
	}
} 

如代码中所示:主函数中对象p的表面类型是接口Person类型的,但是其实际类型是类People类型的



3、数据结构     2016-06-20

各种数据结构所表示的即和特点说明如下:

(1)线性表表示可重复的无序集合,元素间具有前驱和后继次序关系;不同元素的关键字可以重复,采用序号能够识别关键字重复的数据元素。

(2)排序线性表表示可重复的排序集合,元素按关键字的大小次序排序。

(3)散列表表示不可重复的无序集合,元素关键字不可重复,元素间没有次序,不排序。

(4)二叉排序树表示不可重复的排序集合,元素关键字不重复,元素按关键字升/降序排序。



4、模板方法模式        2016-07-08

模板方法模式就是在模板方法中按照一定的规则和顺序调用基本方法。




5、排序算法总结                  2016-07-10

(1)冒泡排序,直接插入排序以及直接选择排序算法的时间复杂度为O(n2),这些排序算法简单易懂,思路清晰,算法结构为两重循环,共进行n-1趟,每趟排序将一个元素移动到排序后的位置。数据比较和移动在相邻两个元素之间进行,每趟排序与上一趟之间存在较多重复的比较、移动和交换,因此排序效率较低。

(2)希尔排序、快速排序以及堆排序、归并排序效率较高。其共同特点为:与相邻较远的元素进行比较,数据移动距离较远,跳跃式的向目的地前进,避免了许多重复的比较和数据移动。




6、Java字节流和字符流的区别                     2016-07-21

(1)字节流操作字节(8位),字符流操作字符(2个字节,16位)。

(2)字节流不进行close操作,仍然可以输出。

          字符流则必须进行close操作才能输出。因为字符流使用了缓冲区,没有close关闭字符流时,也可以使用flush操作来强行将缓冲区数据输出。




7、js里边是否存在函数重载?                           2016-07-27

答:(1)js里边不存在重载。

        (2)但是可以使用别的方法来模拟函数重载的效果。利用arguments数组,判断接收到几个参数,然后执行相应的操作,实现重载的效果。


8、工厂方法模式和抽象工厂模式的区别:                                         2016-08-25

答:厂方法模式是一种极端情况的抽象工厂模式,而抽象工厂模式可以看成是工厂方法模式的一种推广。
(1)、其实工厂方法模式是用来创建一个产品的等级结构的,而抽象工厂模式是用来创建多个产品的等级结构的。工厂方法创建一般只有一个方法,创建一种产品。抽象工厂一般有多个方法,创建一系列产品。 
(2)、工厂方法模式只有一个抽象产品类,而抽象工厂模式有多个。工厂方法模式的具体工厂类只能创建一个具体产品类的实例,而抽象工厂模式可以创建多个。 
简而言之-> 
工厂方法模式:     一个抽象产品类,可以派生出多个具体产品类。   
                              一个抽象工厂类,可以派生出多个具体工厂类。   
                              每个具体工厂类只能创建一个具体产品类的实例。   
抽象工厂模式:     多个抽象产品类,每个抽象产品类可以派生出多个具体产品类。   
                              一个抽象工厂类,可以派生出多个具体工厂类。   
                              每个具体工厂类可以创建多个具体产品类的实例。 


9、简单工厂模式和工厂方法模式的区别:   2016-08-25

答:简单工厂模式将抽象工厂类去掉,并且将具体工厂类中的方法设置为静态的。这样可以直接通过类来调用方法,即不需要将该工厂创建出来。是一种工厂方法模式的弱化模式,其不符合开闭原则,但是仍然是一种极其好用的设计模式。



10、数组有没有length()方法?String有没有length()方法?   2016-09-03
答:数组没有length()方法,有length 的属性String 有length()方法。JavaScript中,获得字符串的长度是通过length属性得到的,这一点容易和Java混淆。



11、为什么不可以以返回值区分重载方法?      09-03

  如下两个方法:

    void f(){}

    int f(){ return 1;}

只要编译器可以根据语境明确判断出语义,比如在int x = f();中,那么的确可以据此区分重载方法。不过,有时你并不关心方法的返回值,你想要的是方法调用的其他效果(这常被称为“为了副作用而调用”),这时你可能会调用方法而忽略其返回值,所以如果像下面的调用:

    fun();

此时Java如何才能判断调用的是哪一个 f() 呢?别人如何理解这种代码呢?所以,根据方法返回值来区分重载方法是行不通的。

 

以上参考《Java 编程思想》 







posted on 2016-05-26 21:59  岚之山  阅读(171)  评论(0编辑  收藏  举报

导航