Java学习第一部分第一阶段第六节:面向对象编程(基础)文杰2000

张老太养了两只猫猫:一只名字叫小白,今年3岁,白色。还有一只叫小花,今年100岁,花色。请编写一个程序,当用户输入小猫的名字时,就显示该猫的名字,年龄,颜色。如果用户输入的小猫名错误,则显示张老太没有这只猫猫。

1)单独的定义变量解决2)使用数组解决

//单独变量来解决=>平利于数据的管理//第1只猫信息Stringcat1Name="小白";intcat1Age=3;Stringcat1Color="白色";//第2只猫信息Stringcat2Name="小花";intcat2Age=100;Stringcat2Color="花色";//数组===>(1)数据类型体现不出来(2)只能通过[下标]获取信息,造成变量名字和内容//的对应关系不明确(3)不能体现猫的行为//第1只猫信息String[]cat1={"小白","3","白色"};String[]cat2={"小花","100","花色"};●现有技术解决的缺点分析

不利于数据的管理效率低===》引出我们的新知识点类与对象哲学,道家思想java设计者引入类与对象(OOP),根本原因就是现有的技术,不能完美的解决新的新的需求.

●类与对象的关系示意图

●上图说明注意:从猫类到对象,目前有几种说法:1.创建一个对象⒉.实例化一个对象3.把类实例化...当然:上面的猫也可是鱼、狗、人...java最大的特点就是面向对象。

