基础加强一

----------------android培训java培训、期待与您交流! --------------------

 

eclipse开发工具介绍
1、project(工程):
    1)一个工程包含有:包,jar包,资源文件,java源文件等内容。
    2)将一个工程的所有源文件用一个工程来组织,开发工具能对所有源文件集中管理,并且每个源文件的位置和相互关系,配置信息等都在工程中有记录。
2、preferences(首选项):
    在workspace(工作间)中配置的信息,将会影响到它下面所有的工程,一个工作间包含多个工程。
3、在eclipse下如何调试:

     在代码上打个断点-->右键选Debug As-->进入Debug透视图-->选中要调试的程序右键选Watch。

4、perspective(透视图)和view(视图)的关系:
    view:每一个小窗口就是一个视图。可通过window下的show view调出相应的视图。
    perspective:透视图就是若干个小窗口的集合。
5、导入已有工程:
    1)将其他工作间中的工程拷贝到当前工作间所在的文件夹下。
    2)在eclipse中右击工程--->导入--->浏览选择当前工作间目录下拷贝过来的工程。
6、配置JDK环境:
     右击工程--->BuildPath --->ConfigureBuildPath-->Libraries(库)--->移除导入的工程的JDK库(remove),增加自己的库(Add libraries)。

注:
     Add JARs是增加打个Jar包,
    如果Jar包不在当前工程文件夹中,用Add Exernd JARs
    如果Jar包在当前工程文件夹中,用Add JARs
    增加一个库相当于增加很多Jar,这是一个打包的过程。

JDK1.5新特性:

1,静态导入 :
      1) import语句:是导入一个类或某个包中的所有类。
      2) import static语句:导入一个类中的某个静态方法或所有静态方法。
如,
import static java.lang.Math.abs;
import static java.lang.Math.max;

public class StaticImport {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		
//		System.out.println(Math.max(3, 9));
//		System.out.println(Math.abs(3-9));
		
		//使用静态导入就可以简化书写
		System.out.println(max(3,9));
		System.out.println(abs(3-9));		
	}
}

 

 2. 增强for循环:
       语法:for(type 变量名 : 集合变量名){statement}
       注意:迭代变量必须定义在()中。
              集合变量可以使参数或实现Iterable接口的集合类。
       变量类型前可加修饰符,如final(可以被内部类所访问)。


 3,可变参数:(方法的重载)特点:
       1) 只能出现在参数列表的最后。
       2) 用…这三个点表示参数可以有很多,且这三个点位于变量类型和变量名之间,前后有无空格皆可。
       3) 调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中以数组的形式访问可变参数。

如,

public class VariableParameter {
	public static void main(String[] args) {
		System.out.println(add(2,3));
		System.out.println(add(2,3,5));
	}
	
	public static int add(int x,int...args){
		int sum = x ;
		for(int arg : args){
			sum += arg ;
		}
		return sum ;
	}
}


4,自动装箱与自动拆箱:

      自动装箱:Integer a = 3; 这里将3封装成了对象。

      自动拆箱:a + 2;这里又将对象3变成了普通的3。
     对于基本数据类型的说明:整数在-128 ~ 127之间的数,包装成Integer类型对象,会存入常量池中的缓存,再创建同一个对象的时候,会直接使用前一个已有的值,因为这些小数值使用的频率很高,所以这些数值需要如此的使用以优化内存。

这里用到了一种模式:称之为享元设计模式。

    享元设计模式:
        1)定义:如果很多很小的对象,他们有很多相同的属性,那么他们就可变为一个对象使用,这些属性称为内部状态。还有些不同的属性,作为方法参数传入,这些相同的属性成为外部状态。这种优化内存,只创建一个对象的模式,称之为享元模式。
        2)应用:(1) word中输入英文字母,可创建26对象,每个对象值是出现的位置不同(坐标),所以可用一个对象调用位置的方法:如,字母i:i.display(intx,int y),将高度重复使用的char类型的字母i封装成一个对象使用。
        3) 图标:window下的文件夹图标,只有名称这个属性不同,包含了很多其他相同的属性,那么可以应用享元模式。
        4)valueOf(int x):Integer中静态方法,讲一个整数转换为Integer,即把基本数据类型变为包装类。

 

