Static 关键字、 final关键字、String类、StringBuffer类的用法
时间: 2024-01-10 18:02:56 浏览: 27
好的,我可以回答关于Static 关键字、 final关键字、String类、StringBuffer类的用法。
Static 关键字:表示静态的、不变的,不属于对象而是属于类。可以用来修饰变量、方法和代码块。静态变量存储在静态区,被所有实例对象所共享;静态方法可以被类名直接调用,而不需要实例化对象;静态代码块只会在类被加载的时候执行一次。
final 关键字:表示最终、不可变的,可以用来修饰变量、方法和类。final变量的值不能被修改,final方法不能被重写,final类不能被继承。
String类:String是Java中常用的字符串类,用来表示一串字符。String对象是不可修改的,也就是说,一旦创建了String对象,其中的内容就不能再被修改了,因此可以被用作常量。String类提供了很多方法,包括字符串的截取、替换、查找、转换等。
StringBuffer类:StringBuffer是Java中用来表示可变字符串的类,它的对象是可以修改的。在字符串需要频繁修改的场景下,使用StringBuffer可以避免频繁创建新的String对象带来的内存开销。StringBuffer类提供了很多方法,包括字符串的追加、插入、截取、替换等。
相关问题
请书写一个java http和https get post 调用的工具类
以下是一个简单的Java HTTP/HTTPS GET和POST调用的工具类:
```java
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Map;
import javax.net.ssl.HttpsURLConnection;
public class HttpUtils {
private final static String USER_AGENT = "Mozilla/5.0";
// HTTP GET请求
public static String sendGet(String url) throws Exception {
URL obj = new URL(url);
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
// 默认值我GET
con.setRequestMethod("GET");
// 添加请求头
con.setRequestProperty("User-Agent", USER_AGENT);
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
// 打印响应结果
System.out.println(response.toString());
return response.toString();
}
// HTTP POST请求
public static String sendPost(String url, Map<String, String> params) throws Exception {
URL obj = new URL(url);
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
// 添加请求头
con.setRequestMethod("POST");
con.setRequestProperty("User-Agent", USER_AGENT);
con.setRequestProperty("Accept-Language", "en-US,en;q=0.5");
// 发送POST请求必须设置如下两行
con.setDoOutput(true);
con.setDoInput(true);
// 构建请求参数
StringBuilder sb = new StringBuilder();
for (String key : params.keySet()) {
sb.append(key).append("=").append(params.get(key)).append("&");
}
String urlParameters = sb.toString();
urlParameters = urlParameters.substring(0, urlParameters.length() - 1);
// 发送请求参数
DataOutputStream wr = new DataOutputStream(con.getOutputStream());
wr.writeBytes(urlParameters);
wr.flush();
wr.close();
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
// 打印响应结果
System.out.println(response.toString());
return response.toString();
}
// HTTPS GET请求
public static String sendSecureGet(String url) throws Exception {
URL obj = new URL(url);
HttpsURLConnection con = (HttpsURLConnection) obj.openConnection();
// 默认值我GET
con.setRequestMethod("GET");
// 添加请求头
con.setRequestProperty("User-Agent", USER_AGENT);
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
// 打印响应结果
System.out.println(response.toString());
return response.toString();
}
// HTTPS POST请求
public static String sendSecurePost(String url, Map<String, String> params) throws Exception {
URL obj = new URL(url);
HttpsURLConnection con = (HttpsURLConnection) obj.openConnection();
// 添加请求头
con.setRequestMethod("POST");
con.setRequestProperty("User-Agent", USER_AGENT);
con.setRequestProperty("Accept-Language", "en-US,en;q=0.5");
// 发送POST请求必须设置如下两行
con.setDoOutput(true);
con.setDoInput(true);
// 构建请求参数
StringBuilder sb = new StringBuilder();
for (String key : params.keySet()) {
sb.append(key).append("=").append(params.get(key)).append("&");
}
String urlParameters = sb.toString();
urlParameters = urlParameters.substring(0, urlParameters.length() - 1);
// 发送请求参数
DataOutputStream wr = new DataOutputStream(con.getOutputStream());
wr.writeBytes(urlParameters);
wr.flush();
wr.close();
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
// 打印响应结果
System.out.println(response.toString());
return response.toString();
}
}
```
你可以使用该类中的方法进行HTTP和HTTPS请求。注意,对于HTTPS请求,需要使用`HttpsURLConnection`类。
private static final String toHex(byte hash[]) { if (hash == null) { return null; } StringBuffer buf = new StringBuffer(hash.length * 2); int i; for (i = 0; i < hash.length; i++) { if ((hash[i] & 0xff) < 0x10) { buf.append("0"); } buf.append(Long.toString(hash[i] & 0xff, 16)); } return buf.toString(); }
您好!这个函数是用来将字节数组转换为十六进制字符串的。它接收一个字节数组作为参数,并返回一个对应的十六进制字符串。
函数首先检查传入的字节数组是否为null,如果是,就返回null。
然后,它创建了一个StringBuffer对象,用于构建最终的十六进制字符串。为了避免字符串频繁拼接的性能开销,StringBuffer比普通的String更适合这个任务。
接下来,函数使用一个循环遍历字节数组中的每个字节。对于每个字节,它通过按位与运算(hash[i] & 0xff)将其转换为一个无符号整数,然后使用Long.toString方法将其转换为十六进制字符串。
如果转换后的十六进制字符串长度小于2(即小于0x10),函数会在字符串前面添加一个0,以保证每个字节对应的十六进制字符串都是两位数。
最后,函数返回构建好的十六进制字符串。
希望能解答您的问题!如果还有其他问题,请随时提问。