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…

Python中英文时间转换

&#x1f345; 写在前面 &#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;这里是hyk写算法了吗&#xff0c;一枚致力于学习算法和人工智能领域的小菜鸟。 &#x1f50e;个人主页&#xff1a;主页链接&#xff08;欢迎各位大佬光临指导&#xff09; ⭐️近…

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

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;对稍有经验者应不存在明显障碍。 因软件世界之复杂和个人能力…

测试学习——答疑

1、什么是软件测试&#xff1f; 一个产品质量好&#xff0c;用户的使用感受佳&#xff0c;用户才愿意为此付费&#xff0c;这样企业才会获取收益&#xff0c;如果一个产品bug太多的话&#xff0c;那用户就不会买账。所以软件测试就是对产品进行测试&#xff0c;提高测试质量&am…

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

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

Go中更安全的枚举

iota Go让你用iota来使用枚举。 const (Guest iotaMemberModeratorAdmin )虽然Go是明确的&#xff0c;但iota似乎相对模糊。如果你以任何其他方式对const组进行排序&#xff0c;你会引入副作用。在上面的例子中&#xff0c;你仅仅对第一个参数Guest赋值了。你可以显式地给每…

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;…

【Element】el-input 限定输入是 只能是数字和符号 -

<template><div><el-input v-model"inputValue" input"handleInput"></el-input></div> </template><script> export default {data() {return {inputValue: };},methods: {handleInput(value) {// 使用正则表达…

LeetCode刷题--- 粉刷房子

个人主页&#xff1a;元清加油_【C】,【C语言】,【数据结构与算法】-CSDN博客 个人专栏 力扣递归算法题 http://t.csdnimg.cn/yUl2I 【C】 ​​​​​​http://t.csdnimg.cn/6AbpV 数据结构与算法 ​​​http://t.csdnimg.cn/hKh2l 前言&#xff1a;这个专栏主要讲述动…

Julia系列16:Julia与python/c互调

1 Julia调用python 通过PyCall包&#xff0c;Julia可以直接调用Python包。例如&#xff1a; using PyCall np pyimport("numpy") x np.linspace(1, 10, 10)数值、布尔、字符串、IO stream、函数、元组、数组或列表、以及包含这些类型的字典等&#xff0c;它们都会…

LeetCode.82 删除排序链表中的重复元素 二

LeetCode.82 删除排序链表中的重复元素 二 题目 /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/ struct ListNode* deleteDuplicates(struct ListNode* head) {if(head NULL) return head;struct ListNode* _…

Gradle 安装及源替换详解

在软件开发的过程中&#xff0c;Gradle 是一个强大且灵活的构建工具&#xff0c;被广泛应用于 Java、Android、Kotlin 等项目。本文将为您提供 Gradle 的安装步骤以及如何更换源的详细说明和代码示例。 一. Gradle 安装步骤 以下是在 Windows 操作系统上安装 Gradle 的步骤&am…

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

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

「HDLBits题解」Always casez

本专栏的目的是分享可以通过HDLBits仿真的Verilog代码 以提供参考 各位可同时参考我的代码和官方题解代码 或许会有所收益 题目链接&#xff1a;Always casez - HDLBits // synthesis verilog_input_version verilog_2001 module top_module (input [7:0] in,output reg [2:0]…