当前位置: 首页 > 后端技术 > Java

JavaSE学习笔记Day07

时间:2023-04-02 09:55:15 Java

JavaSEDay07总结笔记01-面向对象入门,就是把对象一一处理,解决问题。所以我希望自己在写代码的时候也能用上这个思路,代码写起来会更轻松-例子:1.解决生成随机数的问题--->Randomobject2.解决键盘的问题input--->Scannerobject3.封装学生信息--->Studentobject...-Java强调一切皆对象。面向对象学什么?学习如何设计对象,学习你已有的东西如何使用对象(API阶段)02-类和对象前提条件:Java中要创建一个对象,必须有一个类firstClass:它是相关属性和属性的集合行为,可以看作是对象的设计图对象:根据类(设计图)创建的实体。Relationship:依赖关系:对象数量需要根据一个类来创建Relationship:一对多关系,多个对象类的组合根据一个类来创建:一个类就是一个设计图,设计图的本质是描述事物的属性(名词):成员变量:和前面定义的变量一样的格式,只是位置变了,在类中的方法之外。行为(动词):成员方法:和之前定义的方法一样,格式一样,只是去掉了static关键字。学生类{字符串名称;年龄;publicvoideat(){...}}注意:类写完后,需要在测试类中创建一个对象,才能使用该类测试{publicstaticvoidmain(String[]args){//创建对象格式:类名对象名=新类名();学生stu=newStudent();System.out.println(stu);//地址值:com.itheima.oop.Student@233ac4a//成员变量没有赋值,直接使用//使用成员变量格式:对象名.变量名;System.out.println(stu.name);//空System.out.println(stu.age);//0stu.name="张三";年龄=23;System.out.println(stu.name);//张三System.out.println(stu.age);//23//使用成员方法格式:对象名。方法名(实参);stu.eat();}}03-对象内存图单对象内存图二对象内存图04-成员变量和局部变量的区别1.成员写在类中不同位置变量:方法外的局部变量:方法内2.初始化值不同成员变量:有默认初始化值局部变量:无默认初始化值,使用前必须赋值才能使用3.内存位置不同成员变量:堆内存局部变量:栈内存4.成员变量生命周期不同:随着对象的创建而存在,随着对象局部变量的消失而消失:随着方法的调用而存在,随着方法的弹出栈而消失5.作用域在自己有效的05-花括号中的this关键字现象:当成员变量和局部变量同名时,在没有任何标识的情况下,Java会根据就近原则优先使用局部变量classStudent{intnum=10;publicvoidshow(){intnum=20;System.out.pritnln(num);}}学生stu=newStudent();stu.show();//20Java会根据就近原则优先使用局部变量问题:不使用成员变量,如何区分?回答:使用这个关键字classStudent{intnum=10;publicvoidshow(){intnum=20;System.out.pritnln(this.num);}}学生stu=newStudent();stu.show();//10结论:this调用本类成员(变量,方法)this。这个类的成员变量this。Thisclassmembermethod();------------------------------省略this的规则:1.调用一个成员方法,有没有前提,这个。可以直接省略2、调用成员变量需要保证没有重名,this。只有这样才能省略。简介:表示当前类对象的引用(地址)谁叫我,我就代表谁p1.show();---->this--->p1的地址p2.show();---->this--->p2地址06-构造方法构造方法|构造函数:创建对象时,要执行的方法的格式:1.方法名和类名一样,大小写需要一样2.没有返回值类型,甚至voidNone3.没有具体的返回值(retrun不能带回结果数据)-详情:可以返回;构造方法的执行时机:1、创建对象时,由系统调用执行2、每创建一个对象,就会执行一次构造方法。构造方法的作用:本质作用:创建对象结合执行时机:创建对象时,给成员变量Studentstu=newStudent("张三",23)赋值;思考过程:创建构造方法对象创建的时候,肯定会执行,所以不要闲着,帮我做点事——初始化成员变量的注意事项:1.如果一个类没有构造函数,系统会提供一个[default][noparameter]构造方法2.如果构造方法已经手动编写,系统将不再提供默认的无参构造建议:无参,带参构造手动给出方法。3.构造方法不允许调用对象名形式07-封装(重点)简介:隐藏实现细节,只暴露公共访问方法。封装在代码中的常见表现:在使用封装之前:Stringid="001";Stringname="张三";年龄=23;Stringtel="156xxxxxxxx";Stringaddress="北京";操作是5个分散的数据。--------------------------------------------------使用封装后:classUser{privateStringid;私有字符串名称;私人年龄;私人字符串电话;私有字符串地址;//生成参数为空和参数为空的结构体,setXxx和getXxx}Useru1=newUser("001","张三",23,"156xxxxxxxx","北京");操作是一个整体的对象体验:原来分散的数据现在被封装成了一个整体。结论:将属性提取到类中就是对数据的封装。程序程序员A:publicvoidpirntArray(int[]arr){...遍历打印数组的代码...}程序员B:你只需要关心方法能做什么,方法怎么用。至于内部逻辑实现,不用关注程序员A将遍历和打印数组的代码逻辑封装成一个方法。结论:将代码提取到方法中,就是对代码功能的封装。08-权限修饰符private:在同一个类中(默认):same在一个类中,在同一个包中保护:在一个项目中,两个包名不能相同,也就是说包名不能和其他包名重复项目中的包名。这里不仅包括自定义的包名,还包括项目引用的类库的包名public:Accessanywhere09-StandardJavaBean(必须掌握)成员变量private提供空参数,带参数的构造方法提供对应的setXxx和私有成员变量的getXxx方法。packagecom.iheima.test;/*1.私有成员变量private2.提供空参数和带参数的构造方法3.私有成员变量,提供setXxx和getXxx方法*/publicclassStudent{privateStringname;私人年龄;publicStudent(){}publicStudent(Stringname,intage){this.name=name;这个。年龄=年龄;}publicStringgetName(){返回名称;}publicvoidsetName(Stringname){this.name=name;}publicintgetAge(){返回年龄;}publicvoidsetAge(intage){this.age=age;}}包com.iheima.test;publicclassStudentTest{publicstaticvoidmain(String[]args){//1.空参构造创建对象,setXxx赋值Studentstu1=新学生();stu1.setName("张三");stu1.setAge(23);System.out.println(stu1.getName()+"---"+stu1.getAge());//2.创建带参数构造的对象。创建对象时直接赋值Studentstu2=newStudent("李四",24);System.out.println(stu2.getName()+"---"+stu2.getAge());//建议:一般情况下创建带参数的构造体进行初始化,如果后面涉及到修改,使用setXxx//注意:getXxx方法是获取真实数据。for(inti=1;i<=stu2.getAge();i++){System.out.println(stu2.getName()+"生日快乐");}}}