从头开始学Java--类和对象

FunASR语音识别服务在Win11上的Docker部署避坑指南:模型配置与热词优化 本文详细介绍了在Windows 11系统上通过Docker部署FunASR语音识别服务的完整流程,包括环境准备、模型配置、热词优化及常见问题解决方案。特别针对Win11环境下的特殊配置和性能调优提供了实用指南,帮助开发者高效搭建高性能语音识别服务。 阅读详情






一.啥也不说了,先来个helloworld

public class Hello {
	public static void main(String[] args)
	{
		System.out.println("hello world");
	}
}

Java不像C++那样“用C++的语法,写C语言的代码”,连Helloworld都要封装到一个类里面,彻底的面向对象。个人感觉十分有助于培养面向对象的思维方式。最开始学C到用C++,感觉总是不彻底的面向对象,写着写着就变成了结构化编程。这下好了,想不写一个类都不成!

要点: 1.main方法是程序的入口点,由java虚拟机调用,必须按照格式书写。

2.main方法属于static方法,即不创建对象也可调用的方法。

3.System.out.print与System.out.println为输出函数,类似与cout,都可以接受输出的内容,包括一些特殊字符(如\n),前者是输出,后者是输出一行(自带换行功能)。System是类名,out是一个字段,System.out是java提供的标准输出对象,print与println为两个方法。


语法部分看过了一些,跟C/C++大概差不多,所以就不记录了。还是记下来一些Java的特性。

二.来一个类

class Myclass1 {
	private int value;
	private String name;

	public void setValue(int v)
	{
		value = v;
	}
	public int getValue()
	{
		return value;
	}
	public void setName(String s)
	{
		name = s;
	}
	public String getName()
	{
		return name;
	}
}

public class TestMyClass1
{
	public static void main(String[] args)
	{
		Myclass1 myclass1 = new Myclass1();
		myclass1.setName("hello");
		myclass1.setValue(1);
		System.out.println("value is " + myclass1.getValue() + " name is " + myclass1.getName());
	}
}

跟C++的差不太多,只是main函数也是需要封装在一个类里面。而且main函数也是需要有固定的格式。

要点: 1.java类命名规范:每个单词首字母大写,eg:TestMyClass

2.java文件命名规范:  java文件名 = 公有类名 + .java。一个.java文件中可以有多个类,但是只能有一个公有类。

3.java变量&函数命名规范:常量全大写eg: MAX_VALUE,函数名第一个单词小写,后面单词第一个字母大写eg:getValue()。


三.引用类型变量

java中除了少数的几个原始数据类型,如int,char, float等,其他的变量都为引用数据类型。
所谓引用数据类型,就是在内存中建立一个对象,用一个变量引用这个对象。

例如:Myclass1 myclass1 = new Myclass1();

前半句 Myclass1 myclass1 就是创建了个Myclass1类型的引用变量,但是这个变量并没有实际的对象。此时myclass1 = null.

后半句new  Myclass1(),调用了类的构造函数,产生了一个对象。并且用前面的myclass1引用这个对象。



这里面 = 赋值的仅为内存地址值,并不是将对象赋给引用类型的变量。只是让引用变量可以找到内存中的对象。


一个例子:


class Myclass {
	private int value;
	private String name;

	public Myclass(int v, String n)
	{
		value = v;
		name = n;
	}
}

public class TestMyClass
{
	public static void main(String[] args)
	{
		Myclass myclass1 = new Myclass(1, "zhang");
		Myclass myclass2 = new Myclass(1, "zhang");
		Myclass myclass3 = myclass1;
		System.out.println(myclass1 == myclass2);
		System.out.println(myclass1 == myclass3);
	}
}

结果如下:



两个内容都一样的对象,却不相等。可见,对于两个引用类型的变量,判断 == 是判断两个引用类型的变量是否指向一个相同的对象。

上面程序可以用下图表示:



要点: 1.引用类型的变量,存储的并不是实际的对象。而是对象的地址。 = 赋值也只是将地址赋值给另一个引用类型的变量。内存中对象仍然只有一份。

2.即使创建的两个对象内容完全相同,用 == 判断的也是对象的地址是否相同,所以只要不是两个引用类型变量指向同一个对象,都是不相等的。

