目录
String类
//字符串创建 总结:
//1.直接赋值
String ss1 = "123";
//2.空参构造
String ss2 = new String();
//3.带参数的构造
String ss3 = new String(ss1);
//创建字符串,把括号里的值赋给他
//4.传递数组
//4.1 字符
char[] c = {'a', 'b', 'c', 'd'};
String s4 = new String(c);
System.out.println(s4);
//他会把字符数组里面的字符拼接成字符串,返回拼接后的结果.
//4.2 字节
byte[] bytes = {97, 98, 99, 100};
String s5 = new String(bytes);
System.out.println(s5);//输出了abcd
//会根据字节数组里面存储的值,作为ASC码,再找到对应的字符,把对应的字符拼接成字符串,再返回
特性
常见方法
System.out.println("输入一个正整数:");
Scanner in = new Scanner(System.in);
int n = in.nextInt();
String str = String.valueOf(n); // 将整数转换为字符串
char[] a = str.toCharArray(); // 将字符串转换为字符数组
chatAt和indexOf 转载charAt使用详细分析和举例-优快云博客
join
在Java中,`join()`是一个用于字符串拼接的方法。它是由`String`类提供的一个实例方法,用于将一个字符串数组或可迭代对象中的元素连接成一个新的字符串。
`join()`方法有两种常见的用法:
1. 使用字符串数组:
String[] array = {"Hello", "World", "!"};
String result = String.join(" ", array);
System.out.println(result);
输出:`Hello World !`
在上述示例中,`join()`方法将字符串数组`array`中的元素用空格连接起来,形成一个新的字符串。
2. 使用可迭代对象:
List<String> list = Arrays.asList("Java", "is", "fun");
String result = String.join("-", list);
System.out.println(result);
```
输出:`Java-is-fun`
在这个示例中,`join()`方法将可迭代对象`list`中的元素用连字符`-`连接起来,生成一个新的字符串。
toString
在Java中,toString()是一个用于将对象转换为字符串表示形式的方法。它是Object类的一个方法,因此所有的Java类都继承了这个方法。
默认情况下,Object类的toString()方法返回一个包含类名和哈希码的字符串,形式为"ClassName@HashCode"。但是,大多数类都会重写这个方法,以便返回更有意义的字符串表示形式。
通过重写toString()方法,开发人员可以自定义对象的字符串表示形式,以便更好地满足程序的需求。这样可以方便地打印对象的信息、调试代码和输出日志信息。
要重写toString()方法,只需在类中添加一个公共的toString()方法,并返回所需的字符串表示形式。通常,toString()方法会返回对象的属性值或其他相关信息的组合。
下面是一个示例,展示了如何在自定义类中重写toString()方法:
public class Person
{
private String name;
private int age;
public Person(String name, int age)
{
this.name = name;
this.age = age;
}
@Override
public String toString()
{
return "Person{name='" + name + "', age=" + age + "}";
}
}
在上述示例中,Person类重写了toString()方法,返回了一个包含姓名和年龄的字符串表示形式。这样,在使用System.out.println()打印Person对象时,将输出自定义的字符串表示形式,而不是默认的类名和哈希码。
Person person = new Person("John", 25);
System.out.println(person);
输出结果为:
Person{name='John', age=25}
通过重写toString()方法,可以方便地将对象转换为字符串,并以更直观的方式显示对象的内容。
StringBuilder
StringBuffer
StringBuffer
是 Java 中用于处理可变字符串的一个类。与 String
类不同,StringBuffer
的内容可以被修改,而不会生成新的对象。这在需要频繁修改字符串内容的场景中非常有用,因为它可以避免因创建大量临时对象而导致的性能问题。
以下是 StringBuffer
类的一些常用方法:
-
构造方法
StringBuffer()
:无参数的构造方法,创建一个初始容量为 16 的字符序列。StringBuffer(int initialCapacity)
:使用指定的初始容量创建StringBuffer
实例。StringBuffer(String str)
:创建一个包含指定字符串内容的StringBuffer
实例。
-
追加和插入
append(Object obj)
:将指定对象转换为字符串,并将其追加到此字符序列的末尾。append(String str)
:将指定字符串追加到此字符序列的末尾。append(char[] str)
:将指定字符数组追加到此字符序列的末尾。append(boolean b)
:将指定布尔值转换为字符串,并将其追加到此字符序列的末尾。append(char c)
:将指定字符追加到此字符序列的末尾。append(int i)
:将指定整数转换为字符串,并将其追加到此字符序列的末尾。append(long lng)
:将指定长整数转换为字符串,并将其追加到此字符序列的末尾。append(float f)
:将指定浮点数转换为字符串,并将其追加到此字符序列的末尾。append(double d)
:将指定双精度浮点数转换为字符串,并将其追加到此字符序列的末尾。insert(int offset, Object obj)
:在指定位置插入指定对象转换成的字符串。insert(int offset, String str)
:在指定位置插入指定字符串。- ...(其他类似方法)
-
删除和替换
delete(int start, int end)
:移除此序列的子字符串中的字符。deleteCharAt(int index)
:移除此序列中指定位置的 char。replace(int start, int end, String str)
:使用指定字符串替换此序列的子字符串。
-
获取子字符串和字符
substring(int start)
:返回一个新的字符串,它是此字符序列的一个子序列。substring(int start, int end)
:返回一个新字符串,它是此字符序列的一个子序列。charAt(int index)
:返回此序列中指定索引处的 char 值。
-
设置字符
setCharAt(int index, char ch)
:将给定索引处的字符设置为 ch。
-
长度和容量
length()
:返回此字符序列的长度。capacity()
:返回当前容量。ensureCapacity(int minimumCapacity)
:确保容量至少等于指定的最小值。
-
其他方法
reverse()
:将此字符序列用其反转形式替换。toString()
:返回此字符序列的字符串表示形式。
请注意,尽管 StringBuffer
是线程安全的,但在单线程环境中,使用 StringBuilder
通常会有更好的性能,因为 StringBuilder
不包含同步代码。然而,在需要线程安全性的场景中,应使用 StringBuffer
。
Arrays类
Arrays.sort()
是Java中对数组进行排序的一种非常有效且方便的方法。它基于快速排序的算法思想,时间复杂度为O(n*logn)。以下是Arrays.sort()
的一些常见用法:
- 基本用法:升序排序
对于基本数据类型的数组,可以直接使用Arrays.sort()
进行升序排序。
java复制代码
int[] nums = {4, 6, 8, 0, 5, 9, 7, 2, 1, 3}; | |
Arrays.sort(nums); |
- 部分排序
使用sort(T[] a, int fromIndex, int toIndex)
可以对数组的指定范围进行升序排序。
java复制代码
int[] nums = {4, 6, 8, 0, 5, 9, 7, 2, 1, 3}; | |
Arrays.sort(nums, 0, 3); // 只对前三个元素进行排序 |
- 降序排序
默认情况下,Arrays.sort()
执行的是升序排序。如果需要降序排序,可以通过传入一个自定义的Comparator
来实现。
java复制代码
Integer[] nums = {4, 6, 8, 0, 5, 9, 7, 2, 1, 3}; | |
Arrays.sort(nums, new Comparator<Integer>() { | |
@Override | |
public int compare(Integer o1, Integer o2) { | |
return o2 - o1; // 降序排序 | |
} | |
}); |
或者使用Java 8的lambda表达式简化代码:
java复制代码
Integer[] nums = {4, 6, 8, 0, 5, 9, 7, 2, 1, 3}; | |
Arrays.sort(nums, (o1, o2) -> o2 - o1); // 降序排序 |
- 对对象数组排序
对于对象数组,需要确保对象实现了Comparable
接口,并且重写了compareTo
方法。然后可以直接使用Arrays.sort()
进行排序。如果需要自定义排序规则,同样可以传入一个Comparator
。
需要注意的是,Arrays.sort()
方法会直接修改原数组,而不是返回一个新的排序后的数组。因此,不需要额外定义一个数组来接收排序结果。同时,由于Arrays.sort()
是在原数组的基础上进行排序,所以不需要返回值,其返回类型为void
。
集合
集合介绍
Collection接口
List
集合排序
Set
Map
import java.util.HashMap;
import java.util.Map;
public class HashMapExample
{
public static void main(String[] args)
{
// 创建一个HashMap实例
Map<String, Integer> map = new HashMap<>();
// 向HashMap中添加键值对
map.put("One", 1);
map.put("Two", 2);
map.put("Three", 3);
map.put("Four", 4);
// 从HashMap中检索键对应的值
Integer valueOne = map.get("One");
System.out.println("Value for 'One': " + valueOne);
// 检查HashMap中是否包含某个键
boolean containsKey = map.containsKey("Three");
System.out.println("Does the map contain 'Three'? " + containsKey);
// 遍历HashMap
for (Map.Entry<String, Integer> entry : map.entrySet())
{
String key = entry.getKey();
Integer value = entry.getValue();
System.out.println("Key: " + key + ", Value: " + value);
}
// 移除HashMap中的键值对
map.remove("Two");
System.out.println("Map after removing 'Two': " + map);
// 检查HashMap是否为空
boolean isEmpty = map.isEmpty();
System.out.println("Is the map empty? " + isEmpty);
}
}