黑马程序员——流程控制和函数详解

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


一,程序流程控制

也称为语句,主要有:判断结构、选择结构和循环结构。

1,  判断结构

1.1   三元运算符

格式:条件表达式?为真返回结果:为假返回结果

例如:c=(a>b)?a:b;//比较a与b的大小,并把当中较大的赋值给c。

注意:三元运算符可以简化代码,但是必须要有返还值。

1.2   if语句

if语句的三种结构

a,  if(条件表达式){

执行语句;

}

b,if(条件表达式){

执行语句;

}else{

  执行语句

}

c,if(条件表达式)

        {

       执行语句;

        }

        else  if (条件表达式)

        {

       执行语句 

         }

   ……

         else

   {

       执行语句;

   }

 

由上面的例子可以看出if语句特点:

a,每一种格式都是单条语句。

b,第二种格式与三元运算符的区别:三元运算符运算完要有值出现。好处是:可以简化if else代码。

c,条件表达式无论写成什么样子,最终的结果不是true就是 false。

注意:如果if()或者else下执行语句只有一行,{}可以省略。

 

1.3   switch语句

switch语句格式:

switch(表达式)

{

  case取值1:

执行语句;

       break;

  case取值2:

      执行语句;

      break;

…...

  default:

      执行语句;

      break;

 }

switch语句特点:

a,switch语句选择的类型只有四种:byte,short,int, char。

b,case之间与default没有顺序。先执行第一个case,没有匹配的case执行default。

c,结束switch语句的两种情况:

1,执行到break结束;

2,执行到switch结尾结束。

d,如果匹配的case或者default没有对应的break,那么程序会继续向下执行,运行可以执行的语句,直到遇到break或者switch结尾结束。

注意:JDK1.5以后可以接收枚举类型,JDK1.7以后可以接收字符串。

if和switch语句什么时候使用?

如果判断的具体数值不多,而且符合byte 、short 、int 、char这四种类型。虽然两个语句都可以使用,建议使用switch语句,因为效率稍高。其他情况:如对区间判断,对结果为boolean类型判断,使用if语句,if的使用范围更广。

2,  循环结构

循环结构有三种:while、do while、for

1,  while循环格式:

while(条件表达式)

{

    执行语句;

}

2,do while循环格式:

do

{

    执行语句;

}

while(条件表达式);

3,  for循环格式

for(初始化表达式;条件表达式;操作表达式)

{

               执行语句;

}

For循环执行顺序:

a,  执行初始化表达式

b,  对条件表达式进行判断(为true执行c,为false跳出循环)

c,  执行执行语句

d,  执行操作表达式

e,  对条件表达式进行判断(为true执行c,为false执行d)

f,  ……………..

注意:观察执行顺序可以看出,初始化表达式只执行一次。

如果条件不满足,循环会一直执行。所以for(;true;){}这种形式谨慎使用。

4,  while和do while循环语句的区别

while:先判断条件,条件满足执行循环体。

do while:先执行一次循环体,再判断条件,若条件满足,再执行一次循环体。

也就是说while循环可能不执行循环体,do while循环至少执行一次循环体。

注意:for循环中定义的变量在循环结束时清除,while、do while循环的一直存在。

5,  break和continue语句

break:跳出,使用场景:选择结构和循环结构。

continue:继续,使用场景:循环结构。

注意:

break和continue语句离开它们的应用范围是没有意义的;

break语句是结束循环,continue是结束本次循环,进入下一次循环;

break和continue语句单独存在时,它们下面的语句是执行不到的。

可以在循环结构前加标号表示作用的指定循环,如:

a :for(;;){

         b:for(;;){

         break a;//同样适用于continue语句

}

}

注意:标号只用于循环结构。

6,  最简单的无限循环形式

格式:While(true){ }、do{ }while(true)、for(;true;){}

7,  循环结构的使用

a)        什么时候使用循环语句?

当要对某些语句执行很多次时使用,但是要注意哪些语句需要参与循环,哪些不需要。

b)        循环结构的选择

在实际开发过程中,for循环是使用最多的,但不是在任何情况下都可以使用for循环。

一般在知道循环次数的情况下使用for循环,比如根据数组的长度取出数组中的元素,这时候需要使用下标。

在使用迭代器时一般用while循环,用i.hasNext()作为判断条件,为true就用

i. next()取出。这样看上去比for循环更简洁。

 

二,函数

1, 定义:定义在类中的具有特定功能的一段独立小程序。也称方法。 

2,  为什么出现函数?

  为了提高代码的复用性,可以将这些代码其定义成一个单独的功能,该功能的体现就是java中的函数。函数就是体现之一。

3,函数的定义格式:

         修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数1,…){

                   执行语句;

                   return返回值;

         }

返回值类型:函数运行后的结果的数据类型。

          参数类型:是形式参数的数据类型。

          形式参数:是一个变量,用于存储调用函数时传递给函数的实际参数。

          实际参数:传递给形式参数的具体数值。

          return:用于结束函数。

          返回值:该值会返回给调用者。

 

注意:当函数没有具体的返回值时,返回的返回值类型用void关键字表示。

return的作用:结束函数。结束功能。返回函数执行结果。

如果函数的返回值类型是void时,return语句可以省略不写的,系统会帮你自动加上。

 

4,函数的作用:

1)、用于定义功能。

