面向对象基础

Java学习笔记(新手纯小白向)

第一章 JAVA基础概念

第二章 JAVA安装和环境配置

第三章 IntelliJ IDEA安装

第四章 运算符

第五章 运算符联系

第六章 判断与循环

第七章 判断与循环练习

第八章 循环高级综合

第九章 数组介绍及其内存图

第十章 数组基础练习

第十一章 方法基础及简单应用

第十二章 方法基础练习

第十三章 前续知识综合练习

第十四章 面向对象基础


目录

Java学习笔记(新手纯小白向)

前言

一、类和对象

        1.类和对象的概念

        2.如何定义类

        3.如何得到类的对象

        4.如何使用对象

        5.代码演示

二、封装

        1.封装及其好处

        2.private关键字

        3.代码演示

三、就近原则和this关键字

        1.就近原则 

        2.this的作用

        3.代码演示

四、构造方法 

        1.概述

        2.格式

        3.注意事项

 五、标准的JavaBean类

        1.注意事项

        2.IDEA中生成JavaBean类的快捷方式:

        3.代码演示

 六、三种情况的对象内存图

        1.Java内存分配介绍

        2.创建对象时,内存中的运行步骤

        3.一个对象的内存图​编辑

        4.两个对象的内存图​编辑

        5.两个引用指向同一个对象​编辑

七、基本数据类型和引用数据类型

        1.基本数据类型

        2.引用数据类型

八、this的内存原理

        1.作用

        2.本质

        3.内存原理​编辑

九、成员和局部

        1.成员变量

        2.局部变量

        3.区别 ​编辑

总结


前言

本篇章主要介绍了面向对象编程思想的一些基础知识及其使用方法与场景


一、类和对象

        1.类和对象的概念

                (1)类:是共同特征的描述(设计图) 

                (2)对象:是真实存在的具体实例

        2.如何定义类

                (1)JavaBean类:用来描述一类事物的类。在JavaBean类中,是不写main方法的。

                (2)测试类:在以前,编写main方法的类。可以在测试类中创建JavaBean类的对象并进行赋值调用。

                (3)注意事项:

                        类名首字母建议大写,需要见名知意,驼峰模式。

                        一个Java文件中可以定义多个class类,且只能一个类是public修饰,而且public修饰的类名必须成为代码文件名。实际开发中建议还是一个文件定义一个class类。

                        成员变量的完整定义格式是:修饰符 变量名称 = 初始化值;一般无需指定初始化值,存在默认值。

                (4)对象的成员变量的默认值规则:

                        基本数据类型中,byte、short、int、long的默认值为0;float、double的默认值为0.0。引用数据类型,包括类、接口、数组、String的默认值为null。

                (5)类的定义:

public class 类名{
    1、成员变量(代表属性,一般是名词)
    2、成员方法(代表行为,一般是动词)
    3、构造器(后面学习)
    4、代码块(后面学习)
    4、内部类(后面学习)
}

        3.如何得到类的对象

类名 对象名 = new 类名();
Phone p = new Phone();

        4.如何使用对象

                (1)访问属性:对象名.成员变量

                (2)访问行为:对象名.方法名(...)

        5.代码演示

public class Phone {
    //属性
    String brand;
    double price;

    //行为
    public void call() {
        System.out.println("手机在打电话");
    }

    public void playGame() {
        System.out.println("手机在玩游戏");
    }
}
public class PhoneTest {
    public static void main(String[] args) {
        //创建第一部手机的对象
        Phone p1 = new Phone();

        p1.brand = "小米";
        p1.price = 1999.98;

        //获取手机对象中的值
        System.out.println(p1.brand);
        System.out.println(p1.price);

        //调用手机中的方法
        p1.call();
        p1.playGame();

        //创建第二部手机的对象
        Phone p2 = new Phone();
        p2.brand = "苹果";
        p2.price = 8999;

        p2.call();
        p2.playGame();
    }
}

