java类和对象之认识1

news2025/2/27 5:28:41

文章目录

  • 一、Java类
  • 二、Java成员变量
  • 三、Java方法
  • 四、Java类的构造方法
  • 五、Java创建对象
  • 六、Java使用对象
  • 七、Java对象的引用和实体
  • 八、Java类与程序的基本结构
  • 九、Java参数传值
  • 总结

一、Java类

类是组成Java程序的基本要素,一个Java应用程序就是由若干个类所构成。类是Java语言中最重要的“数据类型”,类声明的变量被称作对象。

类的定义包括两部分:类声明和类体。基本格式如下:

class 类名 {
    类体的内容
}

class是关键字,用来定义类。“class 类名”是类的声明部分,类名必须是合法的Java标识符。两个大括号{}及其之间的内容是类体。

例如:

class Factory {
    float a[];
    Workman zhang;
}

“class Factory”称为类声明,“Factory”是类名,“{float a[];Workman zhang;}”为类体。
类的目的是抽象出一类事物共有的属性和行为,并用一定的语法格式来描述所抽象出的属性和行为。抽象的关键是抓住事物的两个方面:属性和行为。因此,类体的内容由两部分构成:

1)变量的声明:用来体现对象的属性。

2)方法的定义:方法可以对类中声明的变量进行操作,体现对象所具有的行为。

二、Java成员变量

类体的内容分为变量的声明和方法的定义,声明变量部分所声明的变量被称为成员变量或域变量。

成员变量的类型可以是Java中的任何一种数据类型,包括基本类型:整型、浮点型、字符型、逻辑类型;引用类型:数组、对象和接口。

成员变量在整个类内都有效,其有效性与它在类体中书写的先后位置无关。但是不提倡把成员变量的声明分散地写在方法之间,人们习惯先介绍属性再介绍行为。

例如:

class Factory {
    float a[];
    Workman zhang;
}

Factory类的成员变量a是float类型数组,zhang是Workman类声明的变量,即对象。

三、Java方法

类体的内容分为变量的声明和方法的定义,方法的定义包括两部分:方法头和方法体。基本格式如下:

方法头{
    方法体的内容
}

方法头由方法的类型、名称和名称之后的一对小括号以及其中的参数列表所构成。无参数方法定义的方法头中没有参数列表,即方法名称之后一对小括号中无任何内容。

例如:

int speak() //无参数的方法头
{
return 123;
}
int add(int x,int y,int z) //有参数的方法头
{
    return x+y+z;
}

根据程序的需要,方法返回的数据的类型可以是Java中的任何一种数据类型,当一个方法不需要返回数据时,返回类型必须是void。很多方法声明中都给出方法的参数,参数是用逗号隔开的一些变量声明。方法的参数可以是任意的Java数据类型。

方法声明之后的一对大括号{,}以及它们之间的内容称为方法的方法体。方法体的内容包括局部变量的声明和Java语句,即在方法体内可以对成员变量和方法体中声明的局部变量进行操作。在方法体中声明的变量和方法的参数被称作局部变量。

四、Java类的构造方法

构造方法是类中的一种特殊方法,当程序用类创建对象时需使用它的构造方法。类中的构造方法的名字必须与它所在的类的名字完全相同,而且没有类型。允许一个类中编写若干个构造方法,但必须保证他们的参数不同,参数不同是指:参数的个数不同,或参数个数相同,但参数列表中对应的某个参数的类型不同。

注意:

如果类中没有编写构造方法,系统会默认该类只有一个构造方法,该默认的构造方法是无参数的,且方法体中没有语句。

如果类里定义了一个或多个构造方法,那么Java不提供默认的构造方法。例如:下列Point类有两个构造方法。

class Point {
    int x,y;
    Point () {
        x = 1;
        y = 1;
    }
    Point (int a,int b) {
        x = a;
        y = b;
    }
}

需要特别注意的是,构造方法没有类型。

例如:

class Point {
    int x,y;
    Point () { //是构造方法
        x = 1;
        y = 1;
    }
    void Point (int a,int b) { //不是构造方法,该方法的类型是void
        x = a;
        y = b;
    }
    int Point () { //不是构造方法,该方法的类型是int
        return 12;
    }
}

五、Java创建对象

类是面向对象语言中最重要的一种数据类型,可以用类来声明变量。在面向对象语言中,用类声明的变量被称为对象。和基本数据类型不同,在用类声明对象后,还必须要创建对象,即为声明的对象分配所拥有的变量,确定对象所具有的属性,当使用一个类创建一个对象时,也称给出了这个类的一个实例。通俗地讲,类是创建对象的模板,没有类就没有对象。创建一个对象包括对象的声明和为对象分配变量两个步骤。

