一个月学会Java 第3天 对类的深刻认识

news2024/11/27 18:37:08

Day3 对类的深刻认识

第一章 方法

在Day2的时候已经浅浅的认识过类,但是还是不够深刻,我们现在来深刻的认识一下类是什么和他的结构,首先在认识类的结构之前我们需要再认识和了解这么一个东西,他就是——方法

方法(method)也叫函数(function),两种称呼都是可以的,而且要记住都是同一个东西,比如在C和Python里面就叫做函数
,Java和Ruby,C#等等里面就叫做方法,所以方法在指方法也在指函数函数也在指方法在指函数理解为函数==方法即可

我们来试一下方法的声明、编写和调用,在此之前我们要再了解一个东西,就是方法的返回值(return)和返回值的类型
,类型和正常声明一样,可以是数据类型也可以是也可以是没有返回值的void

  • 返回值的类型
    • 基本类型
      • int
      • byte
      • short
      • long
      • float
      • double
      • char
      • boolean
      • String(自带的)
      • Hello(自定义的)
    • 无返回值
      • void(不需要加上return语句)
public class Hello {
    //无论在上面声明
    public void print123() {
        System.out.println("123");
    }

    public static void main(String[] args) {
        //因为这个方法是写在Hello这个类里面的,所以我们想要调用的话
        //就和Day2使用在Hello这个类里面声明的i一样
        //首先先创建这个对象
        Hello hello = new Hello();
        //然后我们再使用hello这个对象进行调用方法,和调用i一样
        hello.print123();
    }
    //还是在下面声明效果都一样
}

请添加图片描述

可以明显看到直接就是打印了123,因为我们主方法main方法里面只是创建了Hello类这个对象和使用这个对象调用了一下方法,实际打印的东西都是已经写在了print123,但是我们使用的是void,还是没有用到return的,我们现在使用带return的

public class Hello {
    public static void main(String[] args) {
        //继续创建对象进行调用
        Hello hello = new Hello();
        //这样是没用的,因为返回回来的是一个值
        hello.get5();
        //这样是可以的,把拿回来的值进行了使用,打印就是一种使用
        System.out.println(hello.get5());
        //这样子是接收了,所以也是有用的
        int i = hello.get5();
        System.out.println(i);
    }

    //声明在下面
    public int get5() {
        return 5;
    }
}

请添加图片描述

只有两次打印,因为单调用是没有用的,只有后面赋值和打印是有用的。

接下来我们来添加更多的参数,因为现在的方法还是没有参数的,参数是写在括号里面的

举个例子就是假如我要一个叫做sum
的方法,然后可以做两个数的相加,因为return是个语句可以直接写在里面或者可以把运算写在return的外面然后赋值最后返回这么一个值,示例的话(
假如传入的参数是a和b)就是

public class Hello {
    public static void main(String[] args) {
        //继续按照惯例创建对象
        Hello hello = new Hello();
        //我们既然是有参数的,所以就要填写参数,可以是变量也可以是自己写的数
        System.out.println("sum1的结果: " + hello.sum1(5, 6));
        System.out.println("sum2的结果: " + hello.sum2(7, 7));
    }

    //这个就是带参数的方法的写法,在括号里面写需要的参数的声明
    //比如我们这里需要的就是两个int类型的,名字叫什么无所谓符合规则就行
    public int sum1(int a, int b) {
        //这个就是return语句直接写运算
        return a + b;
    }

    public int sum2(int a, int b) {
        //这个就是return一个值,把运算写在return的外面
        int c = a + b;
        return c;
    }

}

请添加图片描述

注意这种参数里面的逗号都必须是英文的逗号,如果出现了中文的逗号的话就会报错了,然后在我们的参数列表里面就是方法后面的括号里的参数,我们一般称之为 形参形式参数形参
的作用于仅限于该方法,因为程序是一步一步执行下来的,如果调用到了方法就会进入方法继续执行方法里面的步骤,执行完了就退出方法,所以我们写在括号里面的形参
就是局部的,出了这个方法就没了,所以和外面重名也没有关系,

public class Hello {
    public static void main(String[] args) {
        Hello hello = new Hello();
        int a = 5;
        int b = 6;
        System.out.println(hello.sum(a, b));
    }

    public int sum(int a, int b) {
        return a + b;
    }
}

请添加图片描述

是不影响的,还有就是如果我们的参数填写不够或者有问题就会报错,返回类型不能错误,方法名前面的返回类型写了就是确定了这个方法返回的是什么类型,那返回值就不能不是这个类型或者不写(
void除外)

第二章 类的结构,构造器介绍

类由三部分组成,第一个就是属性也叫字段(可以没有),第二个就是方法也叫函数(也可以没有)
,第三个就是构造器也叫构造函数也叫构造方法(不可以没有,但是你不写会自动生成的)

