封装、构造、String类
封装
封装的概述
封装是面向对想的三大特征之一(封装.多态.继承)
封装的原则
将类中的某些信息隐藏在类的内部, 不允许外部直接访问,而是通过当前类对外提供的公共访问方式(方法)对隐藏起来的信息进行操作.
封装的好处
通过方法来控制成员变量的操作, 提高代码的安全性
将代码进行封装, 提高了代码的复用性
封装的实现
将成员变量使用private
修饰
对外提供公共的访问方式 — 修改/获取(Set/get)
private关键字的作用
- private可以用来修饰成员变量和成员方法等
- 如果使用private修饰, 那么被修饰的内容只能在本类中被使用
this关键字
当局部变量名与成员变量名相同时 - 用this关键字来区分成员变量和局部变量的问题
- 代表本类对象, 谁来调用我(this所在的方法), 我就代表谁!
构造方法
格式
无参构造
修饰符 void 类名() {
}
有参构造
修饰符 void 类名(参数类表) {
方法体
}
- 构造方法也体现了方法的重载
构造方法的作用
- 创建对象
- 给类进行初始化
- (注意) 当没有写构造方法是java会提供一个无参构造方法,只不过没有显示出来,如果写了构造方法java就不会再提供
标准类
1. private修饰的成员变量
2. 提供有参无参的构造方法
3. 提供成员变量的get/set方法
4. 其他方法根据需求
public class Student {
// 私有的成员变量
private String name;
private int age;
// 无参构造(必须)
public Student() {
}
// 有参构造(建议), 所有成员变量都作为参数的也叫做满参构造/全参构造
public Student(String name, int age) {
this.name = name;
this.age = age;
}
// getXxx()
// setXxx()
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;
}
// 其他成员方法
}
String类
- ava 程序中的所有字符串字面值(如
"abc"
)都作为此类的实例实现. - 程序中只要是双引号括起来的字符串, 都可以作为String类的对象(对象能调用方法)
- 字符串是常量, 它们的值在创建之后不能更改
- 虽然String字符串的值不能更改, 但是它们是可以共享的!!!
String类的构造方法
描述 | 构造 | 作用 |
---|---|---|
没用的 | public String() | 创建字符串对象, 表示的是空字符序列("") |
public String(String s) | 创建字符串对象, 表示的是与参数相同的字符序列 | |
有用的 | public String(char[] chs) | 创建字符串对象, 表示与字符数组同样的字符序列 |
public String(byte[] bys) | 创建字符串对象, 表示的是将字节数组中的数字按 照码表转换成对应的字符, 然后拼接起来. |
- 通过直接赋值的方式创建字符串, 指向字符串常量池中的地址
- 通过构造方法的方式创建字符串, 指向的是堆内存中的地址
直接赋值和构造方法赋值的区别在哪?
- 一个指向常量池
- 一个指向堆内存
- 它们的地址值不同