语言:java
数组
数组中的元素在内存中是连续存储的,且每个元素占用相同大小的内存
有索引: 0到 nums.length-1
新建:
int arr[] = new int[10]; //需补充值
int arr1[] = new int[]{1, 3, 5, 7, 9};
int[] arr2 = {2, 4, 6, 8, 10}; //
遍历:
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
for (int num: arr) {
System.out.println(num);
}
- 数组可以方便的根据索引读取数值。但是插入和删除的话,需要移动很多值。链表的插入和删除很方便,读取比较麻烦。
- 二维数组 :int[][] res = new int[intervals.length][2]; int[][] res = {{a,b},{c,d}};
- Arrays的copyOf()方法传回的数组是新的数组对象,改变传回数组中的元素值,不会影响原来的数组。int[] arr2 = Arrays.copyOf(arr1, 5); 第二个自变量为新的数组长度。
Arrays.sort(); //升序排列
//可重写为降序
Arrays.sort(T[], new Comparator<T>() {
public int compare(T a, T b){
return f(b) - f(a);
}
});
字符串
字符串是不可变的
针对 Java 中出现的此问题:
- 如果希望字符串是可变的,可以使用 toCharArray 将其转换为字符数组。
- 如果必须连接字符串,可以使用一些其他的数据结构,如 StringBuilder,StringBuffer 。
ref:https://leetcode-cn.com/leetbook/read/array-and-string/c9lnm/
StringBuilder sb = new StringBuilder();
sb.append(s.charAt(i));
sb.toString(); //转换成String
StringBuffer result=new StringBuffer();
result.append();
result.toString();
Java 字符串常用函数
-连接字符串 用+号即可,可用 concat()
-长度 str.length()
-判空 str.isEmpty()
-字符串比较 str.equals(str2)
-比较,忽略大小写 str.equalsIgnorecase(str2);
-自然顺序比较 str1.compareTo(str2);
相等时返回0
长度不等时,返回长度差值 str1-str2
长度一样时,返回ASCII码差值
-根据索引获取字符串中字符
返回值类型 方法名 参数
char charAt (int index)
-根据字符获取在字符串中的位置
int indexof (int ch)
int indexof (int ch, int fromIndex)
-拼接字符串
String concat (String string1)
-判断
是否包含这个字符串 contains(CharSequence s)
是否以这个前缀开头 startsWith(String prefix)
是否以这个后缀结尾 endsWith(String suffix)
-替换
String string = "hello";
String string2 = string.replace("ll","pp"); // 有两个ll的话,也都会被替换掉
System.out.println(string2); //输出结果:heppo
-split
String string = "a,b,c,d";
String[] array = string.split(",");
for(String str : array){
System.out.print(str + " "); //输出结果为:a b c d
}
-字串
str.substring(5); //index 保留[5,end]
str.substring(5,8); // [5,8)
-转换大小写
str.toUpperCase();
str.toLowerCase();
-删去头尾空格 str.trim();
-转换
字符数组转字符串 char[] array = {a,c,d,w,f}; String arr = new String(array);
字符串转字符数组 char[] charArray = str.toCharArray();
int、double转字符串 String string = String.valueOf(num);
————————————————
版权声明:本文为CSDN博主「沙漠皇帝本拉登」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/liurongsheng123/article/details/79078997
位运算
在Java语言中,提供了7种位运算符,分别是按位与(&)、按位或(|)、按位异或(^)、取反(~)、左移(<<)、带符号右移(>>)和无符号右移(>>>)。
这些运算符当中,仅有取反是单目运算符,其他运算符均为双目运算符。
位运算符是对long、int、short、byte和char这5种类型的数据进行运算的,我们不能对double、float和boolean进行位运算操作。
方法是:转换为二进制数,然后逐个位比较得到结果。
1、按位与(&):全1为1,有0为0
& 1,即用于判断最后一位二进制是否为 1。来辨别奇偶。
2、按位或(|):有1为1, 全0为0
3、按位异或(^):相同为0,不同为1
任何两个相同的数字进行异或操作,所得到的结果都必然为0
4、取反(~)
5、左移(<<)
左移运算有乘以2的N次方的效果。一个数向左移动1位,就相当于乘以2的1次方。位移操作在实际运算时远远快于乘法操作。
注意:当位移的位数很多时,导致最左边的符号位发生变化,就不再具有乘以2的N次方的效果了。
6、带符号右移(>>)
7、无符号右移(>>>)