3.如果要判断两个对象内容是否相等,可以重写equals方法,或者重载equals方法。


四.构造函数&类的初始化块

看一个例子:

class InitClass
{
	//flag默认值
	public int flag = 100;
	//类的初始化块
	{
			flag = 200;
			filed = 200;
	}
	//filed默认值
	public int filed = 100;
	
	//无参数构造函数
	public InitClass()
	{
		
	}
	//重载:带参数构造函数
	public InitClass(int falg, int filed)
	{
		this.flag = falg;
		this.filed = filed;
	}
	
}

public class InitTest {
	public static void main(String[] args)
	{
		InitClass initclass1 = new InitClass();
		System.out.println("flag: " + initclass1.flag + " filed:" + initclass1.filed);
		
		InitClass initclass2 = new InitClass(300, 300);
		System.out.println("flag: " + initclass2.flag + " filed:" + initclass2.filed);
	}
}

输出如下:



要点: 1.如果不写构造函数,系统提供无参数的默认构造函数。只建立对象,不赋值。如果定义了构造函数,那么系统将不提供默认构造函数。如果需要无参数构造函数则需要自己写。可以重载构造函数,提供不同参数的构造函数。

2.初始化时执行的顺序:  第一步执行成员定义,有定义时默认赋值和初始化块,同时有这两个的时候,两者按照顺序执行。第二步执行构造函数。


五.类的静态字段&静态方法

举个栗子:

class StaticDemo
{
	//静态成员属性
	static int value = 100;
	//静态初始化块
	static 
	{
		value = 200;
	}
	//静态方法访问静态成员属性
	public static void staticPrint()
	{
		System.out.println(value);
	}
}

public class StaticTest {
	public static void main(String[] args)
	{
		//直接访问静态属性
		System.out.println(StaticDemo.value);
		
		//建立对象,通过对象访问静态成员属性
		StaticDemo staticdemo = new StaticDemo();
		System.out.println(staticdemo.value);
		
		//直接访问静态方法
		StaticDemo.staticPrint();
	}
}


要点: 1.静态成员变量或方法可以通过两种方式访问。一种是直接用类名.属性(或方法),一种是建立对象,通过对象.属性(或方法)。但是推荐直接使用类名调用。

2.静态成员函数只能访问静态成员变量,不能访问非静态的成员变量。

3.静态初始化块的调用与初始化块调用一样。但是静态初始化块只执行一次。一个类只有一份静态成员,不管建立了几个对象。





量化投资进阶:Fama-French三因子模型实战解析与Python实现 本文深入解析了Fama-French三因子模型,并提供了完整的Python实战指南。文章阐述了该模型如何通过引入市值因子(SMB)和价值因子(HML),对传统CAPM模型进行重要扩展,以更精准地解释股票收益来源。详细演示了使用Python获取数据、执行回归分析并解读结果(包括关键的阿尔法α)的全过程,并探讨了该模型在量化策略构建、风格诊断和业绩归因中的核心应用。 阅读详情

相关推荐

Ubuntu 22.04下Minkowski Engine编译避坑指南:解决Cuda 12.2与Pytorch cu118版本冲突

本文详细介绍了在Ubuntu 22.04系统中解决Minkowski Engine编译时Cuda 12.2与Pytorch cu118版本冲突的实用方法。通过修改版本检查逻辑、创建兼容符号链接等技巧,帮助开发者顺利完成编译,并提供了性能优化建议和替代方案,确保三维点云处理任务的高效运行。

weixin_42543309的博客 162

程序员自学网站整理大全(非常详细)零基础入门到精通,收藏这篇就够了

有些大厂,例如奇安信,甚至会将渗透岗位分为红蓝两方,对候选人的技术要求比较高,大部分刚入行的新人,也将渗透岗位作为后期的发展目标。①就业环境:网络安全可以在计算机科学与技术、信息通信、电子商务、互联网金融、电子政务等领域从事相关工作,还可以在政府机关事业单位、银行、保险、证券等金融机构,电信、传媒等行业从事相关工作。(有条件请支持实体书)

Libra1313的博客 1万+

支付宝支付(三):周期扣款实现注意细节

