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

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

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

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

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

方法重载

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

注意事项:

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

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

面向对象编程基础

简单的快速入门

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

1.我们先整一个对象

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

package hello;

public class student {
// 定义变量
    String name;
    double chinese;
    double math;
//定义方法  // 方法不用加static
    public 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.生命周期不同:成员变量(与对象同生共死),局部变量(方法调用而生,方法结束而死)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Google Chrome 任意文件读取 (CVE-2023-4357)漏洞复现

Google Chrome 任意文件读取 (CVE-2023-4357)漏洞复现 1.漏洞描述 该漏洞的存在是由于 Google Chrome 中用户提供的 XML 输入验证不足。远程攻击者可以创建特制网页,诱骗受害者访问该网页并获取用户系统上的敏感信息。远程攻击者可利用该漏洞通过构建的 HTML 页面…

Linux进程控制

目录 写实拷贝 为什么要写实拷贝? fork函数 返回值 常规用法 调用失败的原因 进程终止 情况分类 a.代码正常执行完了 b.崩溃了(进程异常) 进程的退出码 c语言提供的系统的退出码 如何理解进程退出 操作都有哪些方式&#xff…

「Verilog学习笔记」使用3-8译码器①实现逻辑函数

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点,刷题网站用的是牛客网 timescale 1ns/1nsmodule decoder_38(input E1_n ,input E2_n ,input E3 ,input A0 ,input A1…

ExoPlayer架构详解与源码分析(9)——TsExtractor

系列文章目录 ExoPlayer架构详解与源码分析(1)——前言 ExoPlayer架构详解与源码分析(2)——Player ExoPlayer架构详解与源码分析(3)——Timeline ExoPlayer架构详解与源码分析(4)—…

Linux 阻塞机制及等待队列

原文地址: http://www.cnblogs.com/gdk-0078/p/5172941.html 阻塞与非阻塞是设备访问的两种方式。驱动程序需要提供阻塞(等待队列,中断)和非阻塞方式(轮询,异步通知)访问设备。在写阻塞与非阻塞的驱动程序时…

DB9串口引脚介绍

一、公头和母头 图片示意源于网络: 二、 每个引脚的功能定义 公头:所有排针式的接头(5针朝上,从左到右序号依次是1~9) 母头:所有插槽式的接孔(5孔朝上,从右到左序号依次是1~9) 针…

Go 之 captcha 生成图像验证码

目前 chptcha 好像只可以生成纯数字的图像验证码,不过对于普通简单应用来说也足够了。captcha默认将store封装到内部,未提供对外操作的接口,因此使用自己显式生成的store,可以通过store自定义要生成的验证码。 package mainimpor…

“升级图片管理,优化工作流程——轻松将JPG转为PNG“

在图片时代,无论是工作还是生活,图片管理都显得尤为重要。批量处理图片,将JPG格式轻松转换为PNG格式,能够使您的图片管理更优化,提高工作效率。 首先,我们进入首助编辑高手主页面,会看到有多种…

Springboot更新用户密码

UserController PatchMapping("/updatePwd")//RequestBody注解&#xff0c;mvc框架才能自动的去读取请求体里的json数据&#xff0c;转换成map集合对象public Result updatePwd(RequestBody Map<String,String> params){//1.校验数据String oldPwd params.get…

Leetcode——最长递增子序列

1. 题目链接&#xff1a;300. 最长递增子序列 2. 题目描述&#xff1a; 给你一个整数数组 nums &#xff0c;找到其中最长严格递增子序列的长度。 子序列 是由数组派生而来的序列&#xff0c;删除&#xff08;或不删除&#xff09;数组中的元素而不改变其余元素的顺序。例如&a…

C++项目案例圆和点的关系 (涉及知识点:头文件定义类,cpp文件实现类,类和作用域,linux编译运行c++项目)

一.项目描述 点与圆有三种关系&#xff1a; 点在圆外 点在圆上 点在圆内计算点到圆心的距离就能判断点在圆的哪个地方。二.项目结构 三.include文件 3.1 Circle类的声明 Circle.h // 防止头文件重复包含 #pragma once // #include<iostream> #include "Point.h&…

JPA整合Sqlite解决Dialect报错问题, 最新版Hibernate6

前言 我个人项目中&#xff0c;不想使用太重的数据库&#xff0c;而内嵌数据库中SQLite又是最受欢迎的&#xff0c; 因此决定采用这个数据库。 可是JPA并不支持Sqlite&#xff0c;这篇文章就是记录如何解决这个问题的。 原因 JPA屏蔽了底层的各个数据库差异&#xff0c; 但是…

【每日一题】数位和相等数对的最大和

文章目录 Tag题目来源题目解读解题思路方法一&#xff1a;哈希表 写在最后 Tag 【哈希表】【数组】【2023-11-18】 题目来源 2342. 数位和相等数对的最大和 题目解读 在数组中找出数位和相等数对的和的最大值。 解题思路 方法一&#xff1a;哈希表 维护一个不同的数位和表…

36 mysql 主键冲突 和 唯一索引冲突

前言 我们这里 来看一下 我们经常碰到的 "duplicate key xxx" 测试表结构如下 CREATE TABLE tz_test (id int(11) unsigned NOT NULL AUTO_INCREMENT,field1 varchar(128) DEFAULT NULL,PRIMARY KEY (id) USING BTREE,KEY field1 (field1) USING BTREE ) ENGINEI…

upload-labs关卡9(基于win特性data流绕过)通关思路

文章目录 前言一、靶场需要了解的知识1::$data是什么 二、靶场第九关通关思路1、看源码2、bp抓包修改后缀名3、检查是否成功上传 总结 前言 此文章只用于学习和反思巩固文件上传漏洞知识&#xff0c;禁止用于做非法攻击。注意靶场是可以练习的平台&#xff0c;不能随意去尚未授…

ACM练习——第五天

还有两天就要比赛了&#xff0c;进入正题吧 题目一&#xff1a;小红的签到题 小红的签到题 (nowcoder.com) 这道题也就是热身水平&#xff0c;机会很清楚的发现只需要c/a就可以得出答案了 参考代码&#xff1a; #include <iostream>using namespace std;int main(){int a…

动态头像如何制作?这个方法请收藏

照片是记录生活的一种方式&#xff0c;但是静态图片有时候不能够完全表达我们的情感。而动态的图片能够让图片以更生动的方式来展示我们的想象力和内心情感。那么&#xff0c;大家知道动态图片制作的方法有哪些吗&#xff1f;使用gif动画制作&#xff08;https://www.gif.cn/&a…

【Linux系统编程十九】:(进程通信)--匿名管道/模拟实现进程池

【Linux系统编程十九】&#xff1a;匿名管道原理/模拟实现进程池 一.进程通信理解二.通信实现原理三.系统接口四.五大特性与四种情况五.应用场景--进程池 一.进程通信理解 什么是通信&#xff1f; 通信其实就是一个进程想把数据给另一个进程&#xff0c;但因为进程具有独立性…

使用ADS进行serdes仿真时,Tx_Diff中EQ的设置对发送端波形的影响。

研究并记录一下ADS仿真中Tx_Diff的EQ设置。原理图如下&#xff1a; 最上面是选择均衡方法Choose equalization method&#xff1a;Specify FIR taps&#xff0c;Specify de-emphasis和none。 当选择Specify de-emphasis选项时&#xff0c;下方可以输入去加重具体的dB值&#x…