美文网首页
day12_封装_this_构造方法_API_String类

day12_封装_this_构造方法_API_String类

作者: 蹦蹦跶跶的起床啊 | 来源:发表于2020-02-22 19:33 被阅读0次
    • 封装
    • 构造方法
    • API
    • String

    封装

    概述

    将属性隐藏起来,若需要访问某个属性,提供公共方法对其访问。

    封装步骤

    private含义

    1. private是一个权限修饰符,代表最小权限。
    2. 可以修饰成员变量和成员方法。
    3. 被private修饰后的成员变量和成员方法,只在本类中才能访问。
      既然可以在本类中访问, 便可以在本类中创建两个方法, 一个可以得到private修饰的成员变量, 一个可以改变private修饰的成员变量.. 习惯性取名为 getXXX() ,setXXX(xxx)
      setXXX 传递了参数后,修改了堆内存中的值,不需要返回值,
      getXXX 是为了得到数据值,所以需要返回值
      这样就可以在set和get方法内部进行逻辑判断

    this关键字和构造方法

    this关键字

    • 使用原因
      定义方法时参数列表的参数名称可以随便起, 所以容易和成员变量名称重名, (系统就近原则在方法内部使用变量时,会先找方法内部的局部变量, 所以会找不到成员变量)

    • 使用方法:(IDEA中有快捷键 alt+insert)
      直接使用
      this.变量名
      this代表的是 哪个对象调用的方法, 方法内部的this就代表该对象
      比如 用 p.sayHello() sayHello()方法内部的this 就是 p 打印 this 就是打印p 就是对象的地址值

    注意
    每当对象对用成员方法时, 在栈内存会有成员方法空间, 在这个空间内部会隐藏有this内存空间,谁调用这个方法, this内部就会储存这个对象的地址值
    使用对象调用方法时, 方法内部隐藏有this,用来接收调用该方法的对象的地址值,如果需要使用this, 直接用.(每个方法内部都含有this,哪个对象调用该方法,this就是这个对象)

    一般this 在定义对象方法时使用较多

    this图解

    封装思想【理解】
    1.封装概述 是面向对象三大特征之一(封装,继承,多态) 是面向对象编程语言对客观世界的模拟,客观世界里成员变
    量都是隐藏在对象内部的,外界是无法直接操作的
    2.封装原则 将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操
    作和访问 成员变量private,提供对应的getXxx()/setXxx()方法
    3.封装好处 通过方法来控制成员变量的操作,提高了代码的安全性 把代码用方法进行封装,提高了代码的复用性

    构造方法

    • 作用
      通过new关键字 调用构造方法,
      通过构造方法给成员变量赋值

    只要new一个对象, 就会调用构造方法.
    其实是为了给成员变量赋值,

    • Scanner sc = new Scanner(System.in);
      每次new一个对象的时候, 后边儿的 Scanner() 其实就是调用的方法, 这个方法叫构造方法

    • 构造特点:
      1.修饰符中没有static
      2.没有返回值类型,连void也没有
      3.构造方法名和类名保持一模一样
      4.return;可以省略

    • 注意事项
      1.如果你不提供构造方法,系统会给出无参数构造方法。
      2.如果你提供了构造方法,系统将不再提供无参数构造方法(只要自己提供了构造方法, 就要提供无参构造方法)。
      3.构造方法是可以重载的,既可以定义参数,也可以不定义参数。
      4.构造方法名字和类名保持一致,且只有修饰符和方法名

    定义一个标准的java类
    要求:
    1.所有成员private修饰
    2.提供get和set方法
    3.提供空参和满参构造方法

    构造方法IDEA快捷键 alt+insert

    构造方法与set和get方法区别

    • 构造方法是在new的同时进行使用的, 也就是说 是在一个新的对象上进行使用, 而set和get是在同一个对象上进行赋值和获取
    • 对象类中在定义成员变量时,如果直接赋值, 就相当于每次创建一个新的对象的时候都有默认值, 不符合逻辑
    • 使用构造方法更改赋值,其实是new了一个新对象重新赋值, 这样会使原本的对象变成垃圾回收, 真实开发中,使用setxxx方法较多,方便

    标准代码——JavaBean

    JavaBean 是 Java语言编写类的一种标准规范。符合 JavaBean 的类,要求类必须是具体的和公共的,并且具有无参数的
    构造方法,提供用来操作成员变量的 set 和 get 方法。

    API

    应用程序编程接口
    JAVA中的API 其实是程序员的字典

    看包名, 类名, 构造方法, 方法和返回类型

    String 类

    概述

    字符串是常量, 只要被创建,就不能被改变, 只要有改变, 就是创建了新的字符串
    所有被双引号""引起来的内容, 都作为字符串String类的实例对象

    特点

    1. 字符串不变:字符串的值在创建后不能被更改。
    2. 因为String对象是不可变的,所以它们可以被共享。

    String s1 = "abc";
    String s2 = "abc";

    // 内存中只有一个"abc"对象被创建,同时被s1和s2共享。

    1. "abc" 等效于 char[] data={ 'a' , 'b' , 'c' } ,但是底层原理是字节数组( byte[] )
      (jdk8以前String内部是用的是字符数组,之后用的是字节数组)

    字符串常量存放在常量池中, 先检查常量池, 如果具有一模一样的字符串 , 就直接指向, 不会创建新的具有内存地址并且装有新字符串的内存空间

    String类的构造方法

    • 常用的构造方法

    方法名 说明
    public String() 创建一个空白字符串对象,不含有任何内容,相当于"";
    public String(char[] chs) 根据字符数组的内容,来创建字符串对象
    public String(byte[] bys) 根据字节数组的内容,来创建字符串对象
    String s = “abc”; 直接赋值的方式创建字符串对象,内容就是abc

    • 创建字符串对象两种方式的区别【理解】
      1.使用new关键字创建字符串对象: 只要new就会在堆内存中开辟空间.所以赋值给的变量接收的是在堆内存中空间地址值,此在堆内存中的空间存放有常量池字符串地址值;
      2.使用""写的字符串常量的形式:字符串常量在常量池中,所以赋值给的变量接收的是常量池里的地址;

    只要赋值运算符, 如 s6 = s6+s1, 都是在堆内存中进行了new String()的操作
    只要new 就是在堆内存中开辟具有地址值的内存空间, 存放的是在常量池字符串地址

    只要使用""创建的字符串都在常量池里, 只要在常量池里的字符串, 都要先进行一遍检索, 如果有相同的字符串, 内存地址值都是一样的,不会产生新的

    字符串的比较:==号和equals的作用

    ==比较基本数据类型:比较的是具体的值
    ==比较引用数据类型:比较的是对象地址值
    equals比较String类型: 比较的是对象的内容是否相同,区分大小写(eauals是String类的成员方法)

    相关文章

      网友评论

          本文标题:day12_封装_this_构造方法_API_String类

          本文链接:https://www.haomeiwen.com/subject/gwgkqhtx.html