黑马程序员——枚举和一些新特性

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


一丶静态导入

//以前的版本导入时是导入的一个类或者是导入某个包中的所有类

//比如要用到随机数

public static void main(String[] args) 
{

       int num = (int) (Math.random()*10+1);

       System.out.println(num);

    }

//静态导入就是导入一个类的一个静态方法或者是所有的静态方法

//比如要用到很多随机数可以这么写

public static void main(String[] args) 
{

       int num0 = (int) (Math.random()*10+1);

       int num1 = (int) (Math.random()*10+1);

       int num2 = (int) (Math.random()*10+1);

       int num3 = (int) (Math.random()*10+1);

       System.out.println(num0);

       System.out.println(num1);

       System.out.println(num2);

       System.out.println(num3);

    }

//也可以这么写

import static java.lang.Math.*

public static void main(String[] args) 
{

       int num0 = (int) (random()*10+1);

       int num1 = (int) (random()*10+1);

       int num2 = (int) (random()*10+1);

       int num3 = (int) (random()*10+1);

       System.out.println(num0);

       System.out.println(num1);

       System.out.println(num2);

       System.out.println(num3);

    }

//再用到Math类下的任何静态方法就不用在写Math .了

//注意点:如果是在jdk1.5一下的是不能这样写的

二丶增强for循环

1、语法

for(type 变量名:集合变量名){.....}
public static int add(int x,int... args){
        int sun = x;
        
        for(int arg : args)
        {
            sun+=arg;
        }
        return sun;
    }
2、注意点:迭代的变量要在for()中定义,集合的变量可以是数组或者是实现了Iterable接口的集合类


三丶基本数据的自动拆箱和装箱

1、在jdk1.5之前这样对8进行装箱操作Integer obj = 8;是不行的

       必须这样写Integer obj = new Integer(8);

2、1.5支持Integer obj = 8;和System.out.println(obj+9);的装箱和拆箱的操作

3、享元模式(Flyweight Pattern)

Integer int1 = 100;

Integer int2 = 100;

System.out.println(int1 == int2);会输出true

 

Integer int3 = 1000;

Integer int4 = 1000;

System.out.println(int3 == int4);会输出false

把基本整形数据装箱成Integer时,如果这个数字在一个字节(-128—127)之内,那么这个数字就会被缓存起来,下次在有数字装箱时就会查找缓存中是否有这个数字,如果有就直接拿来用。这些小的整数因为使用频率比较高,改变的机会也比较小,缓存起来会节省内存空间。这就是享元模式。

比如在word文档不可能为所有的单词的每一个字符创建对象,这事就可以使用享元模式,只要创建26个字母对象就行了,大大减少了重复对象的数量。还比如电脑系统的文件图标,也是用了享元模式。

四丶枚举

//普通的枚举

public enum Weekday
{
	SUN, MON, TUE, WED, THU, FRI, SAT
}

// 或

public enum Weekday
{
	SUN, MON, TUE, WED, THU, FRI, SAT;
}

// 在有属性或者是方法时必须要第二种即要在最后一个元素后家分号并且属性和方法也只能在元素的后面。

// 枚举可以为它添加静态和非静态的属性或方法,这象在一般的类中做的那样

// 枚举还可以添加构造方法,只不过这个构造方法必须是私有的保证构造函数只能在内部使用

public enum Weekday
{
	SUN, MON, TUE, WED, THU, FRI, SAT;

	private WeekDay()
	{
	}

}

// 枚举的每一个元素就是该枚举类的一个对象,如果这个对象有参数就要提供相应的构造方法

public enum Weekday
{
	SUN(0), MON, TUE, WED, THU, FRI, SAT;

	private WeekDay()
	{
	}

	private WeekDay(int num)
	{
	}
}

public enum Weekday
{
	SUN(0), MON(1, "星期一"), TUE, WED, THU, FRI, SAT;

	private WeekDay()
	{
	}

	private WeekDay(int num)
	{
	}

	private WeekDay(int num, String name)
	{
	}
}

// 如果这时都让构造器打印出一句话

public enum Weekday
{
	SUN(0), MON(1, "星期一"), TUE, WED, THU, FRI, SAT;

	private WeekDay(){System.out.pritnln(“the first”);}	private WeekDay(int num){System.out.pritnln(“the second”);}

	private WeekDay(int num ,String name){System.out.pritln(“the third”);}
}

// 那么无参元素就会调用无参构造器,拥有相应参数的元素会调用有相应参数的构造器

// 然而枚举在实际应用中是集合了有相同属性的元素,所以设置他们的属性一般是相同的

// 在获得枚举对象的属性时的方法都在java文档给出,这里不再啰嗦。

// 带有抽象方法的枚举

public enum Weekday
{
	SUN, MON, TUE, WED, THU, FRI, SAT;

	public abstract WeekDay nextDay();
}

// 因为这是一个抽象枚举不能自己创建对象,那么在哪里定义实例的代码呢?元素的后面

public enum WeekDay
{

	SUN
	{

		public WeekDay nextDay()
		{

			return null;

		}

	},

	MON
	{

		public WeekDay nextDay()
		{

			return null;

		}

	},

	TUE
	{

		public WeekDay nextDay()
		{

			return null;

		}

	},

	WED
	{

		public WeekDay nextDay()
		{

			return null;

		}

	},

	THU
	{

		public WeekDay nextDay()
		{

			return null;

		}

	},

	FRI
	{

		public WeekDay nextDay()
		{

			return null;

		}

	},

	SAT
	{

		public WeekDay nextDay()
		{

			return null;

		}

	};

	public abstract WeekDay nextDay();

}


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


                                                                详细请查看:http://edu.csdn.net/heima

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。、可私 6信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。、可私 6信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 、可私信博6主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值