day08

回顾

1.选择排序原理: 找到最小值的下标,交换
2.冒泡排序原理: 比较相邻的两个元素,把最小值放到左边。第一次比较的时候最大值放到最右边了,以此类推

今天的内容

1类和对象

2.类和对象内存

3.构造方法

1.从生活的角度区理解面向对象开发

有两种编程思想:

​ 面向过程:

​ 程序自上而下执行,不牵涉到类和对象的操作。本质是代码自己完成自己的功能

​ 冒泡排序是面向过程的

​ 亲力亲为 都是面向过程的

​ 面向对象:

​ 程序是靠对象完成一定的功能

​ Arrays.sort(arr) 这个就是面向对象的

​ 借助于对象来实现功能的

2.面向对象两个重要概念

类: 是对一切相似事物的统称。是一个泛泛的概念。可以用来描述事物的特征和行为的

对象:是一个具体的实体。是这是真实存在的。在类的基础之上孵化出来的。

对象
我家里面的一个大黄狗
千锋Java教学部郑州校区的王博
桌子学虎正在坐的桌子
特征:就是一类事物的属性,比如人的年龄  身高 体重  性别在Java代码中使用变量来表示一个类的特征或者属性int age;double height;是静的东西
行为:就是动作  吃饭 睡觉  敲代码在Java中使用方法来描述一个类的行为是动的东西

只要注意好特征和行为就可以写好一个类了。

人类:特征,又叫属性:名字 性别 身高  体重行为,又叫方法:吃饭  睡觉 敲代码

3.声明一个类

语法格式:

