黑马程序员—JDK1.5新特性(增强for循环、可变参数、静态导入)

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

 

增强for循环:foreach语句,foreach简化了迭代器

 * 增强for循环。格式:for (数据类型 变量名 :被遍历的集合(Collection)或者数组)
 *  {
 * 
 *  }
 * 
 *  可以对集合进行遍历,但是只能获取元素,不能对元素作出其他操作。
 * 
 *  迭代器:除了遍历,还可以进行remove集合中的元素。如果使用ListIterator,还可以在遍历过程中进行增删改查的动作。
 * 
 *  传统for循环和增强for循环有什么区别呢?
 *  增强for循环有一个局限性,必须有被遍历的目标。比如用增强for循环输出100次hello java,单靠增强for循环是做不到的。
 * 
 *  建议在遍历数组的时候使用传统for循环。因为传统for可以定义角标。通过角标操作元素。如果只为遍历获取,可以简化成高级for循环,它的出现为了简化书写。

高级for循环可以遍历Map集合,但要先将将Map转成set后再使用foreach语句。

代码示例:

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class ForEachDemo
{
	public static void main(String[] args)
	{
		//创建一个ArrayList集合
		Collection<String> c = new ArrayList<String>();
		//向集合中添加元素
		c.add("abcdefg");
		c.add("cbvnmflgi");
		
		//用增强for循环迭代打印出集合中的每一个元素
		for (String s:c)
			System.out.println(s);
		
		//定义数组
		int[] arr = {1,2,3,4,5,6,7};
		//增强for循环迭代打印出数组中每一个元素
		for (int i:arr)
			sop(i);
		
		//定义一个HashMap的集合
		HashMap<Integer,String> hm = new HashMap();
		//向集合中添加元素
		hm.put(1, "er");
		hm.put(2, "rf");
		hm.put(3, "gh");
		hm.put(4, "ji");
		hm.put(5, "kl");
		
		//获取键的Set集合
		Set<Integer> keyset = hm.keySet();
		//用增强for循环迭代打印Map集合中的键和对应的值
		for (Integer i : keyset)
			sop(i+"---"+hm.get(i));
		
		//获取键值映射关系Map.Entry的Set集合
		Set<Map.Entry<Integer, String>> se = hm.entrySet();
		//用增强for循环迭代出Map.Entry映射关系中的键和值
		for (Map.Entry<Integer, String> keyvalue : se)
			sop(keyvalue.getKey()+"------"+keyvalue.getValue());
		
		//这是上面代码的简化形式
		for (Map.Entry<Integer, String> me : hm.entrySet())
			sop(me.getKey()+"::::::::::"+me.getValue());
	}
	
	//打印功能
	public static void sop(Object obj)
	{
		System.out.println(obj);
	}
}


 

 

 

可变参数(...)用到函数的参数上,当要操作的同一个类型元素个数不确定的时候,可是用这个方式,这个参数可以接受任意个数的同一类型的数据。

 

和以前接收数组不一样的是:

以前定义数组类型,需要先创建一个数组对象,再将这个数组对象作为参数传递给函数。现在,直接将数组中的元素作为参数传递即可。底层其实是将这些元素进行数组的封装,而这个封装动作,是在底层完成的,被隐藏了。所以简化了用户的书写,少了调用者定义数组的动作。

如果在参数列表中使用了可变参数,可变参数必须定义在参数列表结尾(也就是必须是最后一个参数,否则编译会失败。)。

如果要获取多个int数的和呢?可以使用将多个int数封装到数组中,直接对数组求和即可。

 

代码示例:

/*	JDK1.5版本的新特性。方法的可变参数。在使用时注意:可变参数一定要定义在参数列表的最后面。
 * */

public class ParamMethodDemo
{
	public static void main(String[] args)
	{
		 //虽然少定义方法,但每次都要定义数组。作为实际参数。
//		int[] arr = {1,2,3,4,5};
//		show(arr);
		
		show("str",1,2,3,4,5);
	}
	
	/*	可变参数:其实就是上一种格式的简写格式。不用每一次都手动的建立数组对象。只要将要操作的元素作为参数传递即可。
	 * 	隐式的将这些参数封装成了数组。
	 * */
	public static void show(String Str, int ... arr)
	{
		for (int i : arr)
			System.out.println(i);
	}
}


 

 

静态导入:导入了类中的所有静态成员,简化静态成员的书写。

代码示例:

/*	JDK1.5版本的新特性。静态导入。
 * 	当类名重名时,需要指定包名。
 * 	当方法名重名时,需要写上具体所属的类或者对象
 * */
import static java.util.Arrays.*;//导入Arrays类中所有的静态成员。
import static java.lang.System.*; //导入System里面的所有静态成员。


 

 

------- android培训java培训、期待与您交流! ----------
深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值