(一)Java常用命令总结,持续更新中!!!

蓝桥杯JAVA组 推荐输入输出及示例

// 基础输入
import java.util.*;

public class Main{
    public static void main(String[] args){
    }
}

// 非静态方法调用
new Main.Solution();//static函数里面调用非static函数 类.函数
// 更快的输入方式 BufferedReader
// 更快的输出方式 PrintWriter+BufferWriter 并且很方便,使用方法和System.out一致
// 注意扔异常
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;

public class Main {
	static boolean[] v;
	static int[] ns;
	static int[] bs;
	static int N;
	static PrintWriter out;

	public static void main(String[] args) throws IOException {
		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
		out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.out)));
		N = Integer.parseInt(bf.readLine());
		bs = new int[N + 1];
		v = new boolean[N + 1];
		dfs(1);
		out.flush();
	}

	private static void dfs(int x) {
		if (x > N) {
			for (int i = 1; i <= N; i++) {
				out.printf("%5d", bs[i]);
			}
			out.println();
			return;
		}
		for (int i = 1; i <= N; i++) {
			if (v[i])
				continue;
			v[i] = true;
			bs[x] = i;
			dfs(x + 1);
			v[i] = false;
		}
	}
}

输入

Scanner sc = new Scanner(System.in);
sc.hasNext();
sc.next();
sc.nextInt();
sc.nextLine();

// 快速输入
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
bf.readLine();
bf.read();// 读取单个字符 返回int

输出

System.out.println();

StringBuilder sb = new StringBuilder();
StringJoiner sj = new StringJoiner(" ");
// 快速输出
PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.out)));
out.print(a);
out.println();
out.printf();
out.flush();

基本量范围

int -2的31次方(-2147483648 2*10^9),2的31次方减一(2147483647)

15! = 1.3*10^12

Scanner

scan.hasNext();
...hasNextInt();
...hasNextLine();
...next();
...nextInt;
...nextLine();

保留小数位数的方法

double res = 0d;
new DecimalFormat("0.00").format(res);

System.out.printf("%.3f",res);

输出控制符和对应的数据类型
在这里插入图片描述

Random

Random r=new Random();
r.nextInt(a);//[0,a)

数组

new int[0][]//空数组
int[] arr4 = arr.clone();// 数组的复制

System

System.arraycopy(original, i, ans[i / n], 0, n);// 数组复制
public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
代码解释:
  Object src : 原数组
   int srcPos : 从元数据的起始位置开始
  Object dest : 目标数组
  int destPos : 目标数组的开始起始位置
  int length : 要copy的数组的长度

Arrays

Arrays.sort();// 排序
Arrays.copyOfRange(intersection, 0, index);// 返回复制的数组
Arrays.asList(nums);// 数组转List
System.arraycopy(original, i, ans[i / n], 0, n);// 数组复制 原数组 元数据的起始位置 目标数组 目标数组的开始起始位置 要copy的数组的长度

LinkedList

list.offerLast(key);// 加入到最后
remove(int index);// 移除此列表中指定位置处的元素。
remove(Objec o);// 从此列表中移除首次出现的指定元素(如果存在)。

HashMap

Map<Character,Character> map=new HashMap(){
    {
        put(')','(');
        put(']','[');
        put('}','{');
    }
};//初始化实例
map.get(key);
map.put(key,num);
map.containsKey(key);

map.getOrDefault(key,0);
map.remove(key);

for(Map.Entry<String,Object> arg:map.entrySet()){
    arg.getKey() + arg.getValue();
}// 获取键值对
map.keyset();//返回key的String[]集合 常用于循环
map.values();// 返回map的values集合

Object[] a = map.keySet().toArray();
Arrays.sort(a);

HashSet

set.add();
set.remove();
set.size();
set.clear();
set.toArrays(); // hashset转数组

String

s.trim();//去除前后空格
s.substring(start, start + maxLen)//左闭右开
s.indexOf(ss);//ss可以是整数也可以是字符串 返回指定字符串第一次出现的索引 没有则返回-1也可以从fromIndex开始位置
s.indexOf(ss,fromIndex);
String[] ss = s.split(" ");//字符串按照空格分开
String.valueOf();//其他转成String
String.contains("x");//是否包含
s1.compareTo(s2);//比较两个字符大小,可用于字典序
int a = Integer.parseInt("-1");//string转int

String[] ss = s.split(" ");// 字符串按照空格分开
s.split("[- :]");// 使用- :三个字符进行分割工作
String.valueOf();// 其他转成String
String.contains("x");// 是否包含
String.format("%.2f",x);// 保留2位小数

s.toUpperCase();// 全部转大写
s.toLowerCase();// 全部转小写
s.replace(" ","");// 替换

StringBuilder

