当前位置: 首页 > news >正文

【Java】期末复习知识点总结(4)

适合Java期末的复习~

(Java期末复习知识点总结分为4篇,这里是最后一篇啦)第一篇~icon-default.png?t=N176https://blog.csdn.net/qq_53869058/article/details/129417537?spm=1001.2014.3001.5501第二篇~icon-default.png?t=N176https://blog.csdn.net/qq_53869058/article/details/129475124?spm=1001.2014.3001.5501第三篇~icon-default.png?t=N176https://blog.csdn.net/qq_53869058/article/details/129516371?spm=1001.2014.3001.5501

目录

一、抽象类

1. 抽象类的产生背景

2. 抽象类语法 

3. 抽象类特性

二、接口

1. 接口语法

2. 接口特性

3. 实现多个接口

4. 接口间的继承

5. 对比一下抽象类与接口

 三、String类

         1. 字符串构造

2. String对象的比较

3. 字符串查找

4. 转化

5. 字符串替换

6. 字符串拆分

7. 字符串截取


一、抽象类

1. 抽象类的产生背景

1.多态的实现需要依赖继承与方法重写,但是前面的方式我们无法对子类是否重写方法做出要求,子类到底重写方法与否,重写哪些方法,全凭自愿,若需要对子类重写方法做出一些强制性的要求,就会用到抽象类

2.很多父类其实本身就是抽象的,只有在具体子类中方法才有具体含义,这些类也应当被定义为抽象类

2. 抽象类语法 

在 Java 中,一个类如果被 abstract 修饰称为抽象类,抽象类中被 abstract 修饰的方法称为抽象方法,抽象方法不用给出具体的实现体。

// 抽象类:被abstract修饰的类
public abstract class Shape {
// 抽象方法:被abstract修饰的方法,没有方法体abstract public void draw();abstract void calcArea();
// 抽象类也是类,也可以增加普通方法和属性public double getArea(){return area;}protected double area; // 面积
}

注意:抽象类也是类,内部可以包含普通方法和属性,甚至构造方法。

3. 抽象类特性

3.1  抽象类不能直接实例化对象,抽象类必须有子类,抽象类不能自己实例化对象,要通过子类对象向上转型为其实例化

Shape shape = new Shape();
// 编译出错
Error:(30, 23) java: Shape是抽象的; 无法实例化

3.2 抽象方法不能是 private 的

抽象方abstract class Shape {abstract private void draw();
}
// 编译出错
Error:(4, 27) java: 非法的修饰符组合: abstract和private

3.3 抽象方法不能被fifinal和static修饰,因为法要被子类重写

public abstract class Shape {abstract final void methodA();abstract public static void methodB();
}
// 编译报错:
// Error:(20, 25) java: 非法的修饰符组合: abstract和final
// Error:(21, 33) java: 非法的修饰符组合: abstract和static

3.4 抽象类必须被继承,并且继承后子类要重写父类中的抽象方法,否则子类也是抽象类,必须要使用 abstract 修饰

// 矩形类
public class Rect extends Shape {private double length;private double width;Rect(double length, double width){this.length = length;this.width = width;}public void draw(){System.out.println("矩形: length= "+length+" width= " + width);}public void calcArea(){area = length * width;}
}
//圆类
public class Circle extends Shape{private double r;final private static double PI = 3.14;public Circle(double r){this.r = r;}public void draw(){System.out.println("圆:r = "+r);}public void calcArea(){area = PI * r * r;}
}
// 三角形类:
public abstract class Triangle extends Shape {private double a;private double b;private double c;@Overridepublic void draw() {System.out.println("三角形:a = "+a + " b = "+b+" c = "+c);}
// 三角形:直角三角形、等腰三角形等,还可以继续细化
//@Override
//double calcArea(); // 编译失败:要么实现该抽象方法,要么将三角形设计为抽象类
}

3.5 抽象类中不一定包含抽象方法,但是有抽象方法的类一定是抽象类

3.6 抽象类中可以有构造方法,供子类创建对象时,初始化父类的成员变量

3.7子类也是抽象类,可以选择性的重写抽象方法,即子类可以一个抽象方法都不重写

二、接口

接口就是公共的行为规范标准,大家在实现时,只要符合规范标准,就可以通用 。  Java 中,接口可以看成是:多个类的公共规范,是一种引用数据类型。

