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());
    }
  • 封装的意义
    1. 提高程序的安全性,保护数据。
    2. 隐藏代码的实现细节。
    3. 接口的统一管理。
    4. 系统可维护性的提升。

实体类

  • 实体类是一种特殊形式的类。
  • 这个类中的成员变量必须私有,并且要对外提供相应的get/set方法,类中必须有一个公共的无参构造器。一般情况也会提供一个有参构造器。

作用:

  1. 实体类的对象本身可以用于存储数据。
  2. 实体类的对象只负责数据的存取,对于数据的业务处理应该交给另一个对象来处理实现。这是软件设计中很流行的一种设计思想:分层思想。
    案例
/**
 * 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创建对象封装字符串的方式:

    1. java程序中的所有字符串文字(例如“abc”)都为此类的对象。
    2. 调用String类的构造器初始化字符串对象。
      image
String name = "";
String name1 = new String();

这两种方式创建的对象效果是一样的,但是更推荐第一种。

String提供的常用方法
image
案例

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());
    }
}
posted @ 2025-07-24 21:10  狂风将军  阅读(10)  评论(0)    收藏  举报