【黑马程序员】Java基础学习博客——面向对象

本文深入解析Java中类的定义、对象的初始化过程,包括类与对象的概念、类的定义语法、field与方法的定义规则、构造函数的作用与使用方法。详细阐述了如何在类中定义构造函数以实现对象的初始化,以及构造函数与普通方法的区别。同时解释了构造函数的细节,如重载、私有化以及与一般函数的区别。最后,通过示例代码演示了如何在Person类中定义构造函数并实现对象初始化。

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

定义类:

面向对象的设计过程中有两个重要的概念:类和对象(也叫实例).其中类是某一批对象的抽象,可以把类理解成某种概念:对象才是一个具体存在的实体,从这个意义上讲我们通常所说的人,其实都是人的实例,而不是人类。

JAVA语言定义类的简单语法:

[修饰符] class 类名

{
    零到多个构造器的定义
    零到多个field 
    零到多个方法
}

在上面的语法中,修饰类的修饰符可以是:public   abstract  final,或者完全省略这三个修饰符其他的就是错误的!

定义field的语法格式: 修饰符   field类型  field名 = 默认值;

其中修饰符可以是:public  protected  private fianal static 等

field类型可以是JAVA语言中的任何数据类型,包括基本数据类型和引用数据类型

field名:从语法上来说,field名只要是合法的标识符即可,当时程序的可读性来说,应该是一个有意义的一个或多个单词所组成,第一个单词首字符小写,后面每个单词首字符大写,其他字符都小写,单词与单词之间不用任何分隔符。

默认值:既可以指定也可以不指定。


定义方法的语法格式是:

修饰符   方法的返回值类型  方法名(形参列表)

{

    有一条或多条可执行语句组成

}

修饰符可以是:public  protected  private fianal static abstract

返回值类型允许Java的任何数据类型,包括基本数据类型和引用数据类型,如果声明了返回值类型,则方法体内必须要有一个return语句

方法名与field明媚规则基本相同,但通常建议方法名以英文中的动词开头

形参列表:用于定义该方法可以接受的参数,需要注意的是形参列表传递的是值得副本,而不是值得本身。


构造器的语法格式

修饰符  构造器名(形参列表)

{

   由零条或者多条可执行型语句组成的构造器执行体

}

其中修饰符可以省略也可以是public  protected  private 中的一种

构造器名  必须和类名相同

形参列表和定义方法的形参列表完全相同。



需求:为了描述事物更准确,发现事物对应的很多对象一创建时,
就有了,一些初始化的数据。在类中该如何完成的。

通过Java中的另一个小技术完成:就是构造函数。对象本身就是构造出来,
构造时,需要做一些动作这些应该定义在函数内。

构造函数(Constructor)有什么用?可以对对象创建进行初始化。

构造函数怎么在代码中体现呢?
1,没有返回值类型。因为构造对象,创建完就结束,需要结果。void也不要写,因为要有区别与一般函数。
2,构造函数名称和类名一致。
3,没有具体的返回值。
接下来,按照以上三点,在Person类中定义一个构造函数。
对象一创建就具备了姓名。


发现了问题?
没有学习构造函数时,对象也创建出来了。那么该对象是否有被构造呢?或者说是否有调用构造函数呢?

是的。必须调用!
那么类中那个构造函数是什么呢?

lass Person
{
	//Person(){}//默认的空参数构造函数。
}

main()
{
	Person p = new Person();//这就已经调用了Person类中的空参数的构造函数。
							//类中有定义该构造函数吗?有的。只要定义一个类,
							//该类中默认就有一个空参数的构造函数,是编译器编译时添加到class文件中。
							//注意:如果在类中自定义了构造函数,那么默认的空参数构造函数编译器就不添加了。
							//原理:没有定义对象的初始化过程,编译器会添加一个默认的初始化过程。
							//      如果定义了指定的对象初始化过程,默认的就不添加了。
}



构造函数的细节:

1,一个类中可以有多个构造函数,它们的存在是以重载的形式体现的。
2,构造函数中也是有return语句的,用于结束初始化动作的。
3,构造函数是否能被private修饰呢?能,作用:其他程序无法创建该类的对象。