1. 接口语法

接口的定义格式与定义类的格式基本相同,class关键字换成 interface 关键字,就定义了一个接口。

public interface 接口名称{
// 抽象方法public abstract void method1(); // public abstract 是固定搭配,可以不写public void method2();abstract void method3();void method4();
}

【提示】
1. 创建接口时 , 接口的命名一般以大写字母 I 开头 .
2. 接口的命名一般使用 " 形容词" 词性的单词 .
3. 阿里编码规范中约定 , 接口中的方法和属性不要加任何修饰符号 , 保持代码的简洁性

public class 类名称 implements 接口名称{
// ...
}

【注意】

子类和父类之间是extends 继承关系,类与接口之间是 implements 实现关系。

子类的命名 : 以父类接口名称开头,以impl结尾
Messagelmpl => 一眼看上去就知道是IMessage接口的子类

实现一个笔记本电脑使用 USB 鼠标、 USB 键盘的例子:
1. USB 接口:包含打开设备、关闭设备功能
2. 笔记本类:包含开机功能、关机功能、使用 USB 设备功能
3. 鼠标类:实现 USB 接口,并具备点击功能
4. 键盘类:实现 USB 接口,并具备输入功能

// USB接口
public interface USB {void openDevice();void closeDevice();
}
// 鼠标类,实现USB接口
public class Mouse implements USB {@Overridepublic void openDevice() {System.out.println("打开鼠标");}@Overridepublic void closeDevice() {System.out.println("关闭鼠标");}public void click(){System.out.println("鼠标点击");}
}
// 键盘类,实现USB接口
public class KeyBoard implements USB {@Overridepublic void openDevice() {System.out.println("打开键盘");}@Overridepublic void closeDevice() {System.out.println("关闭键盘");}public void inPut(){System.out.println("键盘输入");}
}
// 笔记本类:使用USB设备
public class Computer {public void powerOn(){System.out.println("打开笔记本电脑");}public void powerOff(){System.out.println("关闭笔记本电脑");}public void useDevice(USB usb){usb.openDevice();if(usb instanceof Mouse){Mouse mouse = (Mouse)usb;mouse.click();}else if(usb instanceof KeyBoard){KeyBoard keyBoard = (KeyBoard)usb;keyBoard.inPut();}usb.closeDevice();}
}
// 测试类:
public class TestUSB {public static void main(String[] args) {Computer computer = new Computer();computer.powerOn();// 使用鼠标设备computer.useDevice(new Mouse());// 使用键盘设备computer.useDevice(new KeyBoard());computer.powerOff();}
}

2. 接口特性

2.1 接口类型是一种引用类型,但是不能直接new接口的对象

public class TestUSB {public static void main(String[] args) {USB usb = new USB();}
}
// Error:(10, 19) java: day20210915.USB是抽象的; 无法实例化

2.2 接口中每一个方法都是public的抽象方法, 即接口中的方法会被隐式的指定为 public abstract(只能是 public abstract,其他修饰符都会报错)

public interface USB {
// Error:(4, 18) java: 此处不允许使用修饰符privateprivate void openDevice();void closeDevice();
}

2.3 接口中的方法是不能在接口中实现的,只能由实现接口的类来实现

public interface USB {void openDevice();
// 编译失败:因为接口中的方式默认为抽象方法
// Error:(5, 23) java: 接口抽象方法不能带有主体void closeDevice(){System.out.println("关闭USB设备");}
}

2.4 重写接口中方法时,不能使用默认的访问权限

public interface USB{void openDevice(); // 默认是public的void closeDevice(); // 默认是public的
}
public class Mouse implements USB {@Overridevoid openDevice() {System.out.println("打开鼠标");}
// ...
}
// 编译报错,重写USB中openDevice方法时,不能使用默认修饰符
// 正在尝试分配更低的访问权限; 以前为public

4.5 接口中可以含有变量,但是接口中的变量会被隐式的指定为 public static final 变量

4.6 接口中不能有静态代码块和构造方法

4.7 如果类没有实现接口中的所有的抽象方法,则类必须设置为抽象类

3. 实现多个接口

在Java中,类和类之间是单继承的,一个类只能有一个父类,即Java中不支持多继承,但是一个类可以实现多个接。下面是子类继承父类与实现多个接口的语法:

class 子类 extends 父类 implements 接口1, 接口2,...,接口n{
//...
}

4. 接口间的继承

//接口1继承接口2和接口3
interface 接口1 extends 接口2, 接口3 {
}

5. 对比一下抽象类与接口

