【java学习】对象的产生(18)

文章目录

  • 1. 初始化赋值
  • 2. 匿名对象
  • 3. 练习
    • 3.1. 习题一
    • 3.2. 习题二
  • 4. 总结


1. 初始化赋值

当一个对象被创建时,会对其中各种类型的成员变量自动进行初始化赋值。除了基本数据类型之外的变量类型都是引用类型,如上节的 Person 和前面讲过的数组。

成员变量类型初始值
byte0
short0
int0
long0L
float0.0F
double0.0D
char‘\u0000’( 表示为空 )
booleanfalse
引用类型null

举例说明

创建一个学生类:

package default_package;/*** 学生类* @author 14532*/public class Student {public String name;//姓名public int age;//年龄public String course;//课程public String interest;//兴趣/*** 显示学生个人信息*/public void showInfo() {System.out.println("姓名:" + name);System.out.println("年龄:" + age);System.out.println("姓名:" + course);System.out.println("姓名:" + interest);}}

创建Test.java调用学生类,且不给它赋初值

package default_package;public class Test {public static void main(String[] args) {Student s = new Student();s.showInfo();}}

Test.java运行结果:
在这里插入图片描述

2. 匿名对象

我们也可以不定义对象的句柄(如先Student s = new Student(); 然后s.showInfo();),而直接调用这个对象的方法。这样的对象叫做匿名对象
如:new Student().showInfo();

使用情况

  • 如果对一个对象只需要进行一次方法调用,那么就可以使用匿名对象。
  • 我们经常将匿名对象作为实参传递给一个方法调用。

3. 练习

3.1. 习题一

习题1: 创建一个 Person 类,其定义如下:
在这里插入图片描述
要求:
(1) 创建 Person 类的对象,设置该对象的name 、 age 和 sex 属性,调用 study 方法,输出字符串“ studying” ,调用 showAge() 方法显示 age 值,调用 addAge() 方法给对象的 age 属性值增加 2 岁。
(2) 创建第二个对象,执行上述操作,体会同一个类的不同对象之间的关系。

答案:
Person类

package default_package;public class Person2 {public String name;public int age;public int sex;//性别,0男1女public void study() {System.out.println("studying");}public void showAge() {System.out.println(age);}public int addAge(int i) {age += i;return age;}
}

Test.java:

package default_package;public class Test {Person2 p = new Person2();p.name = "Lucy";p.age = 11;p.sex = 1;p.study();int a = p.addAge(2);System.out.println("a:" + a + " p.age:" + p.age);}

Test.java运行结果:
在这里插入图片描述

3.2. 习题二

习题2: 利用面向对象的编程方法,设计类 Circle 计算圆的面积。

答案:
Circle类

package default_package;public class Circle {/*** 面积的计算方法* @param r* @return*/public double area(double r) {return 3.14 * r * r;}
}

Test.java:

package default_package;public class Test {double area = new Circle().area(2);System.out.println("半径为2的圆的面是:" + area);}

Test.java运行结果:
在这里插入图片描述

注意:
类的访问机制:
(1) 在一个类中的访问机制:类中的方法可以直接访问类中的成员变量。(例外:static 方法访问非 static 的成员变量,编译不通过。)
错误写法:

在这里插入图片描述
正确写法:
在这里插入图片描述

package default_package;static int t = 0;public static void main(String[] args) {System.out.println(t);}

(2) 在不同类中的访问机制:先创建要访问类的对象,再用对象访问类中定义的成员
在这里插入图片描述

4. 总结

面向对象思想“落地”法则(一)

  1. 关注于类的设计,即设计类的成员:属性 、方法
  2. 类的实例化,即创建类的对象(比如: Person p = new Person();
  3. 通过对象.属性对象.方法 执行

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

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

相关文章

提取Android盒子dtb文件

概述 最近从某鱼上掏了一个CM201-1 YS的盒子,动手倒腾倒腾,准备安装Armbian,用来做矿机,但该型号的盒子ophub上面没有完全适配的镜像,故而想尝试下,看能否整个适配镜像出来。 操作系统 Windows Linux 工…

【MediaSoup---源码篇】(五)接收RTP数据的处理

通过前面的文章我们可以了解到,当创建好Transport的时候,socket已经建立好。具备了相应的网络传输能力。我们来看一下socket接收到数据是如何处理的。 UdpSocketHandler::OnUvRecv Socket接收数据 inline void UdpSocketHandler::OnUvRecv(ssize_t nr…

TDengine时序数据库学习使用

数据库要求: 1.目前服务器只能在linux运行,先安装服务器版本v1 2.下载与v1完全匹配的客户端版本v1(客户端与服务器的版本号不匹配可能访问不了服务器) 第一步 安装 安装服务器注意,安装教程: 使用安装…

Linux中scp命令复制文件

scp命令是在Linux中用于在本地主机和远程主机之间进行安全传输文件的命令。下面是使用scp命令的语法: scp [参数] [来源路径] [目标路径]参数: -r:递归复制整个目录。-P:指定远程主机的端口。-p:保留原文件的修改时间…

(蓝宝书)网络安全——CTF那些事儿

欢迎关注博主 Mindtechnist 或加入【智能科技社区】一起学习和分享Linux、C、C、Python、Matlab,机器人运动控制、多机器人协作,智能优化算法,滤波估计、多传感器信息融合,机器学习,人工智能等相关领域的知识和技术。关…

CocosCreator 面试题(七)优化cocos creator 包体体积

优化 Cocos Creator 包体体积是一个重要的任务,可以通过以下几个方面进行优化: 图片文件体积优化: 压缩图片:使用工具如 TinyPNG、ImageOptim 等对图片进行压缩,减小文件大小而保持可接受的质量。图片格式选择&#…

WPF 控件分辨率自适应问题

WPF 控件分辨率自适应时,我首先想到的是使用ViewBox控件来做分辨率自适应。 ViewBox这个控件通常和其他控件结合起来使用,是WPF中非常有用的控件。定义一个内容容器。ViewBox组件的作用是拉伸或延展位于其中的组件,以填满可用空间&#xff0…

深度学习问答题(更新中)

1. 各个激活函数的优缺点? 2. 为什么ReLU常用于神经网络的激活函数? 在前向传播和反向传播过程中,ReLU相比于Sigmoid等激活函数计算量小;避免梯度消失问题。对于深层网络,Sigmoid函数反向传播时,很容易就…

mp4音视频分离技术

文章目录 问题描述一、分离MP3二、分离无声音的MP4三、结果 问题描述 MP4视频想拆分成一个MP3音频和一个无声音的MP4文件 一、分离MP3 ffmpeg -i C:\Users\Administrator\Desktop\一个文件夹\我在财神殿里长跪不起_完整版MV.mp4 -vn C:\Users\Administrator\Desktop\一个文件…

分布式数据库HBase(林子雨慕课课程)

文章目录 4. 分布式数据库HBase4.1 HBase简介4.2 HBase数据模型4.3 HBase的实现原理4.4 HBase运行机制4.5 HBase的应用方案4.6 HBase安装和编程实战 4. 分布式数据库HBase 4.1 HBase简介 HBase是BigTable的开源实现 对于网页搜索主要分为两个阶段 1.建立整个网页索引&#xf…

如何在 Android 中完成一个 APT 项目的开发?

前言 APT(Annotation Processing Tool)即注解处理器,是一种处理注解的工具。 APT在编译时期扫描处理源代码中的注解,开发中可以根据注解,利用APT自动生成Java代码,减少冗余的代码和手动的代码输入过程,提升了编码效率…

pytest + yaml 框架 -55. raw 不转义模板语法

前言 在yaml 文件中,设置的引用变量语法是${var}, 最近有小伙伴提到一个需求:请求参数的内容需要有特殊符号${var}, 希望不被转义,不要引用变量,直接用原始数据即可。 raw 忽略模板语法 Jinja2提供了 “raw” 语句来忽略所有模…

Gralloc ION DMABUF in Camera Display

目录 Background knowledge Introduction ia pa va and memory addressing Memory Addressing Page Frame Management Memory area management DMA IOVA and IOMMU Introduce DMABUF What is DMABUF DMABUF 关键概念 DMABUF APIS –The Exporter DMABUF APIS –The…

上海亚商投顾:沪指探底回升 华为汽车概念股集体大涨

上海亚商投顾前言:无惧大盘涨跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。 一.市场情绪 三大指数昨日探底回升,早盘一度集体跌超1%,随后震荡回暖,深成指、创业板指…

交通物流模型 | 基于多重时空信息融合网络的城市网约车需求预测

交通物流模型 | 基于多重时空信息融合网络的城市网约车需求预测 城市网约车需求预测是网约车系统决策、出租车调度和智能交通建设的一项长期且具有挑战性的任务。准确的城市网约车需求预测可以提升车辆的利用和调度,减少等待时间和交通拥堵。现有的交通流预测方法大部分采用基…

LeetCode二叉树OJ

目录 剑指 Offer 55 - I. 二叉树的深度 - 力扣(LeetCode) 965. 单值二叉树 - 力扣(LeetCode) 100. 相同的树 - 力扣(LeetCode) 101. 对称二叉树 - 力扣(LeetCode) 二叉树遍历_牛客题…

Vue组件化开发步骤

Vue组件化开发的步骤可以简单概括为以下几步: 划分组件:根据页面的布局和功能需求,将页面划分成若干个组件,每个组件具备独立的功能和样式。 编写组件:针对每个组件,编写组件的模板、样式和逻辑代码&#…

uniapp 点击 富文本元素 图片 可以预览(非nvue)

我使用的是uniapp 官方推荐的组件 rich-text,一般我能用官方级用官方,更有保障一些。 一、整体逻辑 1. 定义一段html标签字符串,里面包含图片 2. 将字符串放入rich-text组件中,绑定点击事件itemclick 3. 通过点击事件获取到图片ur…

TensorFlow学习:使用官方模型进行图像分类、使用自己的数据对模型进行微调

前言 上一篇文章 TensorFlow案例学习:对服装图像进行分类 中我们跟随官方文档学习了如何进行预处理数据、构建模型、训练模型等。但是对于像我这样的业余玩家来说训练一个模型是非常困难的。所以为什么我们不站在巨人的肩膀上,使用已经训练好了的成熟模…

VIT(Vision Transformer)学习-模型理解(一)

VIT (Vision Transformer) 模型论文代码(源码)从零详细解读,看不懂来打我_哔哩哔哩_bilibili VIT模型架构图 1.图片切分为patch 2. patch转化为embedding 1)将patch展平为一维长度 2)token embedding:将拉平之后的序列映射…