一、周期扣款实现说明 1、官方文档入口:https://opendocs.alipay.com/open/20190319114403226822/intro 2、根据官方文档说明,周期扣款有两种方式:先签约后代扣场景和支付后签约场景 3、周期扣款接入问题文档: a>https://opendocs.alipay.com/support/01rg24 b>https://opensupport.alipay.com/support/knowledge/50249/20160248753

新鲜雾霾的博客 5704

Java详细学习路线,适合新手小白

Java 学习是一个循序渐进的过程,从基础语法到高级架构,需要系统性地积累。以下是一份详细的学习路线,按「入门→进阶→高级→实战→架构」五个阶段划分,每个阶段包含核心知识点、学习目标、

zjwjya的博客 2328

如何使用ArcGIS Pro制作带基底三维地图

点击运行生成范围线,因为之前对高程进行了夸大,导致生成的范围线和地形边缘不重合,我们打开范围线的图层属性,选择高程选项卡,要素位于选择地面上,如下图所示。目前制作的三维地图下面是空的一片,现在添加一个基底,在工具箱内点击“3D Analyst工具\栅格\转换\栅格范围”,调用栅格范围工具,如下图所示。打开ArcGIS Pro,新建一个局部场景,在高程表面下,地面上点击右键,选择添加高程源图层,将需要制作三维地图的DEM数据加载进来,如下图所示。在要素图层菜单内,类型选择绝对高度,如下图所示。

3979

手把手教你用AirSim生成无人机训练数据集:RGB/深度图/分割图全攻略

本文详细介绍了如何使用AirSim仿真插件在UE4环境中生成无人机训练数据集,涵盖RGB、深度图和分割图等多种模态数据的采集与处理。通过实战指南,读者可以掌握环境配置、多模态数据采集、自动化流程设计及数据后处理等关键技术,为无人机视觉算法开发提供高质量训练数据。

weixin_29008805的博客 449

Java基础学习之Java基本语法

一、语言概述 整体语言概述 (一)Java语言概述 1.基础常识 软件:即一系列按照特定顺序组织的计算机数据和指令的集合。分为:系统软件 和 应用软件 系统软件:windows , mac os , linux ,unix,android,ios,… 应用软件:word ,ppt,画图板,… 人机交互方式: 图形化界面 vs 命令行方式 应用程序 = 算法 + 数据结构 2.计算机语言的发展迭代史 第一代:机器语言 第二代:汇编语言 第三代:高级语言 面向过程:C,Pascal、Fortran 面向对象

qq_44206313的博客 847

神州数码防火墙(DCN)NAT SSL-VPN配置

SSL-VPN是基于应用层的VPN,采用SSL协议来实现远程接入的一种新型VPN技术,比L2TP更加灵活的VPN方案。是天然的安全远程接入方案。用户可以通过浏览器的HTTPSs登录VPN的网址。SSL-VPN的认证方式包括LDAP,radius,CA,USB Key等方式。 SSL VPN的主要应用场景是保证远程用户能够在企业外部安全\高效的访问企业内部的网络资源

qq_50966485的博客 4559

从头开始学习JAVA

0前言 1)概述 本人有10年使用ASP.NET的经验,在2007年时,有三个月的Java使用经验,主要是做Swing的东西, 当时感觉MyEclipse真不好用,Java和C#的语法差不多,但是Java对通用编程比C#好多了。 由于需要,今年(2013)2月份开始,重拾Java,主要用来做Web程序。 目标:尽快掌握Java Web开发的相关知识及各项技能 2)学习策略 l

xumingxsh的专栏 1947

Ubuntu下用QEMU模拟运行OpenBMC

在调试过程中,安装了很多依赖库,具体没有记录。关于kvm,也没理清具体有什么作用。本文仅记录,用QEMU成功的将OpenBMC跑起来的过程,做备忘,也供大家参考。

Sunny的博客 1207

【学习体会】Lighttools8.4.0:设置虚拟相机+仿真结果3D显示

1.设置虚拟相机并渲染视图中的图像 添加球型光源、接收器、cube物体,设置物体表面的光学属性为简单散射

LeonJin的博客 6285

通过这些简单的步骤从头开始学习Java

