Java(一)(引用类型的参数在传递,方法重载,面向对象编程基础)

基本类型和引用类型的参数在传递的时候有什么不同?

基本类型的值传递:参数传输存储的数据值

引用类型的值传递:参数传输存储的地址值

 传递数组名字的时候,传递的是数组的地址,change方法可以通过地址直接访问我们在堆内存中开辟的数组,然后改变数组,数组中的元素发生变化

方法重载

一个类中,出现多个方法的名称相同,但是他们的形参列表是不同的,那么这些方法成为方法重载了

注意事项:

(1)一个类中,只要一些方法的名称相同,形参列表不同,那么他们就是方法重载了,其他的都不管

(2)形参列表不同指的是:形参的个数,类型,顺序不同,不关心形参的名称

面向对象编程基础

简单的快速入门

开发一个一个的对象,把数据交给对象然后调用对象的方法来完成对数据的处理

1.我们先整一个对象

对象就是一种特殊的数据结构

package hello;public class student {
// 定义变量String name;double chinese;double math;
//定义方法  // 方法不用加staticpublic void printTotalScore(){System.out.println(name+"总成绩"+(chinese+math));}public void printAverageScore(){System.out.println(name+"平均成绩"+(chinese+math)/2);}
}

class也就是类,也称为对象的设计图(或者对象的模板)

2.调用对象  

创建对象:类名  对象名 = new 构造器()

对象的使用: 对象名.成员变量   对象名.成员方法

package hello;public class test {// 面向对象快速入门// 创建一个学生对象,封装阿衰的数据public static void main(String[] args) {student s1 = new student();s1.name = "阿衰";s1.chinese = 100;s1.math = 100;s1.printTotalScore();s1.printAverageScore();}
}

注意事项: 

1.类型建议用英文单词,满足驼峰模式,比如:Student,Car等

2.类中定义的变量也称为成员变量(对象的属性),类中定义的方法也称为成员方法(对象的行为)

3.成员变量本身存在默认值,定义成员变量的时候也不需要赋初始值(应为不同的对象的属性一般是不一样的)

4.一个代码文件中,可以写多个class类,但是只能一个用public修饰,重点强调:public修饰的类型要称为代码文件名

5.如果某个对象没有对象引用它,则对象无法被操作了,该对象会成为所谓的垃圾对象

java中会有自动垃圾回收机制,不用担心浪费空间

this

this就是一个变量,可以用在方法中,来拿当前对象

具体用在哪?具体用在有参数构造器中的,同时也可以用在方法中

哪个对象调用这个方法,this就是哪个对象的地址

this:主要是来解决名称冲突的问题,下面的学生考试的成绩和录取的成绩250名字相互冲突了,所以在学生成绩前面加this,表示这个是学生的成绩

下面是this用在方法中

下面是this用在构造器中

构造器的使用

作用:初始化一个类的对象,并返回一个对象的地址

详细格式: 修饰符,类名(形参){......}

分类:(1)无参构造器:初始化一个类的对象,并返回一个对象的地址,默认值

(2)有参构造器:初始化一个类的对象,并返回一个对象的地址,同时指定值

调用: 类型 对象 = new 构造器();

啥叫构造器?我们在创建一个对象的时候,

student s1 = new student();后面有一个括号

这个括号会指定一个对象创建的一种方式

上面是无参数的构造器,我们上面在创建s1的时候没有指定()括号里面的参数,那就是按照无参数的构造器来创建对象的,类在设计的时候,如果不写构造器,java是会为类自动生成一个无参的构造器的

下面是有参数的构造器,这种构造器只要将参数传进来,就会自动指定好成员的属性

一旦有参数构造器,java就不会帮我们自动生成无参数的构造器了,所以建立自己写一个无参数构造器

封装

封装的规范:合理隐藏,合理暴露

我们可以将成员变量隐藏起来,然后设置一些方法,来进行一系列的操作

我们通过publicprivate 这两个关键字来控制隐藏和暴露

我们举个例子

我们应该调用里面的方法

这样做到合理暴露和合理隐藏

实体javaBean

什么是实体类

就是一种特殊形式的类,满足下面的两个要求

(1)这个类中的成员变量都是私有的,并且要对外提供相应的get...和set...方法

(2)类中必须要有一个公共的无参的构造器

package hello;public class student {// 1.必须私有成员变量,并为每个成员变量都提供get set方法private String name;private double score;
// 有参数构造器public student(String name, double score) {this.name = name;this.score = score;}private double score;
// 2. 必须为类提供一个公共的无参数构造器public student() {}public String getName() {return name;}public void setName(String name) {this.name = name;}public double getScore() {return score;}public void setScore(double score) {this.score = score;}
}

我们创建上面的实体类对象

package hello;public class test {public static void main(String[] args) {student s1 = new student();s1.setName("阿衰");s1.setScore(99);System.out.println(s1.getName());System.out.println(s1.getScore());}
}

区别成员变量和局部变量的区别

1.类中位置不同:成员变量(类中和方法外)  , 局部变量(常见于方法中)