publicclassHelloWorld{publicstaticvoidmain(String[]args){//1.newCat()创建一只猫//2.Catcat1=newCat();把创建的猫赋给cat1//3.cat1就是一个对象Catcat1=newCat();cat1.name="小白";cat1.age=3;cat1.color="白色";//创建了第二只猫,并赋给cat2//cat2也是一个对象(猫对象)Catcat2=newCat();cat2.name="小花";cat2.age=100;cat2.color="花色";//怎么访问对象的属性呢System.out.println("第1只猫信息"+cat1.name+""+cat1.age+""+cat1.color);System.out.println("第2只猫信息"+cat2.name+""+cat2.age+""+cat2.color);}}//使用面向对象的方式来解决养猫问题////定义一个猫类Cat->自定义的数据类型classCat{//属性Stringname;//名字intage;//年龄Stringcolor;//颜色//行为}●类和对象的区别和联系

通过上面的案例和讲解我们可以看出:

属性/成员变量

基本介绍

●注意事项和细节说明

属性的定义语法同变量,示例:访问修饰符属性类型属性名;

属性的定义类型可以为任意类型,包含基本类型或引用类型

属性如果不赋值,有默认值,规则和数组一致。

●基本语法

对象名.属性名;

案例演示赋值和输出

cat.name;cat.age;cat.color;

●看一个思考题我们定义一个人类(Person)(包括名字,年龄)。

●Java内存的结构分析1.栈:一般存放基本数据类型(局部变量)2.堆:存放对象(Catcat,数组等)3.方法区:常量池(常量,比如字符串),类加载信息4.示意图[Cat(name,age,price)

●Java创建对象的流程简单分析

Personp=newPerson();p.name="jack”;p.age=101.先加载Person类信息(属性和方法信息,只会加载一次)2在堆中分配空间,进行默认初始化(看规则)3.把地址赋给p,p就指向对象4.进行指定初始化,比如p.name="jack"p.age=10

●看一个练习题,并分析画出内存布局图,进行分析

在某些情况下,我们要需要定义成员方法(简称方法)。比如人类:除了有一些属性外(年龄,姓名..),我们人类还有一些行为比如:可以说话、跑步..,通过学习,还可以做算术题。这时就要用成员方法才能完成。现在要求对Person类完善。

添加speak成员方法,输出我是一只好人

添加cal01成员方法,可以计算从1+...+1000的结果

添加cal02成员方法,该方法可以接收一个数n,计算从1+...+n的结果

添加getSum成员方法,可以计算两个数的和

●看一个需求:请遍历一个数组,输出数组的各个元素值。解决思路1,传统的方法,就是使用单个for循环,将数组输出,大家看看问题是什么解决思路2:定√义一个类MyTools,然后写一个成员方法,调用方法实现,看看效果又如何。

成员方法的好处

提高代码的复用性可以将实现的细节封装起来,然后供其他用户来调用即可.

访问修饰符返回数据类型方法名(形参列表..){//方法体语句;return返回值;}

●访问修饰符(作用是控制方法使用的范围)可选,[有四种:],具体在后面说

●返回类型

●方法名遵循驼峰命名法,最好见名知义,表达出该功能的意思即可,比如得到两个数的和getSum,开发中按照规范

●形参列表

●方法体里面写完成功能的具体的语句,可以为输入、输出、变量、运算、分支、循环、方法调用,但里面不能再定义方法!即:方法不能嵌套定义。[演示]

●方法调用细节说明

方法的传参机制对我们今后的编程非常重要,一定要搞的清清楚楚明明白白。我们通过案例来学习。

●基本数据类型的传参机制

publicclassHelloWorld{publicstaticvoidmain(String[]args){inta=10;intb=20;//创建AA对象名字objAAobj=newAA();obj.swap(a,b);//调用swapSystem.out.println("main方法a="+a+"b="+b);//a=10b=20}}classAA{//同一个类中的方法调用:直接调用即可//publicvoidswap(inta,intb){System.out.println("\na和b交换前的值\na="+a+"\tb="+b);//a=10b=20//完成了a和b的交换inttmp=a;a=b;b=tmp;System.out.println("\na和b交换后的值\na="+a+"\tb="+b);//a=20b=10}}//swap方法会创建不同的栈。其中的变量a,b所对应的地址也不同,因此不会改变。●引用数据类型的传参机制

递归能解决什么问题

●八皇后问题说明八皇后问题,是一个古老而著名的问题,,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即:任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。

●重载的好处

●快速入门案例

publicclassHelloWorld{publicstaticvoidmain(String[]args){MyCalculatormc=newMyCalculator();System.out.println(mc.calculate(1,2));System.out.println(mc.calculate(1,2.1));}}classMyCalculator{//下面的四个calculate方法构成了重载//两个整数的和publicintcalculate(intn1,intn2){returnn1+n2;}//一个整数,一个double的和publicdoublecalculate(intn1,doublen2){returnn1+n2;}//一个double,一个工t和publicdoublecalculate(doublen1,intn2){returnn1+n2;}//三个int的和publicintcalculate(intn1,intn2,intn3){returnn1+n2+n2;}}●注意事项和使用细节

●基本概念java允许将同一个类中多个同名同功能但参数个数不同的方法,到装成一个方法。就可以通过可变参数实现

●基本语法访问修饰符返回类型方法名(数据类型...形参名){}

publicclassHelloWorld{publicstaticvoidmain(String[]args){HspMethodm=newHspMethod();intsum=m.sum(1,5,100);System.out.println(sum);}}classHspMethod{//1.int...表示接受的是可变参数,类型是int,即可以接收多个1nt(0-多)//2。使用可变参数时,可以当做数组来使用即nums可以当做数组publicintsum(int...nums){System.out.println("接收的参数个数="+nums.length);intres=0;for(inti=0;i

//细节:可变参数可以和普通类型的参数一起放在形参列表,但必须保证可变参数在最后publicvoidf2(Stringstr,doubLe...nums){}//细节:一个形参列表中只能出现一个可变参数//下面的写法是错的·//publicvoidf3(int...nums1,double...nums2){}作用域●基本使用面向对象中,变量作用域是非常重要知识点,相对来说不是特别好理解,要求深刻掌握变量作用域。

注意事项和细节使用

classPerson{Stringname="jack";publicvoidsay(){//细节属性和局部变量可以重名,访问时遵循就近原则Stringname="king";System.out.println("say()name="+name);}publicvoidhi(){Stringaddress="北京";//Stringaddress=“上海";//错误,重复定义变量Stringname="hsp";}}作用域范围不同全局变量/属性:可以被本类使用,或其他类使用(通过对象调用)局部变量;只能在本类中对应的方法中使用修饰符不同全局变量/属性可以加修饰符局部变量不可以加修饰符构造方法/构造器●看一个需求我们来看一个需求:前面我们在创建人类的对象时,是先把一个对象创建好后,再给他的年龄和姓名属性赋值,如果现在我要求,在创建人类的对象时,就直接指定这个对象的年龄和姓名,该怎么做这时就可以使用构造器。

●基本语法[修饰符]方法名(形参列表){方法体;}

说明:

基本介绍构造方法又叫构造器(constructor),是类的一种特殊的方法,它的主要作用是完成对新对象的初始化。它有几个特点:

快速入门现在我们就用构造方法来完成刚才提出的问题:在创建人类的对象时,就直接指定这个对象的年龄和姓名

publicclassHelloWorld{publicstaticvoidmain(String[]args){//当我们new一个对象时,直接通过构造器指定名字和年龄Personp1=newPerson("smith",80);System.out.println("p1的信息如下");System.out.println("p1对象name="+p1.name);//smithSystem.out.println("p1对象age="+p1.age);//80}}//在创建人类的对象时,就直接指定这个对象的年龄和姓名//classPerson{Stringname;intage;//构造器//老韩解读//1。构造器没有返回值,也不能写void//2。构造器的名称和类Person—样//3.(StringpName,intpAge)是构造器形参列表,规则和成员方法―样publicPerson(StringpName,intpAge){System.out.println("构造器被调用~~完成对象的属性初始化");name=pName;age=pAge;}publicPerson(StringpName){System.out.println("构造器重载---");name=pName;}}●注意事项和使用细节

●先看一段代码,并分析问题

publicclassHelloWorld{publicstaticvoidmain(String[]args){Dogdog1=newDog("大壮",3);dog1.info();}}classDog{//类Stringname;intage;//publicDog(StringdName,intdAge){//构造器//name=dName;//age=dAge;//}//如果我们构造器的形参,能够直接写成属性名,就更好了//但是出现了一个问题,根据变量的作用域原则//构造器的name是局部变量,而不是属性//构造器的age是局部变量,而不是属性//==>引出this关键字来解决publicDog(Stringname,intage){//构造器name=name;age=age;}publicvoidinfo(){//成员方法,输出属性×信息System.out.println(name+"\t"+age+"\t");}}●什么是this

java虚拟机会给每个对象分配this,代表当前对象。

●使用this解决前面变量命名问题

publicclassHelloWorld{publicstaticvoidmain(String[]args){Dogdog1=newDog("大壮",3);dog1.info();}}classDog{//类Stringname;intage;//publicDog(StringdName,intdAge){//构造器//name=dName;//age=dAge;//}//如果我们构造器的形参,能够直接写成属性名,就更好了//但是出现了一个问题,根据变量的作用域原则//构造器的name是局部变量,而不是属性//构造器的age是局部变量,而不是属性//==>引出this关键字来解决publicDog(Stringname,intage){//构造器//this.name就是当前对象的属性namethis.name=name;//this.age就是当前对象的属性agethis.age=age;}publicvoidinfo(){//成员方法,输出属性×信息System.out.println(name+"\t"+age+"\t");}}this小结:简单的说,哪个对象调用,this就代表哪个对象

this的注意事项和使用细节

this关键字可以用来访问本类的属性、方法、构造器

this用于区分当前类的属性和局部变量

classDog{//类Stringname;intage;publicDog(Stringname,intage){//构造器//this.name就是当前对象的属性namethis.name=name;//this.age就是当前对象的属性agethis.age=age;}}访问成员方法的语法:this.方法名(参数列表);注意:访问构造器语法:this(参数列表);必须放置第一条语句

/*细节:访问构造器语法:this(参数列表);注意只能在构造器中使用(即只能在构造器中访问另外一个构造器)注意:访问构造器语法:this(参数列表);必须放置第一条语句*/publicT(){this("jack",100);//这里去访问T(Stringname,intage) System.out.print1n("T()构造器");}publicT(Stringname,intage){System.out.println("T(Stringname,intage)构造器");}访问构造器语法:this(参数列表);注意只能在构造器中使用5.this不能在类定义的外部使用,只能在类定义的方法中使用。

●this的课堂案例定义Person类,里面有name、age属性,并提供compareTo比较方法,用于判断是否和另一个人相等,提供测试类TestPerson用于测试名字和年龄完全一样,就返回true,否则返回false

THE END
1.最全养猫指南丨新手养猫需要准备什么养猫注意事项→MAIGOO知识无论是正在养猫的小伙伴,还是准备当猫奴的小伙伴。养猫的第一件事当然是选一只自己喜欢的喵啦,猫的品种多达42种,我们大概可以分为短毛猫和长毛猫。 ▼短毛猫 短毛猫的品种非常的广泛多见,大多数的短毛猫性情都非常的温和,非常的聪明。 短毛猫都拥有非常久远的历史,外形可爱迷人,人们也一直对短毛喵喜爱有佳。常...https://www.360doc.cn/article/27250841_1106290471.html
2.养猫的注意事项有哪些养猫的注意事项有哪些 在猫咪2个月的时候给它打疫苗,三针联苗和一针狂犬疫苗,且疫苗期间不要洗澡。同时,按照宠物医生的叮嘱,要给猫咪做驱虫,2个月要做第一次驱虫。饮食上以猫粮作为主食,要保持少吃多餐,尽量不要喂生肉,保证干净的饮水。 在猫咪2个月的时候给它打疫苗,三针联苗和一针狂犬疫苗,且疫苗期间不...https://mip.xiaokeai.com/cat/feed/77174.html
3.新猫到家需要注意什么?新猫到家之后有很多需要注意的地方,否则很容易出现猫咪应激、肠胃不适、感染疾病的情况,今天氧宠博士就带大家了解一下新猫到家需要注意哪些问题,帮助新手铲屎官能更好地照顾猫咪。 标签: 猫饮食 新手养猫 一、新猫到家如何避免应激? 新猫到家之后是比较容易出现应激反应的,这种应激往往来自于人,所以铲屎官一定要...https://www.isdpp.com/xq-10387.html
1.java学习javaversion未找到命令细节说明 安装路径不要有中文或者特殊符号如空格等。比如d:\program\hspjdk8当提示安装JRE时,可以选择不安装,也可以安装. 配置环境变量 path 为什么要配置path √看一个现象 在dos命令行[快捷方式 win+r]中敲入javac,出现错误提示。 C:\Users\Administrator>javac ...https://blog.csdn.net/ing_end/article/details/126065930
2.新手养猫必知注意事项:养猫需要准备什么,新手必看!现在大多数人家里都会有只宠物,养猫的、养狗的、养鱼的、养鸟的等等,有些甚至还养蜥蜴和蛇之类的有一定危险系数的宠物,不过最常见的就是猫猫和狗狗了。今天我们就来说说养猫,都说有了猫就是人生赢家,不管你平时是温柔的人,还是高冷的人,或是神经大条的人,只要养了猫,你都是猫的奴隶,一回到家只要猫没在视野...https://www.gzstv.com/a/882a6220ca7a4e6f9534e56a3f3ac660
3.养猫注意事项养猫要注意什么怀孕能养猫吗亲子百科养猫注意事项 1、养小猫当宠物的人很多,习惯抱着小猫睡觉或让小猫舔脸的话,建议少做这一类动作。因为小猫本身就有病菌的。细毛喜欢有小爪子抓东西,用舌头舔东西,所以和小猫玩耍的时候一定要注意不要让小猫的手抚摸到你的脸,避免舔脸。猫的身上有会生跳蚤,养小猫的话要定时给它洗澡。https://baike.pcbaby.com.cn/qzbd/16810.html
4.糖尿病人能否养猫(与爱宠共处的注意事项和建议)宠物训练作为糖尿病人养猫的注意事项,需要主人注重宠物的饮食、卫生、运动等方面,同时也需要注意自己的健康和生活规律。与猫咪共处可以带来很多乐趣和陪伴,但是也需要认真对待宠物的健康和幸福。 糖尿病患者能否养猫 宠物是许多人的好朋友,但糖尿病患者是否可以和宠物在一起呢?本文将介绍以糖尿病患者和猫咪为例,需要注意的健康...https://www.pettb.cn/article-36720-1.html
5.养猫最忌讳的三种相等内容十二生肖养猫最忌讳的三种相等内容根本不存在。我们不相信这些说法。养猫是我们的个人行为,与环境风水无关。我们应该知道,如果我们决定养猫,我们应该好好对待猫。我们不能抛弃猫。否则,很容易对猫产生一些不良影响。 在线测算 养猫要注意什么? 注意事项如下: 1、喂食含肉量尽可能多的食物。 https://www.dadaojiayuan.com/shiershengxiao/43278.html
6.养宠物的房子装修注意什么,养宠物装修注意事项一般如果是家里养猫养狗的,都会再卧室门下方开一个方形窗口,方便猫狗进出,不然宠物会因为进不去门,长时间挠门,一是损坏门,再者产生比较大的噪音。 看完了这些需要我们注意的地方和具体的购买选择建议,大家是不是对未来的温馨生活有了更多的期待了呢?其实要做好这些细节的布置真的不难,针对整体的布局相对来说只...https://nj.zhuangku.com/gonggao/129227.html
7.家里养猫风水的禁忌(家里养猫好吗养猫风水注意事项)下面一起来看看关于家里养猫风水的禁忌(家里养猫好吗养猫风水注意事项)的相关信息吧。关注我们,了解更多资讯。 猫和狗一样,都是常见的动物。狗对人忠诚,粘性强,而猫相对来https://www.liuchengguanli.com/chengyu/68392.html
8.?新手养猫的注意事项新手养猫的你一定会着急,知道这些养猫的注意事项让你从容应对 1. 猫需要接种疫苗;猫通常出生三个月后,身体健康,没有呕吐、腹泻、打喷嚏和严重的皮肤病,可以带猫第一次接种疫苗,然后每年再次接种,作为增强免疫效果 那些可爱的小东西 2. 喂猫专用羊奶粉或猫粮,两个月内吃羊奶粉,此时猫胃肠功能弱,只能消化牛奶,...https://www.yikaonet.com/zatan/4038.html
9.养猫的注意事项养猫都有哪些需要注意的事项呢?以下是小编收集的相关信息,仅供大家阅读参考! 1、不用遛。遛狗是为了它的健康,顺便解决下大小便。猫不用遛,让它自己呆着就舒服了。 2、大小便自己解决。准备猫厕所,猫砂。猫会自己在里面解决大小便,并埋好。你要定时去清理。猫砂猫粮和猫厕所是猫必用的。猫窝不必买,它们会自...https://mip.oh100.com/a/201806/1403448.html
10.女孩养猫10天变“秃头”?养宠物这些小细节不注意,传染病找上门...这些传染病要注意 五一假期期间,女孩从宠物店抱回了一只猫咪回家养,结果猫养了不到十天,女孩脑门一处开始掉头发,去医院检查头皮,发现感染了真菌头癣,治疗脑门上方这个感染部位需要剃光头发才能涂药。 据了解,女孩感染的是猫癣,是猫感染的一种皮肤病。猫咪单纯感染猫癣后一般不会瘙痒(少数对真菌过敏的猫咪会产生瘙痒...https://static.nfapp.southcn.com/content/202105/13/c5254489.html
11.家里养猫要注意什么家里养猫注意事项在家养猫要注意什么?我一直以为,只要它不生病,不偷偷溜到外面去,就是安全的。但事实真的是这样吗?除了这些之外,养猫还需要注意哪些问题呢? 1. 葡萄或葡萄干,即使是一点点,也会导致猫肾衰竭。喜欢吃葡萄的人一定不要给猫吃。吃之前,一定要把它们放在猫接触不到的地方。 https://m.chongwuqu.com/a/14385.html