class Person
{
	private Person(){}
}


main()
{
	Person p = new Person();//创建对象无法初始化。
}


构造函数和一般函数的区别?
1,写法不一样。
2,运行上有差别,对象一创建就会调用对应的构造函数。
 一般方法是对象创建后,才会调用所需的一般函数。
问:有了构造函数初始化姓名,那么还需要setName方法吗?
需要,因为对象创建后,如果需要对数据进行修改,可以通过set完成。
3,构造函数在对象创建时,仅调用一次(初始化动作只做一次,而且先执行)。一般方法可以被对象调用多次。

class Person
{
	//Person(){}
	void Person(){}//这是一般函数。但不要这些书写,因为一般函数名称有规范。
}

main()
{
	Person p = new Person();
}

lass Person
{
	//属性:姓名,年龄。
	private String name;
	private int age;
	//一初始化,既没有姓名,又没有年龄。
	Person()
	{
		
	}
//	Person(int a)
//	{
//		if(a<0)
//			return;
//		age = a;
//	}


	//定义构造函数,对象一创建就具备姓名。
	Person(String n)
	{
		//将接收到的值赋值给对象的name
		name = n;
	}

	//一初始化既有姓名,又有年龄。
	Person(String n,int a)
	{
		name = n;
		age = a;
		
	}
	
	//行为。
	public void speak()
	{
		System.out.println("name="+name+",age="+age);
	}
}


class PersonDemo2 
{
	public static void main(String[] args) 
	{

		Person p1 = new Person();
		
//		Person p = new Person("lisi");//对象创建时,必须会调用对应的构造函数,因为对象需要初始化。
	
//		Person p2 = new Person("wangwu",23);
		
	}
}

//对象的初始化过程。
class Demo
{
	static int x = 1;
	int y = 1;
	
	static
	{
		System.out.println("static code...x="+x);
	}

	{
		System.out.println("cons code ...y="+y);
	}

	Demo()
	{
		System.out.println("cons function ...y="+y);
	}
}


class CreateObjectTest
{
	public static void main(String[] args) 
	{

		/*
		1,加载Demo.class文件进方法区,并进行空间分配。
		2,如果有静态变量,先默认初始化,显示初始化。
		3,如果有静态代码块,要执行,仅一次。
		4,通过new在堆内存中开辟空间,并明确首地址。
		5,对对象中的属性进行默认初始化。
		6,调用对应的构造函数进行初始化。
		7,构造函数内部。
			7.1 调用父类构造函数super();
			7.2 成员变量的显示初始化。
			7.3 构造代码块初始化。
			7.4 构造函数内容自定义内容初始化。
		8,对象初始化完毕后,将地址赋值给d引用变量。
		*/
		Demo d = new Demo();
	}
}


JDK1.5之后Java允许定义形参个数可变的参数,从而允许为方法指定数量不确定的形参,如果在定义方法时,在最后一个形参后面加上三个点(...)则表明该形参可以接受多个参数值,多个参数值被当成数组传入。

package arrayview;


public class 可变形参 {

	//定义了形参个数的可变方法
	public static void test(int a , String...books)
	{
		//books被当成数组处理
		for (String string : books) {
			System.out.println(string);
		}
		//输出整数a的值
		System.out.println(a);
		
	}
	public static void main(String[] args) {
		//调用test方法,可以随便输入几个参数
		test(5,"我爱Java","我爱黑马","我爱传智播客","我爱北京");
	}
}
需要注意的是:长度可变得形参只能处于形参列表的最后,一个方法中最多只能包含一个长度可变的形参。调用包含一个长度可变得形参方法时,这个长度可变的形参既可以传入多个参数,也可以传入一个数组。