1. 对象的声明一般格式为:

类的名字 对象名字;

例如:

Lader lader;

2. 为声明的对象分配变量:

使用new运算符和类的构造方法为声明的对象分配变量,即创建对象。如果类中没有构造方法,系统会调用默认的构造方法,默认的构造方法是无参数的,且方法体中没有语句。

例如:

class Point {
    int x,y;
    Point (int a,int b) {
        x = a;
        y = b;
    }
}
public class Main {
    public static void main(String[] args) {
        Point p1,p2; //声明对象p1和p2
        p1 = new Point (10,10); //为对象分配变量(使用new和类中的构造方法)
        p2 = new Point (23,45); //为对象分配变量(使用new和类中的构造方法)
    }
}

六、Java使用对象

抽象的目的是产生类,而类的目的是创建具有属性和行为的对象。对象不仅可以操作自己的变量改变状态,而且能调用类中的方法产生一定的行为。

通过使用运算符“.” (点运算符也称引用运算符或访问运算符),对象可以实现对自己的变量的访问和方法的调用。

对象创建之后,就有了自己的变量,即对象的实体。对象通过使用点运算符“.”访问自己的变量,访问格式:

对象.变量;

对象创建之后,可以使用点运算符“.”调用创建它的类中的方法,从而产生一定的行为,调用格式:

对象.方法;

当对象调用方法时,方法中出现的成员变量就是指分配给该对象的变量。

class XiyoujiRenwu {
    float height,weight;
    String head;
    void speak (String s) {
        head = "歪头";
        System.out.println(s);
    }
}
public class Main {
    public static void main(String[] args) {
        XiyoujiRenwu zhubajie,sunwukong; //声明对象
        zhubajie = new XiyoujiRenwu(); //为对象分配变量
        sunwukong = new XiyoujiRenwu();
        zhubajie.height = 1.80f; //对象给自己的变量赋值
        zhubajie.head = "大头";
        sunwukong.height = 1.60f; //对象给自己的变量赋值
        sunwukong.weight = 1000f;
        sunwukong.head = "长发飘飘";
        System.out.println("zhubajie的身高:"+zhubajie.height);
        System.out.println("zhubajie的头:"+zhubajie.head);
        System.out.println("sunwukong的重量:"+sunwukong.weight);
        System.out.println("sunwukong的头:"+sunwukong.head);
        zhubajie.speak("俺老猪想娶媳妇"); //对象调用方法
        System.out.print1n("zhubajie现在的头:"+zhubajie.head);
        sunwukong.speak("俺老孙想骗八戒背我"); //对象调用方法
        System.out.println("sunwukong现在的头:"+sunwukong.head);
    }
}

在这里插入图片描述

七、Java对象的引用和实体

类所声明的变量被称为对象,对象也就是变量负责存放引用,以确保对象可以操作分配给该对象的变量以及调用类中的方法,分配给对象的变量被称作对象的实体。

Point point = new Point()

Point:类名

point:对象名称

new Point():对象的实体

对象的引用就是存放对象的内存地址。

注意:

在编写程序时要避免使用空对象。

我们把没有实体的对象称作空对象,空对象不能使用,即不能让一个空对象去调用方法产生行为。假如程序中使用了空对象,程序在运行时会出现异常NullPointerException。由于对象可以动态地被分配实体,所以Java编译器对空对象不做检查。

结论:

一个类声明的两个对象如果具有相同的引用,二者就具有完全相同的变量也就是实体。当程序用一个类创建两个对象object1和object2后,二者的引用是不同的。

在Java中,对于同一个类的两个对象object1和object2,允许进行如下的赋值操作:

object1 = object2;

这样object1中存放的将是object2的值,即object2的引用,因此,object1所拥有的变量也就是实体就和object2完全一样。

八、Java类与程序的基本结构

一个Java应用程序由若干个类所构成,这些类可以在一个源文件中,也可以分布在若干个源文件中。

Java应用程序有一个主类,即含有main方法的类,Java应用程序从主类的main方法开始执行。

在编写一个Java应用程序时,可以编写若干个Java源文件,将应用程序涉及的Java源文件保存在相同的目录中,分别编译通过,得到Java应用程序所需要的字节码文件,然后再运行主类。

一个Java程序可以将它使用的各个类分别存放在不同的源文件中,也可以将它使用的类存放在一个源文件中,一个源文件中的类可以被多个Java程序使用。

从编译角度看,当程序需要修改某个类时,只需要重新编译该类所在的源文件即可,不必重新编译其他类所在的源文件,这对系统的维护是十分有利的。

