从零开始学编程——java语法—函数和面向对象

这篇文章咱们接着说java语法的部分,在上一篇文章在举例子的时候说到了一个java程序入口的知识点,java的入口是一个叫做main的函数,那么函数是什么呢,这篇文章中就要说到。

除了介绍函数,今天还会简单介绍下关于面向对象的知识,面向对象是一大块,接下来大概会有三篇的样子在重点介绍面向对象的知识,包括什么是面向对象,怎么使用对象,对象的一些特点等等,面向对象可以说是java中最重要的一部分知识,以后的所有编程思想都是用的面向对象的思想。

函数

public static void main(String[] args){
	System.out.print("hello word!");
}

函数也叫方法,平时我们说定义一个函数和定义一个方法是一样的,一个函数表示完成特定功能的代码块,比如上面的函数代码块实现的功能是打印 hello word。

定义个函数的好处是,通过定义函数可以提高代码的复用性,比如打印 hello word 的功能有好多地方都需要使用,那么我们就可以直接在使用到的地方使用 main 这个函数,不用每次再写一长串的打印代码。

1)函数的格式
修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2...) {
		方法体语句;
		return 返回值; 
} 

修饰符 : 用来修饰这个函数的,表示函数的一些特性如上面的 public static,后面会详细说其他的修饰符。

返回值类型:表示这函数最后得到结果的数据类型,上面的例子中用的 void 表示没有返回值。

方法名 :即这个函数的名字,我们通过它来找到这个函数,如上面的 main 函数。

参数类型 :表示这个函数接收的参数的类型,如上面例子中接收的类型是 String[] ,表示字符串数组类型(后面会说数组类型)

参数名 :就是对应参数的名字,比如上面的例子中的 args

方法体语句 :就是这个函数中实现功能的语句,比如上面例子中的打印语句

return : 这是一个关键字,后面跟着这个函数返回的结果,这个结果的类型对应的上面的返回值类型,上面的例子为什么没有return呢,因为它的返回值类型是void,void表示不需要返回。

再看下面这个例子对照一下

public static int add(int a,int b){
	int c = a + b;
    return c;
}

上面定义的是一个叫 add 的函数,作用是给输入的两个参数 a 和 b 做相加运算的,函数的返回值类型是 int ,最后我们返回的 c 也是 int 类型。

2)函数的使用

上面说了怎么定义一个函数,那么函数怎么用呢,因为所有java程序的入口都是mian函数,所有我们在调用我们定义的 add 函数的时候也应该在 main 函数里面,如下:

public class Test {
	public static void main(String[] args) {
		int i = 5;
		int j = 6;
        //调用add函数,获取结果
		int sum = add(i,j);
	}
	//定义add函数
	public static int add(int a,int b){
		int c = a + b;
		return c;
	}		
}

上面是一个有返回值的函数的例子,如果我们想定义一个没有返回值的函数,可以参考 main 函数来定义,如下

public static void test(int a,int b){
	int c = a + b;
	System.out.println("c = " + c);
}

返回值类型为 void 表示没有返回值,所以我们不需要 return 关键字来返回结果,需要注意的是一个函数接收的参数类型的个数是可以无限多个的,可以没有,也可以一个,也可以多个。

函数就是这样的,是不是很简单,在实际工作中写代码的时候函数是非常常见的,可以说一个项目代码的基本组成单元就是函数,我们通过函数来实现一个个不同的功能,然后想要哪个功能的时候就直接调用函数就可以了。

面向对象

面向对象是一种编程思想,在java程序语言中,所有的程序的编写都遵循的面向对象的思想来进行的,和面向对象编程相对应的是面向过程编程,下面用一个例子来说明一些这两种编程思想。

比如你家有个上一年级的孩子,孩子数学成绩不好,你想给孩子补习一下数学,找个时候你就有两个选择,一个是自己来,自己给孩子补习,但是如果你数学也不好,怎么办,自己去学习,学好了然后再去给孩子补习。

第二个选择就是找个数学的补习老师,让他来给孩子补习数学,具体数学老师的知识是怎么来的,它用什么方式来给孩子补习你不管,你只要通过这个补习老师能够让孩子的数学成绩提高上去就好了。

上面的例子第一个选择就是面向过程编程,第二种方式就是面向对象编程,这下你应该明白什么是面向对象编程了吧,简单的说,就是当我们要实现某项功能的时候,要先去想有没有哪个对象已经实现了这个功能,我只要拿到这个对象让它去完成就好了,至于它的内部怎么实现的这个功能,我不用管。

面向过程编程,强调的思想是过程,什么事情都要自己去做。

在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、付费专栏及课程。

余额充值