2.初始化不同:成员变量(有默认值,不需要初始化赋值  整型是0,浮点型是0.0,引用类型是null,布尔型是false),局部变量(没有默认值,使用之前必须完成赋值)

3.内存位置不同:成员变量(存在于堆内存),局部变量(栈内存)

4.作用域不同: 成员变量(整个对象),局部变量(在所归属的大括号中)

5.生命周期不同:成员变量(与对象同生共死),局部变量(方法调用而生,方法结束而死)

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

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

相关文章

K-Means算法进行分类

已知数据集D中有9个数据点,分别是(1,2),(2,3), (2,1), (3,1),(2,4),(3,5),(4,3),(1,5),(4,2)。采用K-Means算法进行聚类,k2,设初始中心点为(1.1,2.2),(2.3,3.…

在Rust编程中使用泛型

1.摘要 Rust中的泛型可以让我们为像函数签名或结构体这样的项创建定义, 这样它们就可以用于多种不同的具体数据类型。下面的内容将涉及泛型定义函数、结构体、枚举和方法, 还将讨论泛型如何影响代码性能。 2.在函数定义中使用泛型 当使用泛型定义函数时,本来在函…

竞赛选题 疲劳驾驶检测系统 python

文章目录 0 前言1 课题背景2 Dlib人脸识别2.1 简介2.2 Dlib优点2.3 相关代码2.4 人脸数据库2.5 人脸录入加识别效果 3 疲劳检测算法3.1 眼睛检测算法3.2 打哈欠检测算法3.3 点头检测算法 4 PyQt54.1 简介4.2相关界面代码 5 最后 0 前言 🔥 优质竞赛项目系列&#x…

基于Adapter用CLIP进行Few-shot Image Classification

文章目录 【ECCV 2022】《Tip-Adapter: Training-free Adaption of CLIP for Few-shot Classification》【NeuIPS 2023】《Meta-Adapter: An Online Few-shot Learner for Vision-Language Model》 【ECCV 2022】《Tip-Adapter: Training-free Adaption of CLIP for Few-shot C…

使用Redis实现分布式锁

Hi, I’m Shendi 使用Redis实现分布式锁 需求场景 需要使用到分布式锁的场景非常多,例如抢单等并发场景,这里举一个例子。 有一个商品,限量出售100个,一个用户下单,数量就减少一个,当剩下最后一个时&…

Unity在Windows选项下没有Auto Streaming

Unity在Windows选项下没有Auto Streaming Unity Auto Streaming插件按网上说的不太好使最终解决方案 Unity Auto Streaming插件 我用的版本是个人版免费版,版本号是:2021.2.5f1c1,我的里边Windows下看不到Auto Streaming选项,就像下边这张图…

基于猕猴感觉运动皮层Spike信号的运动解码分析不同运动参数对解码的影响

公开数据集中文版详细描述参考前文:https://editor.csdn.net/md/?not_checkout1&spm1011.2124.3001.6192神经元Spike信号分析参考前文:https://blog.csdn.net/qq_43811536/article/details/134359566?spm1001.2014.3001.5501神经元运动调制分析参考…

CUDA编程一、基本概念和cuda向量加法

目录 一、cuda编程的基本概念入门 1、GPU架构和存储结构 2、cuda编程模型 3、cuda编程流程 二、cuda向量加法实践 1、代码实现 2、代码运行和结果 有一段时间对模型加速比较感兴趣,其中的一块儿内容就是使用C和cuda算子优化之类一起给模型推理提速。之前一直…

HAL库STM32串口开启DMA接收数据

STM32CubeMx的配置 此博客仅仅作为记录,这个像是有bug一样,有时候好使,有时候不好,所以趁现在好使赶紧记录一下,很多地方用到串口接收数据,DMA又是一种非常好的接收方式,可以节约CPU的时间&…

Unity - Cinemachine

动态获取Cinemachine的内部组件 vCam.GetCinemachineComponent<T>() 动态修改Cinemachine的Transposer属性 var vCamComp transfrom.GetComponent<CinemachineVirtualCamera>(); var transposerComp vCamComp.GetCinemachineComponent<CinemachineTransposer&…

2023最新最全【OpenMV】 入门教程

1. 什么是OpenMV OpenMV 是一个开源&#xff0c;低成本&#xff0c;功能强大的 机器视觉模块。 OpenMV上的机器视觉算法包括 寻找色块、人脸检测、眼球跟踪、边缘检测、标志跟踪 等。 以STM32F427CPU为核心&#xff0c;集成了OV7725摄像头芯片&#xff0c;在小巧的硬件模块上&a…

我们应该如何理解Java集合框架的关键知识点?

我们应该如何理解Java集合框架的关键知识点&#xff1f; java集合是教存取数据的一个容器&#xff0c;涵盖了各种存和取的方式&#xff0c;应用在不同的工作场景中&#xff0c;要想了解java集合的相关知识&#xff0c;建议先好好学习一下数据结构这本书。最近很多小伙伴找我&am…