 三、String类

String类的常用方法

1. 字符串构造

String 类提供的构造方式非常多,常用的就以下三种:

public static void main(String[] args) {// 使用常量串构造String s1 = "hello bit";System.out.println(s1);// 直接newString对象String s2 = new String("hello bit");System.out.println(s1);// 使用字符数组进行构造char[] array = {'h','e','l','l','o','b','i','t'};String s3 = new String(array);System.out.println(s1);
}

【 注意 】

(1)String 是引用类型,内部并不存储字符串本身 

public static void main(String[] args) {
// s1和s2引用的是不同对象 s1和s3引用的是同一对象String s1 = new String("hello");String s2 = new String("world");String s3 = s1;System.out.println(s1.length()); // 获取字符串长度---输出5System.out.println(s1.isEmpty()); // 如果字符串长度为0,返回true,否则返回false
}

(2)在Java中“”引起来的也是String类型对象

// 打印"hello"字符串(String对象)的长度
System.out.println("hello".length());

2. String对象的比较

字符串的比较是常见操作之一,比如:字符串排序。 Java 中总共提供了 4 中方式:
2.1  == 比较是否引用同一个对象
注意:对于内置类型, == 比较的是变量中的值;对于引用类型 == 比较的是引用中的地址。

int a = 10;
int b = 20;
int c = 10;
// 对于基本类型变量,==比较两个变量中存储的值是否相同
System.out.println(a == b); // false
System.out.println(a == c); // true
// 对于引用类型变量,==比较两个引用变量引用的是否为同一个对象
String s1 = new String("hello");
String s2 = new String("hello");
String s3 = new String("world");
String s4 = s1;
System.out.println(s1 == s2); // false
System.out.println(s2 == s3); // false
System.out.println(s1 == s4);

2.2  boolean equals(Object anObject) 方法按照字典序比较(需要自己重写)

2.3  int compareTo(String s) 方法 按照字典序进行比较(需要自己重写)

(这两个一般不会考到,知道就好)

3. 字符串查找

字符串查找也是字符串中非常常见的操作, String 类提供的常用查找的方法:

public static void main(String[] args) {String s = "aaabbbcccaaabbbccc";System.out.println(s.charAt(3)); // 'b'System.out.println(s.indexOf('c')); // 6System.out.println(s.indexOf('c', 10)); // 15System.out.println(s.indexOf("bbb")); // 3System.out.println(s.indexOf("bbb", 10)); // 12System.out.println(s.lastIndexOf('c')); // 17System.out.println(s.lastIndexOf('c', 10)); // 8System.out.println(s.lastIndexOf("bbb")); // 12System.out.println(s.lastIndexOf("bbb", 10)); // 3
}

4. 转化

4.1  数值和字符串转化

public static void main(String[] args) {
// 数字转字符串String s1 = String.valueOf(1234);String s2 = String.valueOf(12.34);String s3 = String.valueOf(true);String s4 = String.valueOf(new Student("Hanmeimei", 18));System.out.println(s1);System.out.println(s2);System.out.println(s3);System.out.println(s4);System.out.println("=================================");
// 字符串转数字
// 注意:Integer、Double等是Java中的包装类型,这个后面会讲到int data1 = Integer.parseInt("1234");double data2 = Double.parseDouble("12.34");System.out.println(data1);System.out.println(data2);
}

4.2  大小写转换

public static void main(String[] args) {String s1 = "hello";String s2 = "HELLO";// 小写转大写System.out.println(s1.toUpperCase());// 大写转小写System.out.println(s2.toLowerCase());
}

4.3  字符串转数组

public static void main(String[] args) {String s = "hello";// 字符串转数组char[] ch = s.toCharArray();for (int i = 0; i < ch.length; i++) {System.out.print(ch[i]);}System.out.println();// 数组转字符串String s2 = new String(ch);System.out.println(s2);
}

5. 字符串替换

//字符串的替换处理
String str = "helloworld" ;
System.out.println(str.replaceAll("l", "_"));
System.out.println(str.replaceFirst("l", "_"));

