Java基础学习(5)

  • Post author:
  • Post category:java




一 面向对象



1.1 介绍对象


简单理解:

  • 拿东西过来做对应的事情
  • 获取对象并使用



1.2 设计对象并使用




  • :是对象共同特征的描述

  • 对象:

    是真实存在的具体东西
  • 在这里插入图片描述


    如何得到类对象


类名 对象名 = new 类名():



Phone p = new Phone();


如何适用对象

  • 访问属性:

    对象名.成员变量
  • 访问行为:

    对象名.方法名(.......)


    在这里插入图片描述



1.2.1定义类的补充注意事项

  • 用来描述一类事物的类,专业叫做:

    Javabean类

    在Javabean类中,是不写main方法的。
  • 在以前,编写main方法的类,叫做测试类我们可以在测试类中创建javabean类的对象并进行赋值调用
  1. 类名首字母建议大写,需要见名知意,驼峰模式
  2. 1个Java文件中可以定义多个cass类,目只能一个类是public修饰,而且pulic修饰的类名必须成为代码文件名实际开发中建议还是

    一个文件定义一个class类
  3. 成员变量的完整定义格式是:

    修饰符 数据类型 变量名称 =初始化值;

    ,一般无需指定初始化值,存在默认值



1.3 封装

如何正确的社会及对象的属性和方法


对象代表什么,就得封装对应的数据,并提供数据对应的行为


例如:人关门这一动作,关门这个动作行为是属于



的,

因为人只是给了门一个作用力,导致门自己关上了



好处:

  • 让编程变得很简单,有什么事,找对象,调方法就行。
  • 降低我们的学习成本,可以少学、少记,或者说压根不用学,不用记对象有哪些方法,有需要时去找就行



1.3 private关键字

  • 是一个权限修饰符
  • 可以修饰成员(成员变量和成员方法)
  • 被private修饰的成员只能在本类中才能访问
public class GirlFriend {
	private String name;
	private int age;
	private String gender;
}


会使得数据无法改变,我们应该用以下代码实现对数据的修改判断

set方法: 给成员变量赋值

get方法: 对外提供成员变量的值

public class GirlFrend {
    public int age;
    //作用: 给成员变量name进行赋值的
    public void setAge(int a){
        if(a>=18 && a<50){
            age = a;
        }else{
            System.out.println("非法数据");
        }
    }
    //作用:对外提供name属性的
    public int getAge(){
        return age;
    }
}



1.4 this关键字


作用:

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


就近原则

:

这个变量你谁近就听谁的

public class GirlFriend {	
	//成员变量
    private int age;
    public void method(){
    //局部变量
        int age = 10;
        //谁近听谁的
        System.out.println(age);
        //先找成员变量
        System.out.println(this.age);
    }
    }



1.5 构造方法


格式:


在这里插入图片描述


特点:

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

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

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


执行时机

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

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



构造方法的注意事项:


  • 构造方法的定义


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

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

  • 构造方法的重载


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

  • 推荐的使用方式


    无论是否使用,都手动书写无参数构造方法,和带全部参数的构造方法



1.6 标准的JavaBean

  • 类名需要见名知意
  • 成员变量使用private修饰
  • 提供至少两个构造方法

    1.无参构造方法

    2.带全部参数的构造方法
  • 成员方法

    1.提供每一个成员变量对应的setXxx()/getXxx()

    2.如果还有其他行为,也需要写上
public class User {
    private String Username;
    private  String Password;
    private String Email;
    private int age;

    public User() {
    }

    public User(String Username, String Password, String Email, int age) {
        this.Username = Username;
        this.Password = Password;
        this.Email = Email;
        this.age = age;
    }

    /**
     * 获取
     * @return Username
     */
    public String getUsername() {
        return Username;
    }

    /**
     * 设置
     * @param Username
     */
    public void setUsername(String Username) {
        this.Username = Username;
    }

    /**
     * 获取
     * @return Password
     */
    public String getPassword() {
        return Password;
    }

    /**
     * 设置
     * @param Password
     */
    public void setPassword(String Password) {
        this.Password = Password;
    }

    /**
     * 获取
     * @return Email
     */
    public String getEmail() {
        return Email;
    }

    /**
     * 设置
     * @param Email
     */
    public void setEmail(String Email) {
        this.Email = Email;
    }

    /**
     * 获取
     * @return age
     */
    public int getAge() {
        return age;
    }

    /**
     * 设置
     * @param age
     */
    public void setAge(int age) {
        this.age = age;
    }

 


快捷键:

  1. alt+inset 进行创建
  2. 添加插件ptg(推荐很香)

    点击settings
    在这里插入图片描述

    在这里插入图片描述


右键点击JavaBean


在这里插入图片描述



1.7 对象内存图



1.7.1 一个对象的内存图

  1. 加载class文件
  2. 申明局部变量
  3. 在堆内存中开辟一个空间
  4. 默认初始化
  5. 显示初始化
  6. 构造方法初始化
  7. 将堆内存中的地址值赋值给左边的局部变量

    -



1.7.2 两个对象内存图

在这里插入图片描述



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

在这里插入图片描述


如果改变stu1里面的值,那么stu2也会改变,因为赋值的时候,是把stu1里面的地址赋值给了stu2,所以他们指向的是同一个空间



1.8 基本数据类型和引用数据类型



1.8.1 基本数据类型

在变量中存储的真实数据

在这里插入图片描述



1.8.2 引用数据类型

存储的是数据的地址,可以通过地址去访问

在这里插入图片描述



1.9 this的内存原理


this的本质: 代表方法调用者的地址



this的作用:区分成员和局部变量


在这里插入图片描述



键盘输入


键盘录入


第一套体系

:

nextInt(); 接收整数

nextDouble();接收小数

next();接收字符串


遇到空格,制表符,回车就停止接受。这些符号后面的数据就不会接受了


第二套体系

:

nextLine();接收字符串


可以接收空格,制表符,遇到回车才停止接受数据



版权声明:本文为gua_Piter原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。