Java SE基础之面向对象(二)

一、this关键字

this修饰的变量用于指代成员变量

  • 方法的形参如果与成员变量同名,不带this修饰的变量指的是形参,而不是成员变量
  • 方法的形参没有与成员变量同名,不带this修饰的变量指的是成员变量

解决局部变量隐藏成员变量时,也就是局部变量与成员变量同名时

this代表所在类的对象引用

  • 方法被哪个对象调用,this就代表哪个对象

二、封装

概述

面向对象三大特征之一(封装、继承、多态)
是面向对象编程语言对客观世界的模拟,客观世界里成员变量都是隐藏在对象内部的,外界无法直接操作

封装原则

将类的某些信息隐藏在类的内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问成员变量private,提供对应的get和set方法

封装好处

通过方法来控制成员变量的操作,提高了代码安全性,把代码用方法进行封装,提高了代码复用性

三、构造方法

构造方法是一种特殊的方法

  • 作用:创建对象
  • 功能:主要是完成对象数据的初始化
  • 格式:
    1
    2
    3
    4
    5
    public class 类名{
    修饰符 类名(参数){

    }
    }

Student.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class Student {
private String name;
private int age;

public Student(){

}
public Student(String name,int age){
this.name=name;
this.age=age;
}
public void show(){
System.out.println(name+","+age);
}

}

StudentTest.java

四、API

API(Application Programming Interface)
应用程序编程接口

Java API:指JDK中提供的各种功能的Java类,这些类将底层的实现封装了起来,供我们直接使用。

五、String

String类在java.lang包下,所以使用的时候不需要导包

String类代表字符串,Java程序中的所有字符串文字都被实现为此类的实例,也就是说,Java程序中所有双引号字符串都是String类的对象

字符串特点

  • 字符串不可变,他们的值在创建后不能被更改
  • 字符串效果上相当于字符数组(char[]),但底层原理是字节数组(byte[])

String 构造方法

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

推荐使用直接赋值方式得到字符串对象

String对象的特点

①通过new创建的字符串对象,每一次new都会申请一个内存空间,虽然内容相同,但是地址不同

1
2
3
char[] chs={'a','b','c'};
String s1=new String(chs);
String s2=new String(chs);

上面代码中,JVM会首先创建一个字符数组,然后每一次new的时候都会有一个新的地址,只不过s1和s2参考的字符串内容相同

②以””方式给出的字符串,只要字符序列相同(顺序和大小写),无论在程序中出现几次,JVM都只会建立一个String对象,并在字符串池中维护

1
2
String s3="abc";
String S4="abc";
  • 在上面的代码中,针对第一行代码,JVM会建立一个String对象放在字符串池中,并给s3参考;
  • 第二行则让s4直接参考字符串池中的String对象,也就是说它们本质是同一个对象

字符串比较equals()

前面我们了解到,使用==做比较时

  • 基本类型:比较的是数据值是否相同
  • 引用类型:比较的是地址值是否相同

字符串是对象,它比较内容是否相同,是通过一个方法来实现的,这个方法叫equals()

  • public boolean equals(Object anObject):将此字符串与指定对象进行比较,由于我们比较的是字符串对象,所以参数直接传递一个字符串
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public class Test {
    public static void main(String args[]) {
    String Str1 = new String("runoob");
    String Str2 = Str1;
    String Str3 = new String("runoob");
    boolean retVal;

    retVal = Str1.equals( Str2 );
    System.out.println("返回值 = " + retVal );

    retVal = Str1.equals( Str3 );
    System.out.println("返回值 = " + retVal );
    }
    }

执行结果:

1
2
返回值 = true
返回值 = true

思维导图

Java EE思维导图O(∩_∩)O

请我喝杯咖啡吧~

支付宝
微信