注意:

尽管一个Java源文件中可以有多个类,但仍然提倡在一个Java源文件中只编写一个类。

九、Java参数传值

方法中最重要的部分之一就是方法的参数,参数属于局部变量,当对象调用方法时,参数被分配内存空间,并要求调用者向参数传递值,即方法被调用时,参数变量必须有具体的值。

在Java中,方法中参数变量的值是调用者指定的值的拷贝,方法如果改变参数的值,不会影响向参数“传值”的变量的值。

基本数据类型参数的传值:

对于基本数据类型的参数,向该参数传递的值的级别不可以高于该参数的级别。

例如:不可以向int型参数传递一个float值,但可以向double型参数传递一个float值。

引用类型参数的传值:

Java的引用型数据包括数组、对象以及接口。当参数是引用类型时,“传值”传递的是变量中存放的“引用”,而不是变量所引用的实体。

注意:

对于两个相同类型的引用型变量,如果具有同样的引用,就会拥有同样的实体,因此,如果改变参数变量所引用的实体,就会导致原变量的实体发生同样的变化;但是,改变参数中存放的“引用”不会影响向其传值的变量中存放的“引用”。

学习来自此链接

总结

不要害怕失去,你所失去的,本来就不属于你,也不要害怕伤害,能伤害你的,都是你的劫数,繁华三千,看淡即是浮云,烦恼无数,想开就是晴天。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/520605.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

永磁同步电机(PMSM)无传感器控制基于龙伯格观测器Matlab/Simulink仿真分析

文章目录 前言一、龙伯格观测器1.1.龙伯格观测器的原理2.2.龙伯格观测器的误差2.3.PMSM龙伯格观测器的建立 二、Matlab/Simulink仿真分析2.1.仿真电路分析2.1.1.电机控制模式切换10ms任务2.1.2.速度环控制2ms任务2.1.3. 电流环控制50us任务2.1.4.电机主电路 2.2.仿真结果分析 总…

单调栈模板总结及应用

文章和代码已经归档至【Github仓库:https://github.com/timerring/algorithms-notes 】或者公众号【AIShareLab】回复 算法笔记 也可获取。 文章目录 单调栈模板栈算法模板例题:单调栈基本思路code 单调栈模板 栈:先进后出。 队列&#xff…

shell数组(包含排序算法)

目录 一:数组定义方法 1、方法一 2、方法二 ​3、方法三 ​4、方法四 5、判断数组是否完整 (1)方法一 (2)方法二:通过脚本 二:获取数组值 1、获取数组长度 2、获取数组数据列表 3、获…

ipad专用笔和其他笔有什么区别?第三方电容笔了解

要是ipad仅仅用来玩游戏,看电视的话,也太浪费ipad平板的作用了。ipad这个产品,用途还是很广的,既能用于职业绘画,又能用于学习笔记。许多人都觉得苹果的电容笔非常好,但与普通的电容笔相比,它的…

Python常用的开发工具合集

​ Python是一种功能强大且易于学习的编程语言,被广泛应用于数据科学、机器学习、Web开发等领域。随着Python在各个领域的应用越来越广泛,越来越多的Python开发工具也涌现出来。但是,对于新手来说,选择一款合适的Python开发工具可…

美本统计学基础笔记

美本统计学基础笔记 1.基础2.概率3.离散概率分布Discrete Probability Distributions4.The Normal Probability Distribution正态概率分布5.Sampling Distributions采样分布6.Large-Sample Estimation大样本估计7.Large-Sample Tests of Hypotheses假设的大样本检验 1.基础 左…

颜值打分代码实例讲解(paddle框架)

数据集介绍 训练数据集为华南理工大学实验室公布的数据集 数据中包含500张女生图片,分别由70人进行打分,最终取平均值即为该图片的打分情况。 我们在实践中将图片分值设定为1-5。 500张图片中,450张用于训练,50张用于验证。 任…

快速落地基于“AIGC+数字人”的数字化内容生产

谁不想有一个可爱的数字人形象呢?在日常的工作和娱乐中,越来越多的数字人虚拟形象与大家见面,他们可以是主播,也可以是语音助手,还可以是你自己的虚拟宠物。只有更快更精准的生成数字人,才能让数字人更加普…

【JS】1680- 重学 JavaScript API - Beacon API

❝ 前期回顾:1.Page Visibility API 2.Broadcast Channel API ❞ 1. 什么是 Beacon API 1.1 概念介绍 Beacon API 是 HTML5 提供的一种新的浏览器 API,可以用于在浏览器后台异步地发送数据,而不影响当前页面的加载和性能。通过 Beacon API&am…