public class Hello {
    //这个就是属性
    public int i = 50;

    //这个就是方法
    public int sum(int a, int b) {
        return a + b;
    }

    //这个就是构造器,不写也会生成,会在创建对象的时候调用构造器
    //比如我们在构造器里面写一点打印信息,在我们创建对象的时候就会打印
    public Hello() {
        System.out.println("XingZai");
    }

    public static void main(String[] args) {
        //正常创建对象,创建对象并接收
        Hello hello = new Hello();
        //这个叫做匿名对象,也可以称之为创建对象不接收
        System.out.println("======分割线1======");
        new Hello();
        System.out.println("======分割线2======");
        //这个只是单单的声明,并没有创建对象,所以这个不会打印信息
        Hello hello1;
    }
}

请添加图片描述

稍微能理解一下构造器了吧,构造器就是在你创建对象的时候会自动调用的一个方法,他的结构就是这样 访问修饰符(public) 类名(){}

他其实就是一个特殊的方法,所以他的参数列表也是可以填写的,然后他也可以是存在多个的我们来试一下

public class Hello {
    //其实方法的参数也可以是这样传输不仅为基本数据类型也可以是类
    public Hello(String str) {
        System.out.println("This is " + str);
    }

    public Hello(int a) {
        //这个是有参构造器,参数是a
        System.out.println("This have Argument a: " + a);
    }

    public Hello() {
        //这个是无参构造器
        System.out.println("This is No Argument Constructor");
    }

    public static void main(String[] args) {
        new Hello("Hello");
        System.out.println("======This is 1======");
        new Hello(123);
        System.out.println("======This is 2======");
        new Hello();
    }
}

请添加图片描述

现在可以理解构造器的用法了吧,一般我们使用无参构造器就是空着的,然后有参构造器拿来初始化类内部的属性,还有一个特性口述即可。那就是如果你没有构造器那他会自动生成一个无参构造器。如果你但凡写了一个有参或者是无参的构造器,那他在编译的时候就不会去创建任何的构造器

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

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

相关文章

iMazing只能苹果电脑吗 Win和Mac上的iMazing功能有区别吗

在当今数字时代,管理和备份手机数据变得越来越重要。无论是转移照片、备份短信,还是管理应用程序,一个强大的工具可以大大简化这些操作。iMazing作为一款备受好评的iOS设备管理软件,已经成为许多用户的选择。但是,许多…

用manim实现Gram-Schmidt正交化过程

在线性代数中,正交基有许多美丽的性质。例如,由正交列向量组成的矩阵(又称正交矩阵)可以通过矩阵的转置很容易地进行反转。此外,例如:在由彼此正交的向量张成的子空间上投影向量也更容易。Gram-Schmidt过程是一个重要的算法&#…

GESP C++三级样题卷