二、封装

        1.封装及其好处

                (1)面向对象三大特征:封装、继承、多态

                (2) 含义:告诉我们,如何正确设计对象的属性和方法

                (3)原则:对象代表什么,就得封装对应的数据,并提供数据对应的行为

                (4)理解封装思想的好处:让变成变得简单,有什么事,调方法就行。降低我们的学习成本,可以少学、少记,或者说压根不用学,不用记对象有哪些方法,有需要时去找就行

        2.private关键字

                (1)private关键字是一个权限修饰符

                (2)可以修饰成员(成员变量和成员方法)

                (3)被private修饰的成员只能在本类中才能访问

                (4)针对private修饰的成员变量,如果需要被其他类使用,提供相应的操作

                (5)提供“setXXX(参数)”方法,用于给成员变量赋值,方法用public修饰

                (6)提供“getXXX()”方法,用于获取成员变量的值,方法用public修饰

        3.代码演示

public class GirlFriend01 {
    //女朋友的私有属性
    private String name;
    private String gender;
    private int age;

    //针对于每一个私有化的成员变量,都要提供get和set方法
    //set方法:给成员变量赋值
    //get方法:对外提供成员变量的值
    public void setName(String name) {
        //等号的右边:局部变量表示测试类中调用方法传递过来的数据
        //等号的左边:表示成员位置的name
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public String getGender() {
        return gender;
    }

    public void setAge(int age) {
        if (age >= 18 && age <= 50) {
            this.age = age;
        } else {
            System.out.println("非法参数");
        }
    }

    public int getAge() {
        return age;
    }

    //女朋友的行为
    public void sleep() {
        System.out.println("女朋友在睡觉");
    }

    public void eat() {
        System.out.println("女朋友在吃饭");
    }
}
public class GirlFriendTest01 {
    public static void main(String[] args) {
        //创建第一个女朋友的对象
        GirlFriend01 girl1 = new GirlFriend01();
        girl1.setName("小芳");
        girl1.setAge(18);
        girl1.setGender("甜妹");

        System.out.println(girl1.getName());
        System.out.println(girl1.getGender());
        System.out.println(girl1.getAge());

        girl1.eat();
        girl1.sleep();

        //创建第二个女朋友的对象
        GirlFriend01 girl2 = new GirlFriend01();
        girl2.setName("小美");
        girl2.setAge(22);
        girl2.setGender("御姐");

        System.out.println(girl2.getName());
        System.out.println(girl2.getGender());
        System.out.println(girl2.getAge());

        girl2.eat();
        girl2.sleep();
    }
}

三、就近原则和this关键字

        1.就近原则 

System.out.println(age);
System.out.println(this.age);

        2.this的作用

                可以区别成员变量和局部变量

        3.代码演示

public class GirlFriend02 {
    //属性
    private int age;

    public void method() {
        int age = 10;
        System.out.println(age);//就近原则:谁离我近,我就用谁
        System.out.println(this.age);
    }
}
public class GirlFriendTest02 {
    public static void main(String[] args) {
        GirlFriend02 girl1 = new GirlFriend02();

        girl1.method();
    }
}

四、构造方法 

        1.概述

                (1)构造方法也称构造器、构造函数

                (2)作用:创造对象的时候,由虚拟机自动调用,给成员变量进行初始化

                (3)种类:

                        无参数构造方法:初始化对象时,成员变量得数据均采用默认值

                        有参数构造方法:在初始化对象的时候,同时可以为对象进行赋值

        2.格式

public class Student {
    private String name;
    private int age;

    //如果我们自己没有写任何的构造方法,
    //那么虚拟机会给我们加一个空参构造方法
    //空参构造
    public Student(){
        System.out.println("看看我执行了吗");
    }

    //带参构造
    public Student(String name,int age){
        this.name = name;
        this.age = age;
    }