5,枚举(Enum):

    使用枚举的目的:枚举就是要让某个类型的变量的取值只能为若干个固定值中的一个,否则,编译器就会报错。枚举可以让编译器在编译时就可以控制源程序中填写的非法值,普通变量的方式在开发阶段无法实现这一目标。

通过enum定义枚举类,在其中列出所有同类的元素常量值作为子类的实例对象使用。
    (1) 枚举概述: 枚举类是一个特殊的类,每个元素都是该类的一个实例对象。
    用枚举类规定值,如下面的WeekDay类。以后用此类型定义的值只能是这个类中规定好的那些值,若不是这些值,编译器不会通过。好处:在编译时期就会发现错误,表明值不符合,减少了运行时期的错误。
    如果调用者想打印枚举类中元素的信息,直接调用打印即可,因为枚举自动为我们实现了toString方法。不用再自己写toString方法了。
    采用抽象方法定义的nextDay可将大量的if else语句转换成了一个个独立的类。
    如果想在一个类中编写完每个枚举类,那么可将枚举类定义成该类的内部类。
    枚举类是一个class,而且是一个不可被继承的final类,其中的元素都是类静态常量。
    (2) 构造函数:构造函数只是在构造枚举值的时候被调用,并且它的返回值类型就是类名。
    构造函数只能用private修饰,不可以用public器。这样可以保证外部代码无法重新构造枚举类的实例, 因为枚举值是public static final的常量,但是枚举类的方法和数据是可以被外部访问的。
    构造函数可以有多个,调用哪个即初始化相应的值。
    (3) 注意:
         1) 元素列表即所有的元素项目,必须放在整个类的最前面。
         2) 如果枚举类中除了元素列表还有其它成员,那么元素列表后要有分号。
         3) 枚举类中的方法为private
         4) 在元素后跟上(),就可指定要使用的构造方法,含参数。
         5) 枚举类中的每个元素都是它的一个子类对象,当枚举类中存在abstract方法,须在子类后加{}。
         6)当枚举只有一个成员时,就可以作为一种单例的实现方式。
 为什么要用枚举写单例?
     因为构造方法不用自己写了,默认的就是私有的不带参数的。new Instence()也不用自己写了,根据元素自然而然的就写出来了。

    (4) 所有的枚举类都继承了Enum方法,方法如下:
        1) toString() ---> 返回枚举量的名称
        2) ordina() ---> 返回枚举值在枚举类中的顺序,按定义的顺序排
        3)getClass() ---> 获取对应的类名
    静态方法:
        1) valueOf(String e) ---> 转为类中对应的对象,即将字符串转为对象
        2) values() ---> 获取数组,将元素放入一个数组中。

枚举演示:

public class EnumTest {
	public static void main(String[] args) {
		
		WeekDay weekday = WeekDay.THI;
		System.out.println(weekday);
		System.out.println(weekday.name());//获取名称
		System.out.println(weekday.ordinal());//获取该元素在枚举中排在第几个位置上
		System.out.println(WeekDay.valueOf("SUN"));
		System.out.println(WeekDay.values().length);
	}
	public enum WeekDay{//它是EnumTest的内部类
		//列表成员必须放在首句
		SUN(),MON(1),TUE,WED,THI,FRI,SAT;//SUN()和SUN调用的都是空参数列表的方法。
		
		private WeekDay(){
			System.out.println("first");
		}
		private WeekDay(int day){
			System.out.println("second");
		}
	}
	
	public enum TrafficLamp{
//		RED,GREEN,YELLOW;
		
		RED(30){
			@Override
			public TrafficLamp nextLamp() {
				// TODO Auto-generated method stub
				return GREEN;
			}			
		},GREEN(45){
			@Override
			public TrafficLamp nextLamp() {
				// TODO Auto-generated method stub
				return YELLOW;
			}			
		},YELLOW(5){
			@Override
			public TrafficLamp nextLamp() {
				// TODO Auto-generated method stub
				return RED;
			}			
		};
		public abstract TrafficLamp nextLamp();
		private int time;
		private TrafficLamp(int time){
			this.time = time ;
		}
	}
}


 

-----------------------android培训java培训、期待与您交流! ---------------------

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值