09Java基础之封装
封装
-
该露的露,该藏的藏
- 我们程序设计要追求“高内聚,低耦合”。高内聚就是类的内部数据操作细节自己完成,不允许外部干涉;低耦合:仅暴露少量的方法给外部使用。
-
封装(数据的隐藏):通常,应禁止直接访问一个对象中数据的实际表示,而应通过操作接口来访问,这称为信息隐藏。
-
记住这句话就够了:属性私有,通过get/set来操作。
学生类:
// 类,它的核心就是封装,private:私有的
public class Student {
// 属性私有
// 名字
private String name;
// 学号
private int id;
// 性别
private char sex;
// 年龄
private int age;
// 提供一些可以操作这些属性的方法
// 通过get、set方法
// get 获得这个数据
public String getName(){
return this.name;
}
public int getId(){
return this.id;
}
public char getSex(){
return this.sex;
}
public int getAge(){
return this.age;
}
// set 给这个数据设置值
public void setName(String name){
this.name = name;
}
public void setId(int id){
this.id = id;
}
public void setSex(char sex){
this.sex = sex;
}
public void setAge(int age){
if(age >=120 || age <= 0){
this.age = age;
}
}
调用:
public static void main(String[] args) {
Student s1 = new Student();
s1.setName("王二小");
System.out.println(s1.getName());
}
- 封装的意义:
- 提高程序的安全性,保护数据。
- 隐藏代码的实现细节。
- 接口的统一管理。
- 系统可维护性的提升。
实体类
- 实体类是一种特殊形式的类。
- 这个类中的成员变量必须私有,并且要对外提供相应的get/set方法,类中必须有一个公共的无参构造器。一般情况也会提供一个有参构造器。
作用:
- 实体类的对象本身可以用于存储数据。
- 实体类的对象只负责数据的存取,对于数据的业务处理应该交给另一个对象来处理实现。这是软件设计中很流行的一种设计思想:分层思想。
案例:
/**
* Student:实体类
*/
public class Student {
private String name;
private int age;
private double score;
private double height;
// 无参构造
public Student() {
}
// 有参构造
public Student(String name, int age, double score, double height) {
this.name = name;
this.age = age;
this.score = score;
this.height = height;
}
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;
}
public double getScore() {
return score;
}
public void setScore(double score) {
this.score = score;
}
public double getHeight() {
return height;
}
public void setHeight(double height) {
this.height = height;
}
}
// 业务处理类
public class StudentOperator {
private Student s;
public StudentOperator() {
}
// 有参构造
public StudentOperator(Student s){
this.s = s;
}
public void printPass(){
if(s.getScore() >= 60){
System.out.println(s.getName() + ",他及格了!");
}
else{
System.out.println(s.getName() + ",他没及格!");
}
}
}
main方法:
public static void main(String[] args) {
Student s1 = new Student("王志博", 21, 99.9, 1.75);
StudentOperator so = new StudentOperator(s1);
so.printPass();
}
输出结果:
王志博,他及格了!
String的概述
-
String代表字符串,可以用来创建对象封装字符串数据,并对其进行处理。
-
String创建对象封装字符串的方式:
- java程序中的所有字符串文字(例如“abc”)都为此类的对象。
- 调用String类的构造器初始化字符串对象。
![image]()
String name = "";
String name1 = new String();
这两种方式创建的对象效果是一样的,但是更推荐第一种。
String提供的常用方法

案例
public class StringDemo01 {
public static void main(String[] args) {
// 目标快速熟悉String提供的处理字符串的方法
String name = "i love java so good";
// 1. 获取字符串长度
System.out.println("字符串长度:"+ name.length());
// 2. 提取字符串中某个索引位置处的字符
System.out.println(name.charAt(2));
// 3. 字符串的遍历
for(int i = 0; i < name.length(); i++){
System.out.println(name.charAt(i));
}
// 4.把字符串转换成字符数组
char[] cr = name.toCharArray();
for (int i = 0; i < cr.length; i++) {
System.out.println(cr[i]);
}
//5. 判断字符串内容是否一致,内容一样就返回true(重点)
String s1 = new String("qazwsx");
String s2 = new String("qazwsx");
System.out.println(s1 == s2);
System.out.println(s1.equals(s2));
// 6. 忽略大小写比较字符串内容(验证码比较)
String t1 = "aStg";
String t2 = "astg";
System.out.println(t1.equals(t2));
System.out.println(t1.equalsIgnoreCase(t2));
// 7. 截取字符串内容
System.out.println(name.substring(0,5));
// 8. 从当前位置一直截取到末尾
System.out.println(name.substring(5));
// 9. 把字符串中的某个内容替换成新内容,并返回新的字符串
String info = "这个游戏简直TM就是垃圾,SB,去你大爷!";
System.out.println(info.replace("TM","**").
replace("SB","**").
replace("去你大爷", "****"));
// 10. 判断字符串中是否包含关键字
System.out.println(name.contains("love"));
// 11. 判断字符串是否以什么内容开头
System.out.println(name.startsWith("i"));
// 12. 判断字符串是否以什么内容结尾
System.out.println(name.endsWith("you"));
// 13. 把字符串按照制定内容切割成多个字符串(重要)
String seg = "王一博,刘晓明,陈伟健,王宝强";
String[] names = seg.split(",");
for (int i = 0; i < names.length; i++) {
System.out.println(names[i]);
}
// 14. 把字符串转成大写
System.out.println(name.toUpperCase());
// 15. 把字符串转成小写
System.out.println(name.toLowerCase());
// 16. 去除字符串两端的空格
String str = " 我是一个字符串 ";
System.out.println(str.trim());
}
}


浙公网安备 33010602011771号