StringBuilder sb=new StringBuilder();
sb.append('(');
sb.deleteCharAt(cur.length()-1);
sb.delete(l,r);
sb.insert(pos,string);
sb.toString();//转换成String
new StringBuilder(s).reverse().toString();//字符串反转

StringJoiner

算法题好用并且快

// 每个元素通过 "." 分割,并且用 "[" 和 "]" 包住前后 		
StringJoiner joiner2 = new StringJoiner(".", "[", "]");
// 元素用" "分割
StringJoiner joiner = new StringJoiner(" ");
// 将joner和joner2的元素合并,并且每个元素通过 "." 分割,并且用 "[" 和 "]" 包住前后 
joiner2.merge(joiner);
// 新增代码 类似StringBuilder
joiner.add(node.val + "");
System.err.println(joiner);

ArrayList

List<List<Integer>> ans = new ArrayList<List<Integer>>();// 两个List的初始化方式
ans.add(new ArrayList<Integer>(t));//List<Integer> t = new ArrayList<Integer>();
List<Integer> list = new ArrayList();
list.add(i,o) // 向list i 位置插入
list.toArray(new int[list.size()][]);// list转数组
Collections.swap(output, first, i);// 把List两个位置的元素调换
Collections.sort(l1,(a,b)->a.compareTo(b));
Collections.sort(l2,(a,b)->a.compareTo(b));

Deque 栈 双端队列

Deque<Integer> d =new LinkedList();
d.isEmpty();

// 队列
d.add(e);
d.remove();
    
d.offer(e);
d.poll();
    
d.element();
d.peek();

// 栈
d.peek();
d.pop();
d.push();

Queue 队列

Queue<String> q = new LinkedList();
q.add(); // 插入队列尾部,队列满抛异常
q.remove();// 移除头返回头,队列空抛异常
q.element();// 返回头,队列空抛异常

q.offer();// 插入队列尾部,队列满返回false
q.poll();// 移除头返回头,队列空返回null
q.peek();// 返回头,队列空返回null

q.size();// 返回元素个数
q.isEmpty();// 队列是否为空

Priority Queue 优先队列

//优先队列 弹出最左边数
PriorityQueue<ListNode> queue = new PriorityQueue<>(new Comparator<ListNode>() {//比较器 升序
    @Override
    public int compare(ListNode o1, ListNode o2) {
            return o1.val-o2.val;
    }
});

排序

Arrays.Sort();// Integer[] int不支持 但支持char int[][]
Collections.sort();// list
 
Arrays.sort(a, 0, n);// 排序int[]

Arrays.sort(b,Collections.reverseOrder());// 降序
Collections.sort(l, Collections.reverseOrder());

位运算

(~x) = -(x + 1)// 取反	所有位置0变1,1变0
a^a = 0; // 相同数 异或 =0 同0异1
0^a = a;
n & (n - 1); // 最低位1改为0
n & (-n); // 获取最低位1
1 << n; // 2^n
if (rev < Integer.MIN_VALUE / 10 || rev > Integer.MAX_VALUE / 10) // 判断是否超界
a^(n-1)%n = 1;// 检验两个数是否互质
t&1 = 1;// 检验第一位是不是1

简单算法实现

// 欧几里得算法 算最大公约数
public static int gcd(int a, int b) {
      return a % b == 0 ? b : gcd(b, a % b);
}

包装类

Integer.valueOf(s);// String转Integer 
Integer.toString(n);// Integer转String

Double.compare(a,b);// 比较double大小

Iterator 迭代器

用于迭代 ArrayListHashSet 等集合。
Iterator<String> it = sites.iterator();
it.next();
it.hasNext() ;
it.remove()

Math

Math.round()// 四舍五入
Math.cos(Math.PI);// 180度的余弦值
Math.random(int l,int r);
Math.log(a);// ln(a)

Math.ceil();// 向上取整
Math.floor();// 向下取整
Math.round();// 四舍五入
Math.round(11.5)=12;Math.round(-11.5)=-11;
// 注意java的除法默认去除小数部分

Comparator && Comparable 比较器

public interface Comparable<T> {
        public int compareTo(T o);
}



public interface Comparator<T> {
        public int compare(T lhs, T rhs);
}



class Students implements Comparable<Students>{
      int age;
      String name;
      Students(int age,String name){
     	   this.age=age; this.name=name;
      }
      @Override
      //重写compareTo方法按Students的年龄排序
      public int compareTo(Students o) {
            if (this.age-o.age>0)
             	 return 1;
            if (this.age-o.age<0)
             	 return -1;
            else
            	return 0;
      }

      @Override
      public String toString() {
            return "Students{" +
                "age=" + age +
                ", name='" + name + '\'' +
                '}';
      }
}