标题SpringBoot智能在线预约挂号系统研究AI更换标题第1章引言介绍智能在线预约挂号系统的研究背景、意义、国内外研究现状及论文创新点。1.1研究背景与意义阐述智能在线预约挂号系统对提升医疗服务效率的重要性。1.2国内外研究现状分析国内外智能在线预约挂号系统的研究与应用情况。1.3研究方法及创新点概述本文采用的技术路线、研究方法及主要创新点。第2章相关理论总结智能在线预约挂号系统相关理论,包括系统架构、开发技术等。2.1系统架构设计理论介绍系统架构设计的基本原则和常用方法。2.2SpringBoot开发框架理论阐述SpringBoot框架的特点、优势及其在系统开发中的应用。2.3数据库设计与管理理论介绍数据库设计原则、数据模型及数据库管理系统。2.4网络安全与数据保护理论讨论网络安全威胁、数据保护技术及其在系统中的应用。第3章SpringBoot智能在线预约挂号系统设计详细介绍系统的设计方案,包括功能模块划分、数据库设计等。3.1系统功能模块设计划分系统功能模块,如用户管理、挂号管理、医生排班等。3.2数据库设计与实现设计数据库表结构,确定字段类型、主键及外键关系。3.3用户界面设计设计用户友好的界面,提升用户体验。3.4系统安全设计阐述系统安全策略,包括用户认证、数据加密等。第4章系统实现与测试介绍系统的实现过程,包括编码、测试及优化等。4.1系统编码实现采用SpringBoot框架进行系统编码实现。4.2系统测试方法介绍系统测试的方法、步骤及测试用例设计。4.3系统性能测试与分析对系统进行性能测试,分析测试结果并提出优化建议。4.4系统优化与改进根据测试结果对系统进行优化和改进,提升系统性能。第5章研究结果呈现系统实现后的效果,包括功能实现、性能提升等。5.1系统功能实现效果展示系统各功能模块的实现效果,如挂号成功界面等。5.2系统性能提升效果对比优化前后的系统性能
在金融行业中,对信用风险的判断是核心环节之一,其结果对机构的信贷政策和风险控制策略有直接影响。本文将围绕如何借助机器学习方法,尤其是Sklearn工具包,建立用于判断信用状况的预测系统。文中将涵盖逻辑回归、支持向量机等常见方法,并通过实际操作流程进行说明。 一、机器学习基本概念 机器学习属于人工智能的子领域,其基本理念是通过数据自动学习规律,而非依赖人工设定规则。在信贷分析中,该技术可用于挖掘历史数据中的潜在规律,进而对未来的信用表现进行预测。 二、Sklearn工具包概述 Sklearn(Scikit-learn)是Python语言中广泛使用的机器学习模块,提供多种数据处理和建模功能。它简化了数据清洗、特征提取、模型构建、验证与优化等流程,是数据科学项目中的常用工具。 三、逻辑回归模型 逻辑回归是一种常用于分类任务的线性模型,特别适用于二类问题。在信用评估中,该模型可用于判断借款人是否可能违约。其通过逻辑函数将输出映射为0到1之间的概率值,从而表示违约的可能性。 四、支持向量机模型 支持向量机是一种用于监督学习的算法,适用于数据维度高、样本量小的情况。在信用分析中,该方法能够通过寻找最佳分割面,区分违约与非违约客户。通过选用不同核函数,可应对复杂的非线性关系,提升预测精度。 五、数据预处理步骤 在建模前,需对原始数据进行清理与转换,包括处理缺失值、识别异常点、标准化数值、筛选有效特征等。对于信用评分,常见的输入变量包括收入水平、负债比例、信用历史记录、职业稳定性等。预处理有助于减少噪声干扰,增强模型的适应性。 六、模型构建与验证 借助Sklearn,可以将数据集划分为训练集和测试集,并通过交叉验证调整参数以提升模型性能。常用评估指标包括准确率、召回率、F1值以及AUC-ROC曲线。在处理不平衡数据时,更应关注模型的召回率与特异性。 七、集成学习方法 为提升模型预测能力,可采用集成策略,如结合多个模型的预测结果。这有助于降低单一模型的偏差与方差,增强整体预测的稳定性与准确性。 综上,基于机器学习的信用评估系统可通过Sklearn中的多种算法,结合合理的数据处理与模型优化,实现对借款人信用状况的精准判断。在实际应用中,需持续调整模型以适应市场变化,保障预测结果的长期有效性。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值