2)、用于封装代码提高代码的复用性。

3)、函数只有被调用才会被执行。

注意:函数中只能调用函数,不能定义函数。

主函数:

                  1)、保证该类的独立运行。

                  2)、因为它是程序的入口。

                  3)、因为它在被jvm调用。

 

5,如何定义一个函数?

                  函数其实就是一个功能,定义函数就是实现功能,通过两个明确来完成:

                  1)、明确该功能的运算完的结果,其实是在明确这个函数的返回值类型。

                   2)、在实现该功能的过程中是否有未知内容参与了运算,其实就是在明确这个函数的参数列表(参数类型&参数个数)。

                   3)、因为它在被jvm调用。

 

         6,重载

         重载是函数的一个重要特性。

    概念:在同一个类中,允许存在一个以上的同名函数,只要它们的参数列表的个数或者参数类型不同即可。

       特点:与返回值类型无关,只看参数列表。

       好处:方便于阅读,优化了程序设计。

代码示例:

         //返回两个整数的和

          int add(intx,int y){return x+y;}

          //返回三个整数的和

         int add(int x,inty,int z){returnx+y+z;}

         //返回两个小数的和

          doubleadd(double x,double y){return x+y;}

 

什么时候使用重载?

当定义的功能相同,但参与运算的未知内容不同。那么,这时就定义一个函数名称以表示起功能,方便阅读,而通过参数列表的不同来区分多个同名函数。


三,流程控制与函数练习

1,循环的使用

/**
 *写程序计算12+22+32+....+1002的和
 *
 */
public class Test3 {
	public static final int maxVal = 1002;
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int val = 12;
		int result = 0;
		while(val<=maxVal){
			result+=val;
			val+=10;
		}
		System.out.println("1结果为:"+result);
		
		//或者
		int result2 = 0;
		for(int i=12;i<=maxVal;i+=10){
			result2+=i;
		}
		System.out.println("2结果为:"+result2);
		
		//又或者
		int val2 = 12;
		int result3=0;
		do{
			result3 += val2;
			val2+=10;
		}while(val2<=maxVal);
		System.out.println("3结果为:"+result3);
	}

}

2, 流程控制和函数结合使用示例

import java.util.Scanner;

/**
 *编写程序,从键盘接收一个字符串,对字符串中的字母进行大小写互转(大写字母转成小写,小写字母转成大写)
 *
 *思路:
 *1,接受键盘录入的数字
 *2,截取字符
 *3,利用正则表达式或ascii码区分字符大小写和非字母
 *4,拼接字符串,打印出来
 */
public class Test5 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		System.out.println("请输入字符,按回车确定"); 
		//获取键盘输入的字符串
        Scanner s = new Scanner(System.in);
        String str = s.nextLine();
        //利用ascii码处理
        String result = asciiConvert(str);
        //利用正则表达式处理
        String result2= regexConvert(str);
        
        System.out.println(result);
        System.out.println(result2);
	}
	
	 public static String asciiConvert(String str){
		 String result = "";
         for(int i=0;i<str.length();i++){
        	 int ascii = (int)str.charAt(i);//得到字母对应的ascii码
             if(ascii>=97 && ascii<=122){//小写
            	 result += (char)(ascii-32);
             }else if(ascii>=65 && ascii<=90){//大写
            	 result += (char)(ascii+32);
             }else{
            	 result +=(char)ascii;
             }
         }
         return String.valueOf(result);
	 }
	 public static String regexConvert(String str){
		 String regx1="[a-z]";
	     String regx2="[A-Z]";
	     String result = "";
	     for(int i=0;i<str.length();i++){
	    	 String sub=str.substring(i,i+1);
             //判断是否是小写字母,是则转换为大写
             if(sub.matches(regx1)){
                 sub=sub.toUpperCase();
                 result+=sub;
             }
             //判断是否是小写字母,是则转换为小写
             else if(sub.matches(regx2)){
            	 sub=sub.toLowerCase();
                 result+=sub;
             }
             //其他类型则直接输出
             else{
            	 result+=sub;
             }
	        }
         return result;
	 }

}


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

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
应用背景为变电站电力巡检,基于YOLO v4算法模型对常见电力巡检目标进行检测,并充分利用Ascend310提供的DVPP等硬件支持能力来完成流媒体的传输、处理等任务,并对系统性能做出一定的优化。.zip深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 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)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
黑马程序员的tb_brand是指在JavaWeb基础教程中创建的一个表。这个表是用来存储品牌信息的,具体的表结构和数据类型需要和JavaBean类中的成员变量保持一致。\[1\]在这个教程中,使用了Maven来构建项目,并且使用了MyBatis作为持久层框架,通过配置pom.xml文件来引入相关依赖。\[2\] Maven是一个用于管理和构建Java项目的工具,它提供了一套标准化的项目结构、构建流程和依赖管理机制。\[3\] #### 引用[.reference_title] - *1* [【JAVAWEB开发】黑马程序员java web案例资料(含Element的删除与修改)](https://blog.csdn.net/aasd23/article/details/126940147)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [黑马程序员-MyBatis 框架-最全入门笔记、阿伟看了都得说真大、真细、真全!!!](https://blog.csdn.net/qq_57383364/article/details/128103058)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [JavaWeb——黑马程序员课程笔记](https://blog.csdn.net/King_ZACC/article/details/128573804)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值