public class TsetCompareable {
      public static void main(String args[]){
            List<Students> list =new ArrayList();
            list.add(new Students(10,"zhangsan"));
            list.add(new Students(18,"lisi"));
            list.add(new Students(9,"wangwu"));
            Collections.sort(list);
            System.out.println(list);
      }
}





class Student {
      int age;
      String name;
      Student(int age,String name){
      	  this.age=age; this.name=name;
      }
      @Override
      public String toString() {
        	return "Student{" +
            	"age=" + age +
            	", name='" + name + '\'' +
            	'}';
      }
}


//学生比较器
class StudentComparator implements Comparator<Student>{
	//重写compare方法
      @Override
      public int compare(Student student, Student student1) {
            if (student.age-student1.age>0)
              return 1;
            if (student.age-student1.age<0)
              return -1;
            else
              return 0;
      }
}


public class  ComparatorTest{
      public static void main(String args[]){
        List<Student> list =new ArrayList();
        list.add(new Student(10,"zhangsan"));
        list.add(new Student(18,"lisi"));
        list.add(new Student(9,"wangwu"));
        Collections.sort(list,new StudentComparator());
        System.out.println(list);
      }
}

BigInteger 超大数

b.toString().equals("0") // 比较
b.mod(b) // 取余
b.add(b) // 相加
b = new BigInteger("1"); // 初始化

运算符优先级

优先级符号
1[] ()
2++ – ~ ! (数据类型)
3* / %
4+ -
5<< >> >>>
6> <= >=
7== !=
8&
9^
10|

Data

// 毫秒转时间
long mills = scan.nextLong();
Date date = new Date(mills);
SimpleDateFormat ft = new SimpleDateFormat ("HH:mm:ss");
System.out.println(ft.format(date));
scan.close();
Date 有时区
LocalDateTime 自带系统时区

CountDownLatch

//countDownLatch 一个线程(或者多个), 等待另外N个线程完成某个事情之后才能执行。
CountDownLatch(int count):count为计数器的初始值(一般需要多少个线程执行,count就设为几)。
countDown(): 每调用一次计数器值-1,直到count被减为0,代表所有线程全部执行完毕。
getCount():获取当前计数器的值。
await(): 等待计数器变为0,即等待所有异步线程执行完毕。
boolean await(long timeout, TimeUnit unit): 此方法与await()区别:
此方法至多会等待指定的时间,超时后会自动唤醒,若 timeout 小于等于零,则不会等待
boolean 类型返回值:若计数器变为零了,则返回 true;若指定的等待时间过去了,则返回 false

Time 定时器

public static void main(String[] args) {
    //testTimer1();
    //testTimer2();
    testTimer3();
    //testTimer4();
}
	
//方法一:设定指定任务task在指定时间time执行 schedule(TimerTask task, Date time)
public static void testTimer1() {
    Timer timer = new Timer();
    timer.schedule(new TimerTask() {
        public void run() {
            System.out.println("-------任务执行--------");
        }
    }, 3500);
    // 设定指定的时间time为3500毫秒
}
	 
/**
	 * 方法二:设定指定任务task在指定延迟delay后间隔指定时间peroid执行
	 * schedule(TimerTask task, long delay, long period)
	 * */
public static void testTimer2() {
    Timer timer = new Timer();
    timer.schedule(new TimerTask() {
        public void run() {
            System.out.println("-------任务执行--------");
        }
    }, 2000, 3500);
}
	  
	  
/**
	 * 方法三:设定指定任务task在指定延迟delay后进行固定频率peroid的执行。
	 * scheduleAtFixedRate(TimerTask task, long delay, long period)
	 * */
public static void testTimer3() {
    Timer timer = new Timer();
    timer.scheduleAtFixedRate(new TimerTask() {
        public void run() {
            System.out.println("-------任务执行--------");
        }
    }, 1000, 2000);
}
	  
/**
	 * 方法四:安排指定的任务task在指定的时间firstTime开始进行重复的固定速率period执行.
	 * Timer.scheduleAtFixedRate(TimerTask task,Date firstTime,long period)
	 * */
public static void testTimer4() {
    Calendar calendar = Calendar.getInstance();
    calendar.set(Calendar.HOUR_OF_DAY, 12); // 控制小时
    calendar.set(Calendar.MINUTE, 0);    // 控制分钟
    calendar.set(Calendar.SECOND, 0);    // 控制秒

    Date time = calendar.getTime();    //获取当前系统时间

    Timer timer = new Timer();
    timer.scheduleAtFixedRate(new TimerTask() {
        public void run() {
            System.out.println("-------任务执行--------");
        }
    }, time, 1000 * 60 * 60 * 24);// 这里设定将延时每天固定执行
}

// 程序暂停
Thread.sleep(time);

ai74z-q4lnw.png
感谢大家的观看!!!创作不易,如果觉得我写的好的话麻烦点点赞👍支持一下,谢谢!!!

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值