1.Java基础
(1)文件流
文件fuz
(2)缓冲流、缓冲区
(3)线程
进程:执行中的程序
--》java程序运行的时候默认产生一个进程
--》这个进程会有一个主线程
--》代码都在主线程中执行
线程的生命周期:
新建、可运行、终止
线程对象必须为可运行状态才可运行,其他状态无法运行
线程执行方式:
串行--》多个线程连接成串,然后按照顺序进行
并行--》多个线程是独立的,谁抢到了CPU的执行权,谁就能执行
线程休眠
线程池:
即线程对象的容器,可以根据需要,在启动时,创建一个或多个线程对象
--》创建固定数量的线程对象
--》根据需求动态创建线程
--》单一线程
--》定时调度线程
2.算法
(1)所有数字用字符替换
--》把字符串转换成字符数组
char【】 arr = s.tostring();
--》把奇数下标的数字转换成字符
for(int i=1;i<arr.length;i+=2){
arr【i】=(char)(arr【i-1】+(arr【i】-‘0’));
}
--》返回新字符串
return new String(arr);
(2)反转字符串中的单词
思路:
先用一个函数去除首单词前的所有空格,尾单词后的所有空格,以及中间连续重复的空格
--》while(s.charat(start)!=‘ ’)start++
--》
while (start <= end) {
char c = s.charAt(start);
if (c != ' ' || sb.charAt(sb.length() - 1) != ' ') {
sb.append(c);
}
start++;
再反转整个字符串
用一个中间temp和2个指针
再反转每个单词
先将end移动到第一个空格,调用反转字符串函数反转第一个单词,在把start移动到end后,再把start移动到end后,循环
(3)反转链表
3个指针,pre、cur、temp
让temp指向cur的下一个,即temp = cur.next;
再让cur指向pre, cur.next = pre;
移动pre到cur,移动cur到temp pre = cur;cur = temp