封装一个类似的StringBuilder类

本文介绍如何封装一个类似于Java的StringBuilder类,包括append、length、charAt、indexOf和insert等方法。讲解了StringBuilder内部使用char数组存储数据,通过count变量跟踪实际长度,并讨论了各方法的实现细节。虽然insert方法使用了多个for循环,但作者承认存在优化空间,欢迎大家提供改进意见。
摘要由CSDN通过智能技术生成

主要封装的几个常用的方法:

  • append:追加
  • length:获取长度
  • charAt:获取字符
  • indexOf:获取指定字符串第一个出现的索引位置
  • insert:插入

 StringBuilder底层是以char类型数组来实现的,所有要有一个char类型的数组来进行存储数据

用count这个变量来记录实际的长度。

默认的初始容量为16字符,也可以指定初始容量

    private char[] value; // 存储数据
    private final int CAPACITY = 16; // 默认的初始化的容量长度
    private int count; // 记录实际容量长度
    // 构造方法
    // 初始化容量为16
    public MyStringBuilder() {
        value = new char[CAPACITY];
    }

    // 指定初始化容量
    public MyStringBuilder(int newCapacity) {
        value = new char[newCapacity];
    }
    // 初始化指定的字符串
    public MyStringBuilder(String str){
        value = new char[str.length() + CAPACITY];
        copyArray(str, 0);
        count = str.length();
    }
    // 把字符串添加到数组里
    private void copyArray(String str, int dstBegin) {
        str.getChars(
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java实现: ```java import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.util.Map; public class HttpRequest { public static String sendGet(String url, Map<String, String> params) throws Exception { StringBuilder result = new StringBuilder(); StringBuilder urlBuilder = new StringBuilder(url); if (params != null && !params.isEmpty()) { urlBuilder.append("?"); for (Map.Entry<String, String> entry : params.entrySet()) { urlBuilder.append(entry.getKey()) .append("=") .append(entry.getValue()) .append("&"); } } URL urlObj = new URL(urlBuilder.toString()); HttpURLConnection conn = (HttpURLConnection) urlObj.openConnection(); conn.setRequestMethod("GET"); conn.setConnectTimeout(5000); conn.setReadTimeout(5000); BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8")); String line; while ((line = in.readLine()) != null) { result.append(line); } in.close(); return result.toString(); } } ``` Python实现: ```python import urllib.parse import urllib.request class HttpRequest: @staticmethod def send_get(url, params=None): if params: url += "?" + urllib.parse.urlencode(params) with urllib.request.urlopen(url) as response: return response.read().decode("utf-8") ``` 使用示例: ```java import java.util.HashMap; import java.util.Map; public class Main { public static void main(String[] args) throws Exception { // Java发送GET请求 String url = "https://www.baidu.com"; Map<String, String> params = new HashMap<>(); params.put("wd", "java"); String result = HttpRequest.sendGet(url, params); System.out.println(result); // Python发送GET请求 url = "https://www.baidu.com" params = {"wd": "python"} result = HttpRequest.send_get(url, params) print(result) } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值