本文已参与「新人创作礼」活动,一起开启掘金创作之路
2 java编程规范和常用数据类型
2.1 java中main函数的定义方式为
public static void main(String [] args){}
2.2 常用数据类型及其使用
2.2.1基本数据类型
注意 int 的数据范围是 2e9
对象类型:Byte,Short,Integer,Long,Float,Double,Character,Boolean
2.2.2 引用型数据类型
类(class) 数组 接口
为数组统一赋值的方法为 Arrays.fill(int [] arr, int x) 将arr内的每个元素赋值为x
2.2.3 数组的拷贝
1.clone()
2.2.4 String 字符串
创建 String s; 字符串类型的比较并非使用== 或!=,而是使用 str1.equals(String s2); 字符串类型的无法直接遍历,可通过转换为字符数组输出(str1.toCharArray)或者通过下标输出(charAt)
a3.java增强for循环和比较器Comparator
增强for循环
- 对集合进行遍历。只能获取集合元素,但是不能对集合进行操作。
- 迭代器除了遍历,还可以进行remove集合中元素的动作。
- 局限性:必须有被遍历的目标。
- 在遍历数组的时候,一般用传统for。因为传统for可以定义脚标。
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
public class Main{
static BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
public static void main(String[] args) throws Exception{
String[] s = bf.readLine().split(" ");
ArrayList<Integer> al = new ArrayList<>();
for(String i : s) {
al.add(Integer.parseInt(i));
}
Collections.sort(al,new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o2 - o1;
}
});
for(int i:al) {
System.out.println(i);
}
}
}
定义比较器的时候,也可以将比较器定义在外面
public static class NodeComparator implements Comparator<Node>{
@Override
public int compare(Node o1,Node o2){
return o1.value - o2.value;
}
}
在比较器里面的compare方法,我一般都这么记的,如果返回值为1的话就交换,否则不交换所以,当o1.value - o2.value 的时候,前面大的话,就进行交换,一轮这么交换下来,就是升序排序。否则,即为降序排序。