Java基础知识补充(一)
Java基础知识(一)
主要记录一些平时做题时遇到的忘记的一些Java基础知识。
二维数组的行列获取
二维数组int array[][] = new int[3][3];
行长度:array.length //rows
列长度:array[i].length //columns
StringBuilder和StringBuffer的区别
当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。
和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。
StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。
由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。
StringBuffer常用方法(StringBuilder同样)
特殊方法
1 | public StringBuffer append(String s) | 将指定的字符串追加到此字符序列。
2 | public StringBuffer reverse() | 将此字符序列用其反转形式取代。
3 | public delete(int start, int end) | 移除此序列的子字符串中的字符。
4 | public insert(int offset, int i) | 将 int 参数的字符串表示形式插入此序列中。
5 | replace(int start, int end, String str) | 使用给定 String 中的字符替换此序列的子字符串中的字符。
与String类相似的方法
1 | int capacity() | 返回当前容量。
2 | char charAt(int index) | 返回此序列中指定索引处的 char 值。
3 | void ensureCapacity(int minimumCapacity) | 确保容量至少等于指定的最小值。
4 | void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) | 将字符从此序列复制到目标字符数组 dst。
5 | int indexOf(String str) | 返回第一次出现的指定子字符串在该字符串中的索引。
6 | int indexOf(String str, int fromIndex) | 从指定的索引处开始,返回第一次出现的指定子字符串在该字符串中的索引。
7 | int lastIndexOf(String str) | 返回最右边出现的指定子字符串在此字符串中的索引。
8 | int lastIndexOf(String str, int fromIndex) | 返回最后一次出现的指定子字符串在此字符串中的索引。
9 | int length() | 返回长度(字符数)。
10 | void setCharAt(int index, char ch) | 将给定索引处的字符设置为 ch。
11 | void setLength(int newLength) | 设置字符序列的长度。
12 | CharSequence subSequence(int start, int end) | 返回一个新的字符序列,该字符序列是此序列的子序列。
13 | String substring(int start) | 返回一个新的 String,它包含此字符序列当前所包含的字符子序列。
14 | String substring(int start, int end) | 返回一个新的 String,它包含此序列当前所包含的字符子序列。
15 | String toString() | 返回此序列中数据的字符串表示形式。
https://www.cnblogs.com/springcsc/archive/2009/12/03/1616330.html‘>更详细的说明
字符串与字符
要记住比较的时候是比较字符串还是字符,字符串的话要用equals方法,而比较字符的时候要用单引号!
在Java中只获取一个数组的一部分
从java.util.Arrays类使用copyOfRange方法:
int[] newArray = java.util.Arrays.copyOfRange(oldArray, startIndex, endIndex);
int[] arr = {10, 20, 30, 40, 50};
Arrays.copyOfRange(arr, 0, 2); // returns {10, 20}
Arrays.copyOfRange(arr, 1, 4); // returns {20, 30, 40}
Arrays.copyOfRange(arr, 2, arr.length); // returns {30, 40, 50} (length = 5)
容器中包含容器
在容器中包含容器,修改内部容器时也会影响被包含的容器,比如
ArrayList<Integer> list2;
ArrayList<ArrayList<Integer>> list1.add(list2);
如果这时修改了list2,那么list1中的list2也会受影响,避免这种情况的方法是使用clone()方法
ArrayList<ArrayList<Integer>> list1.add((ArrayList<Integer>)list2.clone());
注意clone方法要转换数据类型。
char与string的转换
String到char(数组)
在Java中将String转换为char是非常简单的。
1. 使用String.charAt(index)(返回值为char)可以得到String中某一指定位置的char。
2. 使用String.toCharArray()(返回值为char[])可以得到将包含整个String的char数组。这样我们就能够使用从0开始的位置索引来访问string中的任意位置的元素。
char转换为String
String s = String.valueOf(‘c’); //效率最高的方法
String s = String.valueOf(new char[]{‘c’}); //将一个char数组转换成String
String s = Character.toString(‘c’);
// Character.toString(char)方法实际上直接返回String.valueOf(char)String s = new Character(‘c’).toString();
String s = “” + ‘c’;
// 虽然这个方法很简单,但这是效率最低的方法
// Java中的String Object的值实际上是不可变的,是一个final的变量。
// 所以我们每次对String做出任何改变,都是初始化了一个全新的String Object并将原来的变量指向了这个新String。
// 而Java对使用+运算符处理String相加进行了方法重载。
// 字符串直接相加连接实际上调用了如下方法:
// new StringBuilder().append(“”).append(‘c’).toString();String s = new String(new char[]{‘c’});
JAVA 各种数值类型最大值和最小值
fmax = Float.MAX_VALUE;
fmin = Float.MIN_VALUE;
dmax = Double.MAX_VALUE;
dmin = Double.MIN_VALUE;
bmax = Byte.MAX_VALUE;
bmin = Byte.MIN_VALUE;
cmax = Character.MAX_VALUE;
cmin = Character.MIN_VALUE;
shmax = Short.MAX_VALUE;
shmin = Short.MIN_VALUE;
imax = Integer.MAX_VALUE;
imin = Integer.MIN_VALUE;
lmax = Long.MAX_VALUE;
lmin = Long.MIN_VALUE;
String的compareTo方法
compareTo方法按照字典序来对两个字符串进行排序
a.compareTo(b)
如果a大于b则返回1,等于返回0,小于返回-1
StringBuilder和StringBuffer的添加元素
添加元素的方法为append不是add,可以添加int等类型的值,自动转换为string。
上一篇: 洛谷——P1059 明明的随机数
下一篇: 洛谷P1059 明明的随机数