type
status
date
slug
summary
tags
category
icon
password

JAVA的public,private,protected,static

这篇博客讲得很清楚
这里说一下静态变量和实例变量的区别:
两者的区别是: 对于静态变量在内存中只有一个拷贝(节省内存),JVM只为静态分配一次内存,在加载类的过程中完成静态变量的内存分配,可用类名直接访问(方便),当然也可以通过对象来访问(但是这是不推荐的)。 对于实例变量,每创建一个实例,就会为实例变量分配一次内存,实例变量可以在内存中有多个拷贝,互不影响(灵活)。

静态工厂方法

参考:
这一篇讲了如何使用静态工厂方法创建实例以及其便捷性,比较易懂
在Java中,静态工厂方法是指一种设计模式,它是通过在类中定义静态方法来创建对象的方式。与传统的构造函数不同,静态工厂方法具有自定义的方法名称,可以根据需要返回类的不同实例。
静态工厂方法的一些特点包括:
  1. 自定义的方法名称:与构造函数不同,静态工厂方法可以具有任意的方法名称,这使得在创建对象时能够更好地表达意图。
  1. 可控的对象创建:通过静态工厂方法,类可以决定是否要返回一个新的对象实例,还是从缓存中返回现有的实例,或者返回一个子类的实例。
  1. 不强制每次调用都创建新对象:通过静态工厂方法,可以实现对象池或缓存,避免重复创建相同的对象实例,从而节省资源和提高性能。
  1. 隐藏构造函数:将构造函数私有化,并通过静态工厂方法来创建对象,可以隐藏构造函数,从而控制对象的创建过程。
示例:
在上面的示例中,MyClass 类通过私有构造函数隐藏了默认的构造方法,并提供了一个静态工厂方法 createInstance(),用于根据给定的键返回对象实例。该静态工厂方法通过缓存来避免重复创建相同的对象实例。

关于getter方法

在上面这段代码中,如果在外部创建了一个Student类的实例,既可以用student.name来访问它的name变量,又可以用student.getName()来访问,那么为什么非要有这个getName()方法呢?
  • student.name 是直接访问 student 对象的 name属性。这种访问方式直接通过对象的引用来获取属性值。
  • student.getName() 是调用 student 对象的 getName() 方法来获取学生的姓名。这种访问方式通过方法调用来获取属性值,而不是直接访问属性。
  • getter方法
    • 在Java中,getter方法是一种用于获取类的私有属性(字段)的方法,它通常遵循一定的命名规范,以get开头,后面跟着属性名首字母大写的形式。它的作用是返回对象的私有属性的值,以便在类的外部访问和获取这些值,而无需直接访问属性
  • Getter方法通常用于实现封装(Encapsulation)
    • 这是面向对象编程的一个重要原则,它隐藏了类内部的实现细节,并通过公共方法提供对属性的访问。这种方式提高了代码的安全性和可维护性,因为它可以防止外部代码直接修改类的内部状态,而是通过方法调用来操作。

正则表达式匹配

Pattern和Matcher

Pattern类用于建立模式对象:
  • 语句:Pattern pattern = Pattern.compile(regex); 其中regex是一个字符串
  • 这个语句表示创建了一个 Pattern 对象 pattern,并使用静态方法 compile() 来编译正则表达式
  • compile() 方法将传入的字符串正则表达式编译为一个 Pattern 对象,以便后续使用。在这个例子中,编译后的 pattern 将用于匹配目标字符串中是否包含 regex
Matcher类用于得到匹配对象:语句Matcher matcher = pattern.matcher(input);
  • pattern.matcher(input):这一部分创建了一个 Matcher 对象,用于对输入字符串进行匹配。其中,pattern 是之前编译好的正则表达式的 Pattern 对象,而 input 是待匹配的字符串
  • matcher = pattern.matcher(input):将创建的 Matcher 对象赋值给变量 matcher。Matcher 对象包含了进行匹配所需的方法和状态,可以用来执行匹配操作。
题目:
匹配的字符串中也包含 _ 或 % 时, 就要使用 ESCAPE 子句来告诉系统哪个 _ 或 % 不是通配符.
现在就请你写一个判断一个含有通配符的字符串在上述规则下是否与另一个字符串相匹配.
为了简化程序, 输入的样式串中出现的 _ 或 % 一定代表通配符, 且一个样式串中仅包含一个通配符, 与之相匹配的字符串中一定不包含 _ 或 %.
提示: java 可以使用 String 类的 matches 方法
题目:最大或最小匹配
 
ECS云服务器CS144—Lab2
  • Giscus