    public String getName(){
        return name;
    }
    public void setName(String name){
        this.name = name;
    }
    public int getAge(){
        return age;
    }
    public void setAge(int age){
        this.age = age;
    }
}
public class StudentTest {
    public static void main(String[] args) {
        //创建对象
        //调用空参构造
        Student s1 = new Student();
        Student s2 = new Student("张三",18);

        System.out.println(s1.getName());
        System.out.println(s1.getAge());
        System.out.println(s2.getName());
        System.out.println(s2.getAge());
    }
}

                (1)特点:

                        方法名与类名相同,大小写也要一致

                        没有返回值类型,连void都没有

                        没有具体的返回值(不能由return带回结果数据)

                (2)执行时机:

                        创建对象的时候由虚拟机调用,不能手动调用构造方法

                        每创建一次对象,就会调用一次构造方法

        3.注意事项

                (1)构造方法的定义:

                        如果没有定义构造方法,系统将给出一个默认的无参数的构造方法

                        如果定义了构造方法,系统将不再提供默认的构造方法

                (2)构造方法的重载:

                        带参构造方法,和无参数构造方法,两者方法名相同,但是参数不同,这叫构造方法的重载。

                (3)推荐的使用方式:无论是否使用,都手动书写无参数构造方法,和带全部参数的构造方法。

 五、标准的JavaBean类

        1.注意事项

                (1)类名需要见名知意

                (2)成员变量使用private修饰

                (3)提供至少两个构造方法:无参构造方法、带全部参数的构造方法

                (4)成员方法:提供每一个成员变量对应的setXXX()/getXXX(),如果还有其他行为,也需要写上。

        2.IDEA中生成JavaBean类的快捷方式:

                (1)alt + insert

                (2)alt + Fn + insert

                (3)插件PTG,1秒生成标准JavaBean

        3.代码演示

public class User {
    //创建用户的成员变量
    private String userName;
    private int password;
    private String email;
    private char gender;
    private int age;

    //定义空参构造方法
    public User() {
    }

    //定义带参构造方法
    public User(String userName, int password, String email, char gender, int age) {
        this.userName = userName;
        this.password = password;
        this.email = email;
        this.gender = gender;
        this.age = age;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public int getPassword() {
        return password;
    }

    public void setPassword(int password) {
        this.password = password;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public char getGender() {
        return gender;
    }

    public void setGender(char gender) {
        this.gender = gender;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

 六、三种情况的对象内存图

        1.Java内存分配介绍

                (1)栈:栈内存是方法运行时所进入的内存,变量也是在这里

                (2)堆:堆内存,new出来的东西会在这块内存中开辟空间并产生地址

                (3)方法区:字节码文件加载时进入的内存

                (4)本地方法栈

                (5)寄存器

        2.创建对象时,内存中的运行步骤

                (1)加载class文件

                (2)申明局部变量

                (3)在堆内存中开辟一个空间

                (4)默认初始化

                (5)显示初始化

                (6)构造方法初始化

                (7)将堆内存中的地址值赋值给左边的局部变量 

        3.一个对象的内存图

        4.两个对象的内存图

        5.两个引用指向同一个对象

七、基本数据类型和引用数据类型

        1.基本数据类型

                (1)数据值是存储在自己的空间中

                (2)赋值给其他变量,也是赋的真实的值

        2.引用数据类型

                (1)数据值是存储在其他空间中,自己空间中存储的是地址值

                (2)赋值给其他变量,赋的是地址值

八、this的内存原理

        1.作用

                区分局部变量和成员变量

        2.本质

                代表方法调用者的地址值

        3.内存原理

九、成员和局部

        1.成员变量

                类中方法外的变量

        2.局部变量

                方法中的变量

        3.区别 


总结

在了解了面向对象的基础知识后,一定要自己独立动手练习代码,学会怎样封装,为以后的进阶打好基础。并且此篇中对象的内存图板块一定要好好了解一下,有助于更好得理解。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值