(满分:100 分 考试时间:90 分钟) 一、单选题(每题 2 分,共 30 分) 1.下列关于负数的原码、反码、补码的描述中,正确的是( ) A 原码和反码互为按位取反(符号位除外&…

[ComfyUI]Flux:太强了!任意扩图神器,小红书极致逼真风格出游打卡写实风

随着人工智能技术的不断发展,图像生成与反推技术已经成为了AI领域的一大热点。今天,我们就来为大家详细介绍一款由ComfyUI团队开发的超强图像反推工具——Flux,以及如何使用它实现任意扩图和极致逼真风格出游打卡写实风。 一、Flux&#xff…

k8s-集群部署1

k8s-集群部署1 一、基础环境准备二、docker环境准备三、k8s集群部署1.kubeadm创建集群2.使用kubeadm引导集群 总结 一、基础环境准备 首先,需要准备三个服务器实例,这里我使用了阿里云创建了三个实例,如果不想花钱,也可以在VM上创…

第十一章 缓存之更新/穿透/雪崩/击穿

目录 一、什么是缓存 二、缓存更新策略 2.1. 缓存主动更新策略 2.1.1. Cache Aside模式(主流)‌ 2.1.2. Read/Write Through模式‌ 2.1‌.3. Write Behind模式‌ 2.1.4. 总结 三、缓存穿透 四、缓存雪崩 五、缓存击穿 5.1. 互斥锁实现 5.1.1…

好用且不伤眼镜的超声波清洗机排名!谁才是清洁小能手?

对于经常佩戴眼镜的人来说,眼镜的日常清洁保养极为关键。传统清洁方式可能导致镜片刮花和残留污渍,鉴于此,眼镜专用的超声波清洗机应运而生,利用超声振动技术深入微细缝隙,彻底扫除污垢与油脂,保护镜片免受…

计算机编程入门先学什么最好?零基础入门到精通,收藏这篇就够了

看完其他知友的回答,我认为他们的观点过于局限,并没有真正切中问题的要害。 我们不妨换个角度,站在更高一层来看这个问题「计算机编程入门先学什么最好?」 计算机入门最应该学的是 Linux,而非任何的编程语言。 这篇文…

A_H_README_TO_RECOVER勒索恢复---惜分飞

有客户mysql数据库被黑(业务数据库被删除),创建了一个A_H_README_TO_RECOVER库 [rootwww.xifenfei.com ~]# mysql -uroot -pxxxxx Warning: Using a password on the command line interface can be insecure. Welcome to the MySQL monitor. Commands end with ; …

站岗放哨树形dp

前言&#xff1a;好久没有写树上dp了&#xff0c;这儿题目还是挺有意思的 题目地址 #include<bits/stdc.h> #include<iostream> using namespace std;//#define int long long int n; const int N (int)1e510; int e[N],ne[N],h[N],idx 0; int dp[2][N];void add…

【笔记】神领物流Day1.1.20权限管家

传智权限管家是一个通用的权限管理中台服务&#xff0c;在神领物流项目中&#xff0c;我们使用权限系统管理企业内部员工&#xff0c;比如&#xff1a;快递员、司机、管理员等。 在权限管家中可以管理用户&#xff0c;管理后台系统的菜单&#xff0c;以及角色的管理。 权限管家…

【百度文心智能体】想开发爆款智能体?来看看 万圣节之夜探秘者 智能体开发流程大揭秘

目录 前言 一. 创作灵感 二. 智能体中Prompt如何设计 2.1 头像 && 聊天背景 2.2 智能体简介 && 角色定位与目标 2.3 思考路径 && 个性化 2.4 开场白 && 自动追问 2.5 插件选择 三. 总结 前言 从2022年11月底ChatGPT …

JavaEE: 数据链路层的奇妙世界

文章目录 数据链路层以太网源地址和目的地址 类型数据认识 MTU 数据链路层 以太网 以太网的帧格式如下所示: 源地址和目的地址 源地址和目的地址是指网卡的硬件地址(也叫MAC地址). mac 地址和 IP 地址的区别: mac 地址使用6个字节表示,IP 地址4个字节表示. 一般一个网卡,在…

论文选题没思路?用这7个GPT提示词10分钟确定论文选题

选题是论文写作的第一步&#xff0c;也是至关重要的一步。毕业论文选题都是让大学生头疼的大事。没有灵感、方向不清、信息太多&#xff0c;常常让人无从下手。现在有了ChatGPT这样的AI写作辅助工具&#xff0c;它可以帮你快速生成丰富的选题思路&#xff0c;轻松解决选题难题。…

Anaconda创建环境

目录 前言 第一步&#xff1a;更改环境创建位置 第二步&#xff1a;安装环境 前言 在我们创建多个项目的时候&#xff0c;有时会安装的库版本冲突&#xff0c;所以最好是一个项目一个环境 第一步&#xff1a;更改环境创建位置 新安装Anaconda后&#xff0c;在创建环境时环…

洛谷每日一题(P1205 [USACO1.2] 方块转换 Transformations)矩阵变换

原题目链接&#xff1a; P1205 [USACO1.2] 方块转换 Transformations - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 原题目截图&#xff1a; 思路分析&#xff1a; 这题目还是比较简单&#xff0c;模拟一下旋转变化的过程&#xff0c;然后注意变换的规律就行了。 读取输入…

电脑提示msvcp140.dll丢失如何解决,马上教你6种解决方法

在使用电脑时&#xff0c;我们可能会遇到提示缺少msvcp140.dll的错误信息。这个提示意味着我们的电脑中缺少MSVCP140.dll这个文件&#xff0c;它是某些程序运行所必需的。如果我们遇到这个问题&#xff0c;应该如何解决呢&#xff1f;本文将详细解析如何解决msvcp140.dll丢失的…

C. Tree Pruning【Codeforces Round 975 (Div. 1)】

C. Tree Pruning (永远不知道为什么TLE直到把初始化的memset换成for循环 题意很简单&#xff0c;就是找到一个深度&#xff0c;使得删除最少的节点且所有的叶子节点都为这个深度。 从小到大遍历可能的深度i&#xff0c;容易知道所有 深度大于i的节点 和所有 子树最大深度小于i…

vue出现Component name “Politic“ should always be multi-word错误

效果 原因 组件名不能为单个单词&#xff0c;怕和html标签混淆 解决方法 1.选择多个单词区分 2.修改package.json里的rules规则&#xff0c;忽略文件命名校验

详细解释:前向传播、反向传播等

详细解释:前向传播、反向传播等 在机器学习和深度学习中,**前向传播(Forward Propagation)和反向传播(Backward Propagation)**是训练神经网络的两个核心过程。理解这两个概念对于掌握神经网络的工作原理、优化方法以及模型微调技术(如LoRA、P-tuning等)至关重要。以下…