Java是用于软件开发的最流行的编程语言之一。 无论您的最终目标或技能水平如何,学习和掌握Java都将为您作为开发人员打开大门。 今天,我们将讨论一些原因,我们认为您应该开始学习Java,然后提供有关入门的深入路线图。 为什么要学习Java? Java很容易学习 Java是通用的,面向对象的,高性能,解释型,安全性和多线程语言。 这是什么意思呢? 基本上,Java简化了建立网络连接所需的...

最佳 Java 编程 903

《C++面向对象程序设计》✍千处细节、万字总结(建议收藏)

《C++面向对象程序设计》✍千处细节、万字总结 文章目录《C++面向对象程序设计》✍千处细节、万字总结一、面向对象程序设计二、C++基础2.1 C++的产生和特点2.2 一个简单的C++示例程序2.3 C++在非面向对象方面对C语言的扩充输入和输出cinconst修饰符void型指针内联函数带有默认参数值的函数函数重载作用域标识符"::"强制类型转换new和delete运算符引用三、类和对象(一)3.1 类的构成3.2 成员函数的定义3.3 对象的定义和使用3.4 构造函数与析构函数构造函数成员初始化列表

像写诗一样优雅地写代码~ 78万+

【JAVA】类和对象

万字详解JAVA中的类和对象,你确定不要看看?

做梦都想要三十万年薪~ 4138

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

【Java】认识类和对象

Java是一门纯面向对象的语言(Object Oriented Program,继承OOP),在面向对象的世界里,一切皆为对象。面向对象是解决问题的一种思想,主要依靠对象之间的交互完成一件事情。

trong_ 的烂笔头 1895

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

java类和对象

自己对于类和对象的一点见解,后面会持续更新

qq_52592775的博客 5960

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Java类和对象

面向对象是解决问题的一种思想,主要依靠对象之间的交互完成一件事情。类是用来对一个实体(对象)来进行描述的,主要描述该实体(对象)具有哪些属性(外观尺寸等),哪些功能(用来干 啥),描述完成后计算机就可以识别了在java中定义类时需要用到class关键字,具体语法如下// 创建类field;// 字段(属性) 或者 成员变量method;// 行为 或者 成员方法class为定义类的关键字,ClassName为类的名字,{}中为类的主体。(关键字+类的名称+主体)//外卖平台// 食品// 商家。

2301_80176093的博客 2854

JAVA 类和对象的实例

JAVA 类和对象的实例 什么是类? 1. 类是具有相同的属性和功能的事物的抽象的集合,在面向对象程序设计中,人们把一类事物的静态属性和动态可以执行的操作组合在一起就得到类这个概念。 2. 类是个抽象的概念,用来模拟一类事物,一旦定义了一个类,这个类就永远存在。 比如:人,人有男人和女人,他们都有身高,体重等相同的属性,他们都具有走路,吃饭,工作等这些相同的,可动态执行的操作,所以可以定义“人类”...

weixin_43805637的博客 1万+

Java中类和对象

在面向对象中一切皆为对象,这里介绍Java中类和对象,有其中的成员变量、构造方法以及this的使用

2401_89019969的博客 1718

Java中的类和对象

文章目录一、类和对象的初步认识1.1 类和对象的基本概念1.2 类和类的实例化二、面向对象的封装性2.1 封装的基本概念及用法2.2 getter和setter方法三、构造方法3.1 基本语法3.2 new执行过程3.3 构造方法的重载四、this关键字4.1 调用当前对象的成员变量4.2 this调用类中的方法1. this调用类中的成员方法2.this调用构造方法3.this表示当前对象的引用五、代码块5.1 普通代码块5.2 成员代码块5.3 静态代码块 一、类和对象的初步认识 1.1 类和对象的基

罗舒淇的博客 3742

java中的类和对象

类和对象详解

m0_68989458的博客 3286

Java 类和对象

类和对象是什么?怎么使用和初始化?this又是啥?

Hiko的代码坟墓 1371

Java类和对象:类是对象的模板,对象是类的实例化

Java类和对象:类是对象的模板,对象是类的实例化

子夜的个人博客 2303
上一篇: 《这才是马云》读书笔记
下一篇: 从头开始学java--数组
puppet_master
puppet_master 领域专家: C/C++技术领域 领域专家: C/C++技术领域
博客等级 码龄12年 2695粉丝 161原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值