第四周学习报告

又经过了一周的学习,今天对本周学习进行总结
本周学习了面向对象和字符串的相关知识

面向对象

类和对象

类的定义
通过关键字class来定义

class MyClass {  
    // 属性  
    int number;  
    String name;  
    // 方法  
    void display() {  
        System.out.println("Number = " + number + ", Name = " + name);  
    }  
}

对象的创建
使用new关键字和类的构造函数(如果没有显式定义,则使用默认的无参构造函数)来创建对象。

// 创建MyClass的一个对象  
MyClass myObject = new MyClass();  
// 设置对象的属性  
myObject.number = 10;  
myObject.name = "John";  
// 调用对象的方法  
myObject.display(); // 输出: Number = 10, Name = John

封装

1.修改属性的访问权限:将类的属性设为私有(private)或受保护的(protected),这样它们就不能被类外部的代码直接访问。
2.提供公共的getter和setter方法:为私有属性提供公共的getter(访问器)和setter(修改器)方法,以允许外部代码通过这些方法来访问和修改私有属性的值。
3.在getter和setter方法中加入逻辑:可以在getter和setter方法中加入额外的逻辑,比如验证输入值的有效性、在修改属性值时触发其他操作等。

public class Person {  
    // 私有属性  
    private String name;  
    private int age;  
    // 公共的getter和setter方法  
    public String getName() {  
        return name;  
    }  
    public void setName(String name) {  
        // 可以在这里加入验证逻辑  
        if (name != null && !name.isEmpty()) {  
            this.name = name;  
        } else {  
            throw new IllegalArgumentException("Name cannot be null or empty");  
        }  
    }  
    public int getAge() {  
        return age;  
    }  
    public void setAge(int age) {  
        // 可以在这里加入验证逻辑  
        if (age >= 0) {  
            this.age = age;  
        } else {  
            throw new IllegalArgumentException("Age cannot be negative");  
        }  
    }  
  
    // 其他方法...  
}

构造方法

1.默认构造方法:如果一个类中没有显式定义任何构造方法,Java编译器会自动为这个类提供一个无参数的默认构造方法。这个默认构造方法不包含任何参数,并且执行的操作通常是对象的默认初始化。
2.自定义构造方法:开发者可以在类中定义自己的构造方法,以便在对象创建时执行特定的初始化操作。自定义构造方法可以有参数,允许根据传入的参数来初始化对象的属性。

public class Person {  
    private String name;  
    private int age;  
    // 默认构造方法  
    public Person() {  
        this.name = "Unknown";  
        this.age = 0;  
    }  
    // 自定义构造方法  
    public Person(String name, int age) {  
        this.name = name;  
        this.age = age;  
    }  
    // Getter和Setter方法  
    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 static void main(String[] args) {  
        Person person1 = new Person(); // 使用默认构造方法  
        System.out.println("Name: " + person1.getName() + ", Age: " + person1.getAge()); 
        Person person2 = new Person("John", 30); // 使用自定义构造方法  
        System.out.println("Name: " + person2.getName() + ", Age: " + person2.getAge()); 
    }  
}

标准的javabean类

JavaBean是一种特殊的Java类,它符合特定的设计模式,主要用于封装数据。
1.包内定义:JavaBean类必须在包内定义,且这个包不能是缺省包。
2.公开类:JavaBean类必须是public类,这样它才能被其他类访问。
3.无参构造方法:JavaBean类必须提供一个无参数的构造方法,这样其他程序就可以通过反射机制来实例化JavaBean对象。

package com.example;  
public class User {  
    private String userName;  
    private int age;  
    // 无参构造方法  
    public User() {  
    }  
    // 带参构造方法  
    public User(String userName, int age) {  
        this.userName = userName;  
        this.age = age;  
    }  
    // getter方法  
    public String getUserName() {  
        return userName;  
    }  
    // setter方法  
    public void setUserName(String userName) {  
        this.userName = userName;  
    }  
    // 其他getter和setter方法...  
    public int getAge() {  
        return age;  
    }  
    public void setAge(int age) {  
        this.age = age;  
    }  
}

成员和局部

成员变量 局部变量
定义与位置 在类体中声明的变量,位于方法之外 在方法、构造器或语句块中声明的变量
作用域 整个类 仅限于声明它们的方法、构造器或语句块
存储位置 堆内存 栈内存
初始值 有默认初始值 没有默认初始值,必须显式赋值
生存周期 与对象的生存周期相同 仅限于所在方法、构造器或语句块的执行时间

字符串

1.不可变字符串
・length():返回字符串的长度。
・charAt(int index):返回指定索引处的字符。
・substring(int beginIndex, int endIndex):返回从beginIndex开始到endIndex(不包含)的子字符串。
・equals(Object anObject):比较两个字符串的内容是否相同。
・compareTo(String anotherString):按字典顺序比较两个字符串。
・replace(CharSequence target, CharSequence replacement):用replacement替换字符串中所有target出现的地方。
・split(String regex):根据给定的正则表达式分割字符串。
・toLowerCase() 和 toUpperCase():将字符串转换为小写或大写。
2.可变字符串(StringBuilder/StringBuffer)
・StringBuilder和StringBuffer都允许在创建后修改字符串内容,而不需要创建新的对象。
・append(String str):将指定的字符串追加到此字符序列的末尾。
・insert(int offset, String str):在指定索引处插入字符串。
・delete(int start, int end):删除此序列的子字符串中的字符。
・reverse():将此字符序列用其反转形式替换。

以上是本周学习总结。

posted @   muxin1630  阅读(3)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示