Java基础学习(5)

Java基础学习

  • 一 面向对象
    • 1.1 介绍对象
    • 1.2 设计对象并使用
      • 1.2.1定义类的补充注意事项
    • 1.3 封装
    • 好处:
    • 1.3 private关键字
    • 1.4 this关键字
    • 1.5 构造方法
  • 构造方法的注意事项:
    • 1.6 标准的JavaBean
    • 1.7 对象内存图
      • 1.7.1 一个对象的内存图
      • 1.7.2 两个对象内存图
      • 1.7.两个引用指向同一个对象
    • 1.8 基本数据类型和引用数据类型
      • 1.8.1 基本数据类型
      • 1.8.2 引用数据类型
    • 1.9 this的内存原理
      • 键盘输入

一 面向对象

1.1 介绍对象

简单理解:

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

1.2 设计对象并使用

  • :是对象共同特征的描述
  • **对象:**是真实存在的具体东西
  • Java基础学习(5)_第1张图片
    如何得到类对象

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

如何适用对象

  • 访问属性:对象名.成员变量
  • 访问行为:对象名.方法名(.......)
    Java基础学习(5)_第2张图片

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 构造方法

格式:
Java基础学习(5)_第3张图片
特点:

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(推荐很香)
    点击settingsJava基础学习(5)_第4张图片
    Java基础学习(5)_第5张图片

右键点击JavaBean
Java基础学习(5)_第6张图片

1.7 对象内存图

1.7.1 一个对象的内存图

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

1.7.2 两个对象内存图

Java基础学习(5)_第8张图片

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

Java基础学习(5)_第9张图片

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

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

1.8.1 基本数据类型

在变量中存储的真实数据

Java基础学习(5)_第10张图片

1.8.2 引用数据类型

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

Java基础学习(5)_第11张图片

1.9 this的内存原理

this的本质: 代表方法调用者的地址
this的作用:区分成员和局部变量
Java基础学习(5)_第12张图片

键盘输入

键盘录入

第一套体系:
nextInt(); 接收整数
nextDouble();接收小数
next();接收字符串
遇到空格,制表符,回车就停止接受。这些符号后面的数据就不会接受了

第二套体系:
nextLine();接收字符串
可以接收空格,制表符,遇到回车才停止接受数据

你可能感兴趣的:(java,学习,jvm)