[public] class 类名 {对于当前类的属性的描述对于当前类的行为的描述
}
package com.qfedu.a_class;class Person {//人类://属性: 姓名  年龄  性别  身高//行为: 吃饭  睡觉//类下面的属性:  Java使用变量来描述//在类中 变量最好不要赋值String name; //名字  nullint age;//年龄  0char sex;//性别 double height;//身高0.0//在类中后书写行为  Java使用方法来描述行为//public static void eat() {}//今天学的内容,和之前方法的声明不一样,去掉static即可public void  eat () {System.out.println("中午吃酸菜鱼");}public void sleep () {System.out.println("中午不睡,下午崩溃");}}

案例:

​ 狗类:

​ 属性: 名字 毛色 品种 性别

​ 行为: 看家 打架

package com.qfedu.a_class;public class Dog {String name;//声明的狗的名字String color;//代表的是狗毛色String kind;//代表狗的品种boolean sex;//性别//定义方法public void lookHome () {System.out.println("狗汪汪叫,在看家");}public void fight () {System.out.println("狗咬狗,一嘴毛");}}

案例:

​ 猪类:

​ 属性和方法自己想

4.对象的创建

一个类声明好以后,不使用它,它是一直存在,咱们可以借助于对象衍生出一个实体。

类可以衍生出来一个对象。类相当于一个模子。可以造出来一个实体。

造出对象的目的是为了啥? 就是执行属性的复制和方法的调用的

先有类,再有对象

对象的创建在main主函数中。目的是为了执行这个对象代码

Java语法格式:

类名  对象的名字 = new 类名();
package com.qfedu.a_class;//Demo1叫测试类  里面有main主函数
public class Demo1 {public static void main(String[] args) {//类名  对象的名字 = new  类名();//这个对象是由类衍生出来的,就意味着类下面的属性可以使用//类下面的方法我可以调用Person person = new Person();//对属性进行赋值//person的名字 为 狗蛋person.name = "狗蛋";person.age = 78;person.sex = '男';person.height = 98.7;//以上是对对象的属性进行赋值//将对象的属性值取出来System.out.println(person.name + person.age + person.sex + person.height);//方法的调用  对象.方法名字();person.eat();person.sleep();Person person1 = new Person();person1.name = "二狗";person1.age = 12;person1.sex = '男';person1.height = 178;System.out.println(person1.name + person1.age + person1.sex + person1.height);person1.eat();person1.sleep();}}

案例:

​ 之前写过一个Dog类。现在开始通过Dog类创建dog对象,可以创建多个的

package com.qfedu.a_class;public class Demo2 {public static void main(String[] args) {Dog dog = new Dog();dog.name = "";dog.color = "花色";dog.kind = "金毛";dog.sex = true;System.out.println(dog.name + dog.color + dog.sex + dog.kind);dog.fight();dog.lookHome();}}

咱们现在实体类和测试类写在了不同的Java文件中。

5.创建的实体类和测试类在同一个Java文件中

文件的名字以测试类来命名

package com.qfedu.a_class;//注意事项:实体类和测试类写在同一个文件中的时候,实体类不能带public修饰符
class Pig {String name;double weight;//体重char sex;//性别public void eat () {System.out.println("猪吃白菜!!!");}public void sleep () {System.out.println("猪睡觉打呼噜");}
}class Demo3 {public static void main(String[] args) {//创建对象Pig pig = new Pig();pig.name = "大黄";pig.weight = 100.1;pig.sex = '公';System.out.println(pig.name + pig.weight + pig.sex);pig.eat();pig.sleep();}}

练习 :

​ 羊类 龙类 老鼠 鸡

​ 属性和方法自己声明,创建对象对属性进行赋值和方法调用。

​ 写在同一个文件中!!!

上午的内容

1.会新建一个类
2.会通过类创建一个对象 并对对象的属性进行赋值   对象还可以调用类下面的方法

6.构造方法

构造方法的目的是为了初始化对象的,换句话说,可以对对象的属性进行赋值

对象创建其实是依据构造方法创建的!!!【重点】

6.1无参构造方法

构造方法必须写在实体类中

语法格式:

public 类名() {}
package com.qfedu.b_constructor;class Dog {String name;int age;public Dog () {System.out.println("嘻嘻哒");name = "大黄";age = 12;}}
public class Demo2 {public static void main(String[] args) {//当new Dog()的时候就会去自动调用无参构造方法去执行无参构造方法中的方法体Dog dog = new Dog();dog.name = "旺财";dog.age = 3;//打印的是旺财和3 为啥没有打印大黄和12 因为无参构造先执行了//后面赋的值就会覆盖掉初始化的值System.out.println(dog.name);System.out.println(dog.age);}}
6.2有参构造

语法格式:

public 类名 (参数) {初始化条件;
}
package com.qfedu.b_constructor;class Cat {String name;String kind;int age;public Cat() {}//和下面的有参构造一模一样!!!
//	public Cat (String kind) {
//		this.kind = kind; 
//	}//声明一个有参构造方法public Cat (String name) {this.name = name;}//带有三个参数 构造方法public Cat (String name, String kind, int age) {this.name = name;this.age = age;this.kind = kind;}}
public class Demo3 {public static void main(String[] args) {Cat cat = new Cat("狗蛋");System.out.println(cat.name);//new对象的时候依据构造方法来创建对象Cat cat1 = new Cat("毛蛋", "波斯", 3);System.out.println(cat1.name);System.out.println(cat1.age);System.out.println(cat1.kind);//一旦写了有参构造方法以后,默认的无参构造方法就没有了Cat cat2 =  new Cat();cat2.name = "Tom";cat2.age = 4;cat2.kind = "蓝猫";}
}

案例:

猴子类:

package com.qfedu.b_constructor;class Monkey {String name;int age;double weight;public Monkey (String name, int age, double weight) {this.name = name;this.age = age;this.weight = weight;}}
public class Demo4 {public static void main(String[] args) {Monkey monkey = new Monkey("弼马温", 3, 98.7);//不让你使用对象.变量 = 初始化的值; 这种方式对属性进行赋值了//换一种方式赋值。叫有参构造
//		monkey.name = "孙悟空";
//		monkey.age = 500;
//		monkey.weight = 89;System.out.println(monkey.name);System.out.println(monkey.age);System.out.println(monkey.weight);}}

7.对象在内存中如何存储的

栈内存:

​ 存的是八大基本数据类型的数据

​ 对象的引用。 =左边

堆内存:

​ 对象的全部数据
在这里插入图片描述

8.构造代码块【了解】

开发中已经不用了

以后会讲静态代码块。

构造代码块的目的也可以对咱们的对象进行初始化的。功能和构造方法一样的

语法格式:

{语句体
}

注意事项:

​ 1.构造代码块必须写在实体类中

​ 2.先执行的是构造代码块,再执行构造方法

package com.qfedu.b_constructor;class Tiger {String name;int age;//再声明一个构造方法public Tiger () {this.name = "haha";System.out.println("我是无参构造方法");}//先写一个构造代码块{this.name = "嘻嘻";System.out.println("我是构造代码块");}
}
public class Demo5 {public static void main(String[] args) {//先执行实体类中构造代码块 然后再执行构造方法Tiger tiger = new Tiger();System.out.println(tiger.name);}}

9.局部变量和成员变量

9.1局部变量

局部变量就是变量的作用域,其实是已经见过局部变量

package com.qfedu.c_var;import org.omg.CORBA.PUBLIC_MEMBER;public class Demo1 {public static void main(String[] args) {for (int i = 0; i < 5; i++) {//上面的i就是for循环的局部变量,出了for循环还能用吗?不能//紧紧围绕着一个东西就是那个大括号System.out.println(i);}//System.out.println(i);if (3 < 4) {int i = 98;}}public static void test () {int i = 20;System.out.println(i);}public static void test1 () {//System.out.println(i);}//总结一下: 一定要看清大括号里面的那个变量只能在大括号里面来使用的}
9.2成员变量

定义在实体类中的大括号的后面,又叫属性

String name;

int age;

package com.qfedu.c_var;class Person {//name 和 age都是成员变量String name;int age;//作用域 是作用再整个类中 的,只要在类中都可以使用当前的成员变量public void eat () {double weigt;//局部的变量System.out.println(name + age);}
}
public class Demo2 {public static void main(String[] args) {}}
9.3局部和成员变量的区别
区别成员变量局部变量
定义的位置类的大括号的后面(属性)定义在方法体中
作用用来描述对象的特征的在方法体中只是用来存储数据的
初始化的值默认值在使用的时候必须赋值
内存堆区栈区
作用域作用整个类只能在当前的方法中使用

总结:

1.会声明一个类
2.会创建一个对象
3.会对对象的属性进行赋值
4.会对对象的方法进行调用
5.构造方法的声明有一些细节一定要关注构造方法是初始化对象的6.构造代码块
7.局部变量和成员变量

作业:

1.整理一些东西整理的时候要把每个致知识点掌握!!!
2.十二生肖:要求 测试类和实体类写在一起实体类中要有属性  构造方法 和方法测试中要对属性进行赋值(使用构造方法进行赋值),方法要调用
3.预习明天的视频

------------------ | ---------------------------- |
| 定义的位置 | 类的大括号的后面(属性) | 定义在方法体中 |
| 作用 | 用来描述对象的特征的 | 在方法体中只是用来存储数据的 |
| 初始化的值 | 默认值 | 在使用的时候必须赋值 |
| 内存 | 堆区 | 栈区 |
| 作用域 | 作用整个类 | 只能在当前的方法中使用 |

总结:

1.会声明一个类
2.会创建一个对象
3.会对对象的属性进行赋值
4.会对对象的方法进行调用
5.构造方法的声明有一些细节一定要关注构造方法是初始化对象的6.构造代码块
7.局部变量和成员变量

作业:

1.整理一些东西整理的时候要把每个致知识点掌握!!!
2.十二生肖:要求 测试类和实体类写在一起实体类中要有属性  构造方法 和方法测试中要对属性进行赋值(使用构造方法进行赋值),方法要调用
3.预习明天的视频

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

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

相关文章

C program to check little vs. big endian

void main() {int n 1;// little endian if trueif(*(char *)&n 1)printf("This is little endian\n");elseprintf("This is big endian\n"); }Suppose we are on a 32-bit machine. And char type is 8 bits

如何配置mybatisplus基础环境?

1.在pom文件&#xff08;都加上吧&#xff0c;以防万一&#xff09; 2.若当初有mybatis的依赖&#xff0c;要删除 3.在Mapper接口加上"extends BaseMapper<实体类型>" 4.更改yml文件内容 别名扫描包&#xff1a;是指实体类型 5.添加"extends ServiceIm…

互联网行业的高水平简历怎么写?(附模板)

HR浏览一份简历也就25秒左右&#xff0c;如果你连「好简历」都没有&#xff0c;怎么能找到好工作呢&#xff1f; 如果你不懂得如何在简历上展示自己&#xff0c;或者觉得怎么改简历都不出彩&#xff0c;那请你一定仔细读完。 互联网运营个人简历范文> 男 22 本科 AI简历…

Java智能导诊系统 (3D人体导医)源码

智能导诊是一种利用人工智能技术来帮助患者进行自助问询及挂号服务的系统。通过智能导诊系统&#xff0c;患者可以输入自身疾病的症状表现&#xff0c;或选择身体部位&#xff0c;在系统的多维度计算下&#xff0c;系统会根据患者提供的信息精准推荐科室&#xff0c;并引导患者…

DataX数据同步(全量)

1. DataX简介 1.1 DataX概述 DataX 是阿里巴巴开源的一个异构数据源离线同步工具&#xff0c;致力于实现包括关系型数据库(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各种异构数据源之间稳定高效的数据同步功能。 源码地址&#xff1a;https://github.com/alibaba/Dat…

Elasticsearch:聊天机器人教程(一)

在本教程中&#xff0c;你将构建一个大型语言模型 (LLM) 聊天机器人&#xff0c;该机器人使用称为检索增强生成 (RAG) 的模式。 使用 RAG 构建的聊天机器人可以克服 ChatGPT 等通用会话模型所具有的一些限制。 特别是&#xff0c;他们能够讨论和回答以下问题&#xff1a; 你的…

构建基于RHEL9系列(CentOS9,AlmaLinux9,RockyLinux9等)的支持63个常见模块的PHP8.1.20的RPM包

本文适用&#xff1a;rhel9系列&#xff0c;或同类系统(CentOS9,AlmaLinux9,RockyLinux9等) 文档形成时期&#xff1a;2023年 因系统版本不同&#xff0c;构建部署应略有差异&#xff0c;但本文未做细分&#xff0c;对稍有经验者应不存在明显障碍。 因软件世界之复杂和个人能力…

LLM之RAG理论(五)| 使用知识图谱增强RAG

知识图谱&#xff08;KG&#xff09;或任何图都包括节点和边&#xff0c;其中每个节点表示一个概念&#xff0c;每个边表示一对概念之间的关系。本文介绍一种将任何文本语料库转换为知识图谱的技术&#xff0c;本文演示的知识图谱可以替换其他专业知识图谱。 一、知识图谱 知识…

2719. 统计整数数目

给你两个数字字符串 num1 和 num2 &#xff0c;以及两个整数 max_sum 和 min_sum 。如果一个整数 x 满足以下条件&#xff0c;我们称它是一个好整数&#xff1a; num1 < x < num2min_sum < digit_sum(x) < max_sum. 请你返回好整数的数目。答案可能很大&#xff…

【LeetCode:76. 最小覆盖子串 | 滑动窗口】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

帆软报表11.0.19增加postgres数据源方案

项目使用postgres数据库&#xff0c;帆软报表集成开发时需要手工增加该数据源。 https://help.fanruan.com/finereport/doc-view-2563.html 但增加数据源后测试报告无此驱动&#xff0c;经查看文档&#xff0c;现在是通过驱动管理来上传&#xff0c; 但新版又不允许上传驱动JAR…

走迷宫(c语言)

前言&#xff1a; 制作一个迷宫游戏是一个有趣的编程挑战。首先&#xff0c;我们需要设计一个二维数组来表示迷宫的布局&#xff0c;其中每个元素代表迷宫中的一个格子。我们可以使用不同的值来表示空格、墙壁和起点/终点。接下来&#xff0c;我们需生成迷宫。在生成迷宫的过程…

2024年【上海市安全员C3证】模拟考试题及上海市安全员C3证模拟考试题库

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年上海市安全员C3证模拟考试题为正在备考上海市安全员C3证操作证的学员准备的理论考试专题&#xff0c;每个月更新的上海市安全员C3证模拟考试题库祝您顺利通过上海市安全员C3证考试。 1、【多选题】《上海市建设…

STC15系列单片机:定时器/计数器16位自动重装载模式

一、定时器与计数器的理解 STC15系列单片机内部有5个16位定时器/计数器&#xff0c;分别是T0、T1、T2、T3、T4。 定时器与计数器&#xff0c;东西还是同一个东西&#xff0c;只是用法和功效不一样&#xff0c;就好比黄瓜&#xff0c;既可以内服也可以外敷&#xff0c;黄瓜还是…

深入理解 go chan

go 里面&#xff0c;在实际程序运行的过程中&#xff0c;往往会有很多协程在执行&#xff0c;通过启动多个协程的方式&#xff0c;我们可以更高效地利用系统资源。 而不同协程之间往往需要进行通信&#xff0c;不同于以往多线程程序的那种通信方式&#xff0c;在 go 里面是通过…

Rust-所有权和移动语义

什么是所有权 拿C语言的代码来打个比方。我们可能会在堆上创建一个对象&#xff0c;然后使用一个指针来管理这个对象&#xff1a; Foo *p make_object("args");接下来&#xff0c;我们可能需要使用这个对象&#xff1a; use_object(p);然而&#xff0c;这段代码之…

继承、修饰符、工具类、jar包

目录 1.继承 2.修饰符 3.工具类 4.jar包的制作与使用 1.继承 是什么 1.面向对象的三大特征之一&#xff08;封装、继承、多态&#xff09; 2.可以使得子类具有父类的属性和方法&#xff0c;还可以在子类中重新定义&#xff0c;追加属性和方法。 继承的格式 public class F…

Camtasia2024最新版本如何进行电脑录制屏幕?

在现在的网络互联网时代&#xff0c;越来越多的人走上了自媒体的道路。有些自媒体人会自己在网络上录制精彩视频&#xff0c;也有一些人会将精彩、热门的电影剪辑出来再加上自己给它的配音&#xff0c;做成大家喜欢看的电影剪辑片段。相信不管大家是自己平时有独特的爱好也好、…

瑞吉外卖笔记系列(1) —— 环境配置,后台登录和退出的功能实现

本文档主要介绍软件开发整体流程和瑞吉外卖项目&#xff0c;开发环境搭建步骤&#xff0c;以及简单的后台系统功能实现 文章目录 一、软件开发整体介绍1.1软件开发流程1.2 角色分工1.3 软件环境 二、瑞吉外卖项目介绍2.1 项目介绍2.2 产品原型展示2.3 技术选型2.4 功能架构2.5 …

目标检测应用场景—数据集【NO.25】牛行为检测数据集

写在前面&#xff1a;数据集对应应用场景&#xff0c;不同的应用场景有不同的检测难点以及对应改进方法&#xff0c;本系列整理汇总领域内的数据集&#xff0c;方便大家下载数据集&#xff0c;若无法下载可关注后私信领取。关注免费领取整理好的数据集资料&#xff01;今天分享…