FE_Vue学习笔记 常用指令的学习【v-model filters v-text v-html v-cloak v-once v-pre 自定义指令】

1 收集表单数据 v-model 收集表单数据&#xff1a; 若&#xff1a;<input type"text">&#xff0c;则v-model收集的是value的值&#xff0c;用户输入的就是value值。 若&#xff1a;<input type"radio">&#xff0c;则v-modle收集的是value的…

Eclipse配置tomcat服务器

1.首先下载tomcat&#xff0c;下载地址&#xff1a;http://maven.apache.org/&#xff0c;下载好后解压至本地磁盘根目录&#xff0c;我是解压至D盘根目录 2.打开Eclipse&#xff0c;进入Window->Preferences 3.找到Server->Runtime Environments 4.再右边点击Add添加一个…

【手撕代码】HDB3编解码

【手撕代码】HDB3编解码 1. 来源和需求 HDB3编解码任务来源于2023年3月4日“FPGA技术讨论群”的一次活动《101群第一次FPGA编码交流研讨会》&#xff0c;要求设计HDB3编解码&#xff0c;本篇文章作者【roy2022】&#xff0c;经作者授权后转发&#xff0c;以下所有文件版权归作者…

软考-高级系统架构师经验分享

【摘要】 2022年7月17从女朋友嘴里了解到有软考这个东西,7月20——7月23日,上班空闲时间百度详细了解了软考的内容、大纲、通过之后的收益,于是决定备考高级架构师考试并上网收集了所有能收集的资料(不论好坏,完成收集后再筛选);经过3个月的复习,2022年11月5日,第一次…

Extra Finance 主网测试版上线,完成任务领空投

DeFi 的广泛应用将上一轮牛市推向顶峰&#xff0c;也让区块链具有了更多的拓展性。经过熊市的洗礼&#xff0c;DeFi 应用开始升级和优化&#xff0c;并且衍生出更多更加具有实用性和创新性的新产品。DeFi 已经成为区块链的基础设施&#xff0c;为更多的应用和创新提供帮助。下一…

ENVI为不含地理参考信息的栅格影像手动添加地理、投影坐标系

本文介绍基于ENVI软件&#xff0c;对不含有任何地理参考信息的栅格遥感影像添加地理坐标系或投影坐标系等地理参考信息的方法。 我们先来看一下本文需要实现的需求。现有以下两景遥感影像&#xff0c;其位于不同的空间位置&#xff1b;但由于二者均不含任何地理参考信息&#…

SOFA Weekly|SOFAArk 社区会议回顾、Layotto 社区会议预告、社区本周贡献

SOFA WEEKLY | 每周精选 筛选每周精华问答&#xff0c;同步开源进展 欢迎留言互动&#xff5e; SOFAStack&#xff08;Scalable Open Financial Architecture Stack&#xff09;是蚂蚁集团自主研发的金融级云原生架构&#xff0c;包含了构建金融级云原生架构所需的各个组件&am…

Cisco 产品下载链接汇总 2023 持续更新中

Cisco 产品链接汇总 2023 持续更新中 IOS-XE, IOS-XR, NX-OS & FXOS based on linux kernel 请访问原文链接&#xff1a;https://sysin.org/blog/cisco/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;sysin.org 本站 Cisco 产品汇…

UE5利用Cesium for Unreal 部署和加载服务器上的倾斜摄影

主要步骤&#xff1a; 下载 Tomcat 下载 JDK 设置系统变量 运行UE程序 下载 Tomcat 网址&#xff1a;https://tomcat.apache.org/ 可以下载最新版&#xff0c;也可以下载历史版本&#xff0c;查看 2.下载JDK https://www.oracle.com/java/technologies/downloads/ 根据Tom…

算法修炼之练气篇——练气二十一层

博主&#xff1a;命运之光 专栏&#xff1a;算法修炼之练气篇 前言&#xff1a;每天练习五道题&#xff0c;炼气篇大概会练习200道题左右&#xff0c;题目有C语言网上的题&#xff0c;也有洛谷上面的题&#xff0c;题目简单适合新手入门。&#xff08;代码都是命运之光自己写的…

OLS样本估计量抽样分布模拟

OLS样本估计量抽样分布模拟 文章目录 OLS样本估计量抽样分布模拟1 OLS估计量分布2 R语言实现 1 OLS估计量分布 对于线性回归方程 Y β 0 β 1 X ε Y \beta_0\beta_1 X \varepsilon Yβ0​β1​Xε 利用普通最小二乘法(OLS&#xff09;估计上述方程参数使的假定(之一)是…