 注意 由于字符串是不可变对象 , 替换不修改当前字符串 , 而是产生一个新的字符串

6. 字符串拆分

可以将一个完整的字符串按照指定的分隔符划分为若干个子字符串。

可用方法如下:

//拆分IP地址
String str = "192.168.1.1" ;
String[] result = str.split("\\.") ;
for(String s: result) {System.out.println(s);
}

7. 字符串截取

从一个完整的字符串之中截取出部分内容。可用方法如下:

//字符串截取
String str = "helloworld" ;
System.out.println(str.substring(5));
System.out.println(str.substring(0, 5));

【 注意 】
1. 索引从 0 开始
2. 注意前闭后开区间的写法 , substring(0, 5) 表示包含 0 号下标的字符 , 不包含 5 号下标

看完啦

祝各位期末通通过!!!

相关文章:

【Java】期末复习知识点总结(4)

适合Java期末的复习~ &#xff08;Java期末复习知识点总结分为4篇&#xff0c;这里是最后一篇啦&#xff09;第一篇~https://blog.csdn.net/qq_53869058/article/details/129417537?spm1001.2014.3001.5501第二篇~https://blog.csdn.net/qq_53869058/article/details/1294751…...

IDEA好用插件:MybatisX快速生成接口实体类mapper.xml映射文件

目录 1、在Idea中找到下载插件&#xff0c;Install&#xff0c;重启Idea 2、一个测试java文件&#xff0c;里面有com包 3、在Idea中添加数据库 --------以Oracle数据库为例 4、快速生成entity-service-mapper方法 5、查看生成的代码 6、自动生成&#xff08;增删查改&#xff0…...

【JavaEE】初识线程

一、简述进程认识线程之前我们应该去学习一下“进程" 的概念&#xff0c;我们可以把一个运行起来的程序称之为进程&#xff0c;进程的调度&#xff0c;进程的管理是由我们的操作系统来管理的&#xff0c;创建一个进程&#xff0c;操作系统会为每一个进程创建一个 PCB&…...

智慧水务监控系统-智慧水务信息化平台建设

平台概述柳林智慧水务监控系统&#xff08;智慧水务信息化平台&#xff09;是以物联感知技术、大数据、智能控制、云计算、人工智能、数字孪生、AI算法、虚拟现实技术为核心&#xff0c;以监测仪表、通讯网络、数据库系统、数据中台、模型软件、前台展示、智慧运维等产品体系为…...

【Linux】进程优先级前后台理解

环境&#xff1a;centos7.6&#xff0c;腾讯云服务器Linux文章都放在了专栏&#xff1a;【Linux】欢迎支持订阅&#x1f339;相关文章推荐&#xff1a;【Linux】冯.诺依曼体系结构与操作系统【Linux】进程理解与学习&#xff08;Ⅰ&#xff09;浅谈Linux下的shell--BASH【Linux…...

时序预测 | MATLAB实现基于EMD-GRU时间序列预测(EMD分解结合GRU门控循环单元)

时序预测 | MATLAB实现基于EMD-GRU时间序列预测(EMD分解结合GRU门控循环单元) 目录 时序预测 | MATLAB实现基于EMD-GRU时间序列预测(EMD分解结合GRU门控循环单元)效果一览基本描述模型描述程序设计参考资料效果一览...

python 模拟鼠标,键盘点击

信息爆炸 消息轰炸模拟鼠标和键盘敲击import time from pynput.keyboard import Controller as key_col from pynput.mouse import Button,Controller def keyboard_input(insertword):keyboardkey_col()keyboard.type(insertword)def mouth():mouseController()mouse.press(…...

【CSS】盒子边框 ③ ( 设置表格细线边框 | 合并相邻边框 border-collapse: collapse; )

文章目录一、设置表格细线边框1、表格示例2、合并相邻边框3、完整代码示例一、设置表格细线边框 1、表格示例 给定一个 HTML 结构中的表格 , 默认样式如下 : <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8" />…...

TensorRT量化工具pytorch_quantization代码解析(一)

量化工具箱pytorch_quantization 通过提供一个方便的 PyTorch 库来补充 TensorRT &#xff0c;该库有助于生成可优化的 QAT 模型。该工具包提供了一个 API 来自动或手动为 QAT 或 PTQ 准备模型。 API 的核心是 TensorQuantizer 模块&#xff0c;它可以量化、伪量化或收集张量的…...

【Kubernetes】第二十七篇 - 布署前端项(下)

一&#xff0c;前言 上一篇&#xff0c;介绍了前端项目的部署&#xff1a;项目的创建和 jenkins 配置&#xff1b; 本篇&#xff0c;创建 Deployment、Service&#xff0c;完成前端项目的部署&#xff1b; 二&#xff0c;创建 Deployment 创建 Deployment 配置文件&#xff…...

【MFC】两个ListBox控件数据交互

一.控件ID名称 界面如图下所示&#xff1a; 候选数据列表的ID为&#xff1a; 已选数据列表的ID为&#xff1a; 二.数据添加 可以使用以下代码往框中添加数据&#xff1a; ((CListBox *)GetDlgItem(IDC_LIST_TO_CHO))->AddString("测试数据"); 显示效果如下&#…...

sklearn库学习--SelectKBest 、f_regression

目录 一、SelectKBest 介绍、代码使用 介绍&#xff1a; 代码使用&#xff1a; 二、评分函数 【1】f_regression&#xff1a; &#xff08;1&#xff09;介绍&#xff1a; &#xff08;2&#xff09;F值和相关系数 【2】除了f_regression函数&#xff0c;还有一些适用于…...

蓝桥杯刷题第十三天

第一题&#xff1a;特殊日期问题描述对于一个日期&#xff0c;我们可以计算出年份的各个数位上的数字之和&#xff0c;也可以分别计算月和日的各位数字之和。请问从 1900 年 11 月 1 日至 9999 年 12 月 31 日&#xff0c;总共有多少天&#xff0c;年份的数位数字之和等于月的数…...

CPU 和带宽之间的时空权衡

在 从一道面试题看 TCP 的吞吐极限 一文的开始&#xff0c;我提到在环形域上两个数字比较大小的前提是在同一个半圆内&#xff0c;进而得到滑动窗口最大值被限定在一个环形域的一半。 现在来看更为基本的问题。如果序列号只有 2bit&#xff0c;甚至仅有 1bit&#xff0c;保序传…...

ES+Redis+MySQL,这个高可用架构设计太顶了!

一、背景 会员系统是一种基础系统&#xff0c;跟公司所有业务线的下单主流程密切相关。如果会员系统出故障&#xff0c;会导致用户无法下单&#xff0c;影响范围是全公司所有业务线。所以&#xff0c;会员系统必须保证高性能、高可用&#xff0c;提供稳定、高效的基础服务。 …...

【Maven】Maven的常用命令

目录 一、Maven的常用命令 1、compile 编译命令 2、test 测试命令 3 、clean 清理命令 4、package 打包命令 5、 install 安装命令 6、Maven 指令的生命周期 二、maven 的概念模型 &#x1f49f; 创作不易&#xff0c;不妨点赞&#x1f49a;评论❤️收藏&#x1f499;一…...

python的循环结构

python中有for循环和while循环两种形式。 1. for 循环 可以用for循环来遍历不同类型的对象&#xff0c;如数组、列表、元组、字典、集合或字符串&#xff0c;并对每个元素执行一段代码。 1.1 数组的for循环 用for循环遍历一个数组&#xff0c;并打印出每个元素&#xff1a;…...

五种Python中字典的高级用法

1. 引言 Python中的字典是一种非常有用的数据结构&#xff0c;它允许大家存储键值对。通常来说&#xff0c;字典灵活、高效且易于使用&#xff0c;是Python中最常用的数据结构之一。字典通常被用于统计频率、映射值等任务&#xff0c;但在Python中使用字典也可以达到许多意想不…...

[蓝桥杯单片机]——八到十一届初赛决赛客观题

第八届初赛 一、填空题 采用外部12MHz晶振&#xff0c;经过系统12分频时定时器获得最大定时长度&#xff0c;此时定时器定时脉冲为1MHz&#xff0c;周期为1s&#xff0c;而定时器计时均为16位加法计数器&#xff0c;即计时长度为。 二、 选择题 ①带阻滤波器是指能通过大多数频…...

多线程(初阶)

文章目录一.初始线程(Thread)1.1.线程的概念1.2.线程的优势1.2.1.线程比进程更轻量1.2.2.并发编程1.3.线程和进程的区别二.Thread类方法2.1. java 中创建线程的方法2.1.1. 继承Thread,重写run2.1.2. 实现Ruuable接口2.1.3. 使用匿名内部类,继承Thread2.1.4.使用匿名内部类,实现…...

Unity工业级机械仿真:刚体约束链与运动学反解实战

1. 这不是“玩具模型”&#xff0c;而是一套可投产验证的机械运动逻辑沙盒在Unity里做机械结构仿真&#xff0c;很多人第一反应是“做个动画演示”——齿轮转得漂亮、连杆动得丝滑、液压缸伸缩带点粒子特效&#xff0c;导出个MP4发给客户就算交付。但MGS-Machinery这个项目完全…...

如何在3分钟内为Unity游戏配置实时AI翻译:XUnity.AutoTranslator终极指南

如何在3分钟内为Unity游戏配置实时AI翻译&#xff1a;XUnity.AutoTranslator终极指南 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 你是否曾因为外语游戏的语言障碍而错过精彩剧情&#xff1f;XUnity.A…...

2026 年 AI 工具聚合站:从模型入口到开发基础设施的进化之路

在 2026 年的 AI 开发生态中&#xff0c;开发者正面临一个矛盾的现状&#xff1a;一方面是 GPT-5.5、Claude 4.7、Gemini 3.1 等大模型的能力持续突破&#xff0c;带来了前所未有的技术红利&#xff1b;另一方面&#xff0c;模型碎片化、接口异构化、成本高企等问题&#xff0c…...

告别折腾:esir高大全版OpenWrt软路由安装后,必做的5项安全与性能优化设置

软路由进阶指南&#xff1a;esir高大全版OpenWrt安装后的5项关键优化 对于已经完成esir高大全版OpenWrt软路由基础安装的用户而言&#xff0c;真正的挑战才刚刚开始。一套配置得当的软路由系统不仅能提供稳定的网络环境&#xff0c;更能释放硬件全部潜能。本文将深入探讨五项关…...

3步快速定位:哪个程序偷走了你的Windows快捷键?

3步快速定位&#xff1a;哪个程序偷走了你的Windows快捷键&#xff1f; 【免费下载链接】hotkey-detective A small program for investigating stolen key combinations under Windows 7 and later. 项目地址: https://gitcode.com/gh_mirrors/ho/hotkey-detective 你是…...

SMAPI深度解析:星露谷物语模组生态系统的技术架构与实现原理

SMAPI深度解析&#xff1a;星露谷物语模组生态系统的技术架构与实现原理 【免费下载链接】SMAPI The modding API for Stardew Valley. 项目地址: https://gitcode.com/gh_mirrors/smap/SMAPI SMAPI&#xff08;Stardew Valley Modding API&#xff09;作为星露谷物语模…...

ESP32外部中断防抖实战:用MicroPython搞定按键误触,附完整消抖代码

ESP32外部中断防抖实战&#xff1a;用MicroPython搞定按键误触&#xff0c;附完整消抖代码 当你按下ESP32开发板上的按键时&#xff0c;是否遇到过LED灯莫名其妙闪烁多次&#xff1f;或者智能家居设备偶尔会误触发某个功能&#xff1f;这些"灵异事件"的罪魁祸首&…...

NVIDIA Profile Inspector完整指南:免费解锁显卡隐藏性能的终极工具

NVIDIA Profile Inspector完整指南&#xff1a;免费解锁显卡隐藏性能的终极工具 【免费下载链接】nvidiaProfileInspector 项目地址: https://gitcode.com/gh_mirrors/nv/nvidiaProfileInspector 你是否曾经想过&#xff0c;为什么你的NVIDIA显卡明明性能不错&#xff…...

Unity UGUI三大Layout Group核心原理与工程实践

1. 为什么这三个Layout Group是Unity UI开发的“地基级”组件&#xff0c;而不是可有可无的装饰品&#xff1f;在Unity里做UI&#xff0c;很多人第一反应是拖控件、调锚点、手动改RectTransform——这就像盖房子不打地基&#xff0c;先砌墙再想承重。我带过十几期新人训练营&am…...

3步告别GitHub英文界面:GitHub中文化插件终极解决方案

3步告别GitHub英文界面&#xff1a;GitHub中文化插件终极解决方案 【免费下载链接】github-chinese GitHub 汉化插件&#xff0c;GitHub 中文化界面。 (GitHub Translation To Chinese) 项目地址: https://gitcode.com/gh_mirrors/gi/github-chinese 还在为GitHub的英文…...