导图社区 JAVA IDEA默认快捷键(windows)
程序就是实现逻辑的表达,JAVA语言介绍,JDK安装和配置,变量和数据类型和运算符,控制语句内容点总结。
编辑于2022-08-09 23:03:06 江苏省JAVA学习
规划
JAVA基础的学习
1.代码能力
2.面向对象分析能力
3.内存底层和源码分析习惯
4.调试和差错能力
招工作
一份漂亮的简历
好的简历四要素:--简历必须:一个字一个字自己写,不能抄! 01.基本情况介绍 姓名、性别、学历、专业、联系方式等 02.专业技能 有条例的罗列自己的专业技能 03.求职意向 准确的求职意向 04.工作经验和项目经验 详细的工作履历、项目经验 05.曾获奖励 罗列一些工作相关奖励、不相关引以为豪的奖励 06.自我批评 突出和工作相关的自我特质和优点
面试前三大步
01.了解该公司基本情况 -1.公司所在的行业是否有前景 -2.公司历史和结构 -3.公司产品和项目有那些 02.侧重于哪一块的技术,重点复习 研究用人单位的技术要求 03.研究该公司产品,提出问题 -1用户群体:学习编程的人(中小学生、大学) -2PC端功能研究 有那些模块: .1课程表 .2在线播放和学习 .3实操作业批改 .4问答互动 -3APP端功能研究 -4对比同类产品有那些 做一个真正努力的人
十大要点吸引面试官
面试官喜欢什么样的人? 01.秉性良好,谈吐正常的人 -1精心准备自我介绍(突出实践经验、而不是爱好) -2交谈大方,无小动作 -3衣着干净整洁 -4懂得感恩。不说公司、老师、老板、同事的坏话 02.工作态度端正、工作认真的人 -1是否一切以公司事务为重 -2加班问题 -3大大方方谈薪水(接受薪水不是越低越好) 03.热爱本职工作,有合理的职业规划 -1工作会不会给你带来快乐 -2至少规划3年职业规划,注意合理(不放大,也不缩小) 04.热爱学习,喜欢提升自己的人 -1参加和本质工作,相关的培训(利用业余时间,周末和晚上) -2最近对XXX新技术感兴趣,正在研究 *技术牛,完全可以升任工作
用心对待面试,面试官也能感受到
技术面试中,不该问的4个问题
技术面试不该问的4大问题,必须问的1个问题 01.我能拿多少工资? 02.五险一金有没有?交通补助有没有? 03.公司经常加班么? 04.你觉得我们今天能面上么? 面试即将结束,面试官问:您还有问题么?
表格思想
理解数据库存储数据
多表关系处理(表关联)
理解JAVA类和对象
类和对象
表结构对应:类 一行数据对应:对象
理解XML文档
XML文档
表结构对应:文档标签定义 一行数据对应:指定元素
基础能力培养
JAVA入门
1.了解JAVA历史
2.建立开发环境
3.熟悉Eclipse使用
4.完成第一个JAVA程序
编程能力的培养
1.数据类型和变量
2.控制语句
3.方法
面向对象基础
1.类和对象
2.内存分析和垃圾回收机制
3.this、static
4.package、import
面向对象进阶
1.三大特征(继承、封装、多态)
2.Object类
3.super和继承树追溯
4.抽象类
5.接口
6.设计模式入门(单例、工程、组合)
程序就是实现逻辑的表达
任何的程序本质有三个:
变量
if语句
循环语句
考勤逻辑
规则
处理办法(打卡人:当前打卡人,打卡时间:当前打卡时间) 1.上班时间是9:00,打卡时间晚于9点视为迟到 2.打卡时间迟到10分钟,则扣打卡人工资10元 3.打卡时间迟到11分钟到60分钟,则扣打卡人工资100元 4.打卡时间迟到1小时以上,罚做俯卧撑100个,直到做满100个才能坐工位上上班。 code: kaoqin(emp,time) { timeA = 9; } if(0<time-timeA<10){ emp.salary -= 10; } if(10<time-timeA<60){ emp.salary -= 100; } if(time-timeA>60){ while(Fuwocheng<100){ emp.doFuwocheng(); } emp.doJob(); } }
面向对象编程深化和JAVA基础2
异常机制
1.异常基本概念
2.异常处理机制
3.自定义异常
4.常见异常如何处理
类的深化
数组
1.数组的本质
2,数组的初始化和遍历
3.多维数组
4.算法(冒泡排序、排序优化、二分法)
常用类
1.包装类
2.字符串相关类
3.时间相关类
容器
1.泛型
2.容器本质
3.List
4.Set
5.Map
6.lterator迭代器
IO流
程序和外部系统的交互
1.流的基本操作
2.流的分类
3.相关工具(Apache IO)
多线程技术
1.多线程相关基本概念
2.创建线程类
3.线程的状态
4.线程通讯和协作
网络编程
1.TCP和IP基本概念
2.SOCKET通讯经典代码
3.socket通讯结合多线程
4.UDP通讯入门
飞机大战/坦克大战
1.通过游戏项目,深化基础
2.深入理解面向对象
开始学习
JAVA语言介绍
JAVA发展简史
JAVA的核心优势
跨平台是JAVA语言的核心优势,跨平台
JAVA各版本的介绍
JavaSE(Java Standard Edition):标准版,定位在个人计算机上的应用
JavaEE(Java Enterprise Edition):企业版,定位在服务器端的应用
JavaME(Java Micro Edition):微型版,定位在消费性电子产品的应用上
JAVA的特性和优势
特性
跨平台/可移植性
安全性
面向对象
简单性
高性能
分布式
多线程
健壮性
JDK安装和配置
JDK下载和安装
环境变量Path的配置
Path是一个常见的环境变量
classpath 配置问题
测试 JDK安装成功
openJDK 和 JDK收费问题
企业收费
个人免费
变量和数据类型和运算符
预备知识
二进制
注释
多行注释 /** abcd cccc */ 单行 //左斜杠后面的一行注释 代码中注释 /*sdfasdf*/
标识符
标识符 标识符是用来给变量、类、方法以及包进行命名的,如Welcome、main、System、age、name、gender、等。标识符需要遵守一定的规则: 标识符必须以字母、下划线_、美元符号$开头 标识符其他部分可以是字母、下划线“_”、美元符“$”和数字的任意组合。 java 标识符大小写敏感,且长度无限制。 标识符不可以是java的关键字 标识符的使用规范 表示类名的标识符:每个单词的首字母大写,如 Man,GoodMan 表示方法和变量的标识符:第一个单词小写,从第二个单词开始首字母大写,我们称之为“驼峰原则”,如eat(),eatFood()
关键字/保留字
变量
变量的本质
变量本质上就是代表一个“可操作的存储空间”,空间位置是确定的,但是里面防止什么值不确定。我们可通过变量名来访问“对应的存储空间”,从而操作这个“存储空间”存储信息 变量的声明 格式: type varName[=value][,varName[=value]...]; //[]中的内容为可选项,即可有可无 数据类型 变量名 [=初始值][,变量名 [=初始值]...]; 例如: double salary; long earthPopulation; int age;
变量的分类和作用域
从整体上可将变量划分为局部变量、成员变量(也称为实例变量)和静态变量 
局部变量(local variable)
成员变量(也叫实例变量 member variable)
实例变量的默认初始值 
静态变量(类变量)
使用stastic定义。从属于类,生命周期伴随类的始终,从类加载到卸载。如果不自行初始化,与成员变量相同会自动初始化成该类型的默认初始值
常量
常量通常☞不变的量
基本数据类型
数值型
整数类型
byte -- 1 个字节=8bit

short -- 2个字节

int (interger)-- 4个字节

默认常数
long --8个字节

整型
用于表示没有小数部分的数值,它允许是负数
JAVA语言的整数常数默认为”int“型
浮点类型
float --4个字节

单精度类型
double -- 8个字节

双精度类型
绝大部分应用程序采用double类型
浮点类型的数据不适合在不容许舍入误差的金融计算领域
BigDecimal
用于不产生舍入误差的精确数字计算
JAVA浮点类型常量有两种表示形式
十进制数形式,例如:3.14 314.0 0.314 科学计数法形式,例如:3.14E0 3.14E2 3.14E-1
浮点数
无限的
浮点数是不精确的,精良不要直接进行比较
字符型 - char
JAVA统一采用Unicode字符集(共占2个字节,65536个字符)
转义字符
转义符 \b 退格(backspace)\u0008 \n 换行 \u000a \r 回车 \u000d \t制表符(tab) \u0009 \"双引号 \u0022 \'单引号 \u0027 \\反斜杠 \u005c
布尔型 - boolean
在《JAVA虚拟机规范》一书中:”虽然定义了boolean这种数据类型,但是只对它提供了非常有限的支持。在JAVA虚拟机中没有任何提供boolean值专用的字节码指令,java语言表达式所操作的boolean值,在编译之后都使用java虚拟机中的int数据类型来代替,而boolean数组将会被编码成java虚拟机的byte数组,每个元素boolean元素占8位“ 也就是说JVM规范指出boolean当作int处理,也就是4字节,boolean数组当作byte数组处理,这样我们可以得出loolean类型占了单独使用是4个字节,在数组中是确定的1个字节。
常量值
true
真
false
假
Less is More!! 不能写成:if(flag = = true,很容易携程if(flag = true),这样就编程赋值flag为true而不是判断!!应该写成if( flag )或者if( !flag )
引用数据类型
注意事项 引用数据类型的大小同意为4个字节,记录的是其引用对象的地址!
类(class)
接口(interface)
数组
枚举
运算符(operator)
算数运算符
二元运算
加,减,乘,除,取余
整数运算:
如果两个操作数有一个位long,则结果也为long。
没有long时,结果为int。即使操作数全为short,byte,结果也是int。
浮点运算
如果两个操作数有一个为double,则结果为double
只有两个操作数都是float,则结果才为float。
取模运算
其操作数可以为浮点数,一般使用整数,结果是“余数”,“余数”符号和左边操作数相同,如:7%3=1,-7&3=-1,7%-3=1
一元运算
public class TestOperator{ public static void main(String[] args){ int a=30; int b=a++; System.out.println(b); //b=30,先把a赋值给b,后再自增 a=30; //重新赋值 int c = ++a; System.out.println(c);//c=31,先自增,后赋值给C a=40;//重新赋值 int d=a++; int e=++a; System.out.println(d);//d=40,先把a赋值给d,右边再自增“=”号右边等于41. System.out.println(e);//e=42,上一步为41,先自增,然后赋值给E } }
加加++
a++
先赋值,后自增
++a
先自增,后赋值
减减 --
a--
先赋值,后自减
--a
先自减,后赋值
赋值及其扩展赋值运算符
int a = 3; int b = 4; a += b; //等价于:a=a+b; System.out.println(a); a = 3; a*=b+3; //等价于 a=a*(b+3) a%=b; // a= 21%(4+3+3)=1 System.out.println(a);
关系运算符
用来进行比较运算的,关系运算的结果是布尔值:true/false
逻辑运算符
短路与和短路或采用短路的方式。从左到右计算,如果只通过运算符左边的操作数就能够确定该逻辑表达式的值,则不会继续计算运算符右边的操作数,提高效率。
位运算符
字符串连接符
“+”运算符两侧的操作数中只要有一个是字符串(String)类型,系统会自动将另一个操作数转换位字符串然后再进行链接
示例: int a =12; System.out.println("a+"+a); //输出结果:a=12 //条件是String,不是char.为char时,仍然时加号,不是连接符。 char c1 = "h"; char c2 = "i"; System.out.println(c1+c2); //等于209 System.out.println(""+c1+c2); //通过加 ""+,将整个运算转为字符串连接
条件运算符
语法格式: x ? y : z
其中 x 为 Boolean 类型表达式,先计算 x 的值,若为:true,则整个运算的结果为表达式 y 的值,否则整个运算结果为表达式 z 的值
通俗讲:x是boolean类型,只有true和flase,判断x是true,就输出y的值,是flase就输出z的值。和“if、else”语句作用一样
运算符优先级的问题
强调:逻辑与、逻辑或、逻辑非的优先级一定要熟悉!(逻辑非>逻辑与>逻辑或)
数据类型的转换
在八种数据类型中,除了boolean类型之外的七种类型是可以自动转化的。甚至,可以使用“强制类型转化”将数据类型编程我们所需要的。
自动类型转换
可以将整数常量直接赋值给byte、short、char等类型变量,而不需要进行强制类型转换,只要不超出其表数范围即可。 可以理解为,如果int类型的数值不超过byte、short、char类型表数的范围就能转换(char是unicode字符集表示)
强制类型转换
又称为造型(cast:筑造;模子),用于强制的转换一个数值的类型。在有可能丢失信息的情况下进行的转换是通过造型来完成的,但可能造成精度降低或溢出
语法格式:(type)var 运算符"()"中的type表示将值var想要转换成的目标数据类型
注意: 1.当将一种类型强制转换成另一种类型,而有超出了目标类型的表数范围,就会被截断成为一个完全不同的值,这个值是溢出部分除以当前转换类型取余(直到余数要在当前转换类型存储范围内) 2.不能在boolean类型和任何数值类型之间做强制类型转换
基本类型转化时常见错误和问题
在低整数数值类型运算结果超过当前存储数值的上限时会溢出,从而不能准确表述,解决方法是在运算时强制转化其中一个参与运算的值到更大存储类型中,例如:int类型最大表示21亿多,如果运算结果超过int表示范围,在参与运算的元素中强制转换到long类型,将得到一个long类型的运算结果
int money = 1000000000; int years = 20; int total1 = money * years; System.out.println("total1="+total1); //结果是负数,是因为两个int类型运算结果为int,该结果超过了int类型的最大表数造成的结果 //解决方法 /*方法一:*/long total2 = money *((long)years); //其中一元强制转换成long类型, /*方法二:*/long total3 = 1L*money*years; //用“1L”long类型的1带入到运算,得到long类型的结果 System.out.println("total2="+total2); System.out.println("total3="+total3);
在运算中,整数运算默认为int类型数值计算,在结果大于int的表数时,应该把其中一元转换成long类型
简单的键盘输入和输出
为了能写出更加复杂的程序,可以让我们的程序和用户可以通过键盘交互
Scanner(扫描仪,扫描器)java中表示获取键入信息
示例:
System.out.println(); 打印出()中的string类型的值
IDEA
下载IDEA
获取地址:https://www.jetbrains.com/idea/download/#section=windows
付费和试用
破解不鼓励,懂得都懂
入门和第一个项目
工具类
Notepad++
敲第一个小游戏
桌球
package com.byqnet; import java.awt.*; import javax.swing.*; public class BallGame extends JFrame { Image ball = Toolkit.getDefaultToolkit().getImage("images/White-ball.png"); //加载白球的图片 Image desk = Toolkit.getDefaultToolkit().getImage("images/Snooker.png"); //加载桌面图片 double x = 200; double y = 200; double degree = 3.14/3; //弧度。3.14=180° 60° degree:角度 /* *boolean right = true; */ //控制小球水平位移的方向 public void paint(Graphics g){ //Graphics:图样;绘制;绘图 System.out.println("窗口被画了一次!"); g.drawImage(desk,0,0,null); //draw 绘画 g.drawImage(ball,(int)x,(int)y,null); x = x + 10*Math.cos(degree); // Math 数学 cos 余弦 y = y + 10*Math.sin(degree); //sin 正弦 //碰到上下边界 if(y>774-60-50||y<60){ degree = - degree; } //碰到左右边界 if(x>1342-30-80||x<60){ degree = 3.14 - degree; } /* if(right){ x = x + 10; }else{ x = x - 10; } if(x>1342-30-80){ right = false; } if(x<60){ right = true; } */ //test小球水平位移参数 } //创建窗口 void launchFrame() { setSize(1342,774) ; setLocation(100,100); setVisible(true); //实现动画,每秒绘制窗口25次 while(true){ repaint(); try { Thread.sleep(40); //1s =1000ms;大约1秒绘制1000/40=25次 } catch (InterruptedException e) { e.printStackTrace(); } } } public static void main(String[] args){ System.out.println("我的小游戏开始了"); BallGame game = new BallGame(); game.launchFrame(); } }
快捷键
控制语句
控制语句分为三类
顺序
“顺序结构”代表“先执行a,再执行b,然后执行c,”的逻辑,一步一步的走路的逻辑
选择
“条件判断结构”代表“如果...,则...”的逻辑。
循环
“循环结构”代表“如果....,则重复执行...”的逻辑
实际上,任何软件和程序,小到一个练习,大到一个操作系统,本质商都是由“变量、选择语句、循环语句”组成。
条件判断结构
if 结构
if 单分支结构
if(布尔表达式){ 语句块; }//强烈建议任何时候都要加上{},这是习惯

if-else 双分支结构
if(布尔表达式){ 语句块1; }else{ 语句块2; }

if-else if-else 多分支结构
if(布尔表达式){ 语句块1; } else if(布尔表达式2){ 语句块2; }...... else if(布尔表达式 n ){ 语句块 n; } else{ 语句块 n+1; }

当布尔表达式1为true时,执行语句块1;否则,判断布尔表达式2,当布尔表达式2为true时,执行语句块2;否则,继续判断布尔表达式3.....;如果1~n个布尔表达式均判定为false,则执行语句块n+1,也就是else部分
switch 结构
多分支结构(多值情况)
switch(表达式){ case 值 1: 语句序列 1; [break]; case 值 2: 语句序列 2; [break]; ... ... ... ... [default: 默认语句;] }

switch 语句会根据表达式的值从相匹配的case标签处开始执行,一直执行到break语句处或者是switch语句的末尾。如果表达式的值与仁义case值不匹配,则进入defualt语句(如果存在 default 语句的情况)。
注意:switch语句中的case标签必须是整数(long类型除外)或者枚举,不能字符串,在JDK1.7之后允许使用字符串(string)
循环结构
当型
当布尔表达式条件为true时,反复执行某语句,当布尔表达式的值为false时才停止
循环结构(while)
while(布尔表达式){ 循环体; }

先判断后执行,执行条件为true,再循环执行
do-while
do{ 循环体; }while(布尔表达式);

do-while 循环结构会先执行循环体,然后判断布尔表达式的值,若条件为true,执行循环体,条件为假时结束循环。do-while 循环的循环体至少执行一次。
循环结构(for)
for(初始表达式;布尔表达式;迭代因子){ 循环体; }

是把while循环简化,执行顺序一样
for(初始化表达式1,初始化表达式2;布尔表达式;迭代因子1,迭代因子2){ 循环体; }
无论在初始化还hi在步进部分,语句都是顺序执行的
尽管初始化部分可设置任意数量的定义,但都属于同一类型
约定:只在for语句的控制表达式中写入与循环变量初始化,条件判断和迭代因子相关的表达式
初始化部分、条件判断部分和迭代因子可以为空语句,但必须以“;”分开
直到型
先执行某语句,再判断布尔表达式,如果为true,再执行某语句,如此反复,直到布尔表达式条件为false时才停止循环,比如do-while循环
嵌套循环
在一个循环语句内部再嵌套一个或多个循环,称为嵌套循环。while、do-while与for循环可以任意嵌套多层
break语句和continue语句
break
在任何循环语句的主体部分,均可用break控制循环的流程。强行推出循环,不执行循环中剩余的语句
continue
语句用在循环语句体中,用于种植某次循环过程,即跳过循环中尚未执行的语句,接着进行下一次是否执行循环的判定。
注意事项: continue用在while,do-while中,continue 语句立刻跳到循环首部,越过了当前循环的其余部分。 continue用在for循环中,跳到for训话你的迭代因子部分。
带标签的break语句和continue语句
java没有goto语句。但是保留goto语句
方法
递归结构
规划
JAVA基础的学习
1.代码能力
2.面向对象分析能力
3.内存底层和源码分析习惯
4.调试和差错能力
招工作
一份漂亮的简历
好的简历四要素:--简历必须:一个字一个字自己写,不能抄! 01.基本情况介绍 姓名、性别、学历、专业、联系方式等 02.专业技能 有条例的罗列自己的专业技能 03.求职意向 准确的求职意向 04.工作经验和项目经验 详细的工作履历、项目经验 05.曾获奖励 罗列一些工作相关奖励、不相关引以为豪的奖励 06.自我批评 突出和工作相关的自我特质和优点
面试前三大步
01.了解该公司基本情况 -1.公司所在的行业是否有前景 -2.公司历史和结构 -3.公司产品和项目有那些 02.侧重于哪一块的技术,重点复习 研究用人单位的技术要求 03.研究该公司产品,提出问题 -1用户群体:学习编程的人(中小学生、大学) -2PC端功能研究 有那些模块: .1课程表 .2在线播放和学习 .3实操作业批改 .4问答互动 -3APP端功能研究 -4对比同类产品有那些 做一个真正努力的人
十大要点吸引面试官
面试官喜欢什么样的人? 01.秉性良好,谈吐正常的人 -1精心准备自我介绍(突出实践经验、而不是爱好) -2交谈大方,无小动作 -3衣着干净整洁 -4懂得感恩。不说公司、老师、老板、同事的坏话 02.工作态度端正、工作认真的人 -1是否一切以公司事务为重 -2加班问题 -3大大方方谈薪水(接受薪水不是越低越好) 03.热爱本职工作,有合理的职业规划 -1工作会不会给你带来快乐 -2至少规划3年职业规划,注意合理(不放大,也不缩小) 04.热爱学习,喜欢提升自己的人 -1参加和本质工作,相关的培训(利用业余时间,周末和晚上) -2最近对XXX新技术感兴趣,正在研究 *技术牛,完全可以升任工作
用心对待面试,面试官也能感受到
技术面试中,不该问的4个问题
技术面试不该问的4大问题,必须问的1个问题 01.我能拿多少工资? 02.五险一金有没有?交通补助有没有? 03.公司经常加班么? 04.你觉得我们今天能面上么? 面试即将结束,面试官问:您还有问题么?
表格思想
理解数据库存储数据
多表关系处理(表关联)
理解JAVA类和对象
类和对象
表结构对应:类 一行数据对应:对象
理解XML文档
XML文档
表结构对应:文档标签定义 一行数据对应:指定元素
基础能力培养
JAVA入门
1.了解JAVA历史
2.建立开发环境
3.熟悉Eclipse使用
4.完成第一个JAVA程序
编程能力的培养
1.数据类型和变量
2.控制语句
3.方法
面向对象基础
1.类和对象
2.内存分析和垃圾回收机制
3.this、static
4.package、import
面向对象进阶
1.三大特征(继承、封装、多态)
2.Object类
3.super和继承树追溯
4.抽象类
5.接口
6.设计模式入门(单例、工程、组合)
程序就是实现逻辑的表达
任何的程序本质有三个:
变量
if语句
循环语句
考勤逻辑
规则
处理办法(打卡人:当前打卡人,打卡时间:当前打卡时间) 1.上班时间是9:00,打卡时间晚于9点视为迟到 2.打卡时间迟到10分钟,则扣打卡人工资10元 3.打卡时间迟到11分钟到60分钟,则扣打卡人工资100元 4.打卡时间迟到1小时以上,罚做俯卧撑100个,直到做满100个才能坐工位上上班。 code: kaoqin(emp,time) { timeA = 9; } if(0<time-timeA<10){ emp.salary -= 10; } if(10<time-timeA<60){ emp.salary -= 100; } if(time-timeA>60){ while(Fuwocheng<100){ emp.doFuwocheng(); } emp.doJob(); } }
面向对象编程深化和JAVA基础2
异常机制
1.异常基本概念
2.异常处理机制
3.自定义异常
4.常见异常如何处理
类的深化
数组
1.数组的本质
2,数组的初始化和遍历
3.多维数组
4.算法(冒泡排序、排序优化、二分法)
常用类
1.包装类
2.字符串相关类
3.时间相关类
容器
1.泛型
2.容器本质
3.List
4.Set
5.Map
6.lterator迭代器
IO流
程序和外部系统的交互
1.流的基本操作
2.流的分类
3.相关工具(Apache IO)
多线程技术
1.多线程相关基本概念
2.创建线程类
3.线程的状态
4.线程通讯和协作
网络编程
1.TCP和IP基本概念
2.SOCKET通讯经典代码
3.socket通讯结合多线程
4.UDP通讯入门
飞机大战/坦克大战
1.通过游戏项目,深化基础
2.深入理解面向对象
浮动主题
开始学习
JAVA语言介绍
JAVA发展简史
JAVA的核心优势
跨平台是JAVA语言的核心优势,跨平台
JAVA各版本的介绍
JavaSE(Java Standard Edition):标准版,定位在个人计算机上的应用
JavaEE(Java Enterprise Edition):企业版,定位在服务器端的应用
JavaME(Java Micro Edition):微型版,定位在消费性电子产品的应用上
子主题
JAVA的特性和优势
特性
跨平台/可移植性
安全性
面向对象
简单性
高性能
分布式
多线程
健壮性
JDK安装和配置
JDK下载和安装
环境变量Path的配置
Path是一个常见的环境变量
classpath 配置问题
测试 JDK安装成功
openJDK 和 JDK收费问题
企业收费
个人免费
入门和第一个项目
预备知识
二进制
注释
多行注释 /** abcd cccc */ 单行 //左斜杠后面的一行注释 代码中注释 /*sdfasdf*/
标识符
标识符 标识符是用来给变量、类、方法以及包进行命名的,如Welcome、main、System、age、name、gender、等。标识符需要遵守一定的规则: 标识符必须以字母、下划线_、美元符号$开头 标识符其他部分可以是字母、下划线“_”、美元符“$”和数字的任意组合。 java 标识符大小写敏感,且长度无限制。 标识符不可以是java的关键字 标识符的使用规范 表示类名的标识符:每个单词的首字母大写,如 Man,GoodMan 表示方法和变量的标识符:第一个单词小写,从第二个单词开始首字母大写,我们称之为“驼峰原则”,如eat(),eatFood()
变量和数据类型和运算符
变量的本质
变量本质上就是代表一个“可操作的存储空间”,空间位置是确定的,但是里面防止什么值不确定。我们可通过变量名来访问“对应的存储空间”,从而操作这个“存储空间”存储信息 变量的声明 格式: type varName[=value][,varName[=value]...]; //[]中的内容为可选项,即可有可无 数据类型 变量名 [=初始值][,变量名 [=初始值]...]; 例如: double salary; long earthPopulation; int age;
变量的分类和作用域
从整体上可将变量划分为局部变量、成员变量(也称为实例变量)和静态变量 
局部变量(local variable)
成员变量(也叫实例变量 member variable)
实例变量的默认初始值 
静态变量(类变量)
使用stastic定义。从属于类,生命周期伴随类的始终,从类加载到卸载。如果不自行初始化,与成员变量相同会自动初始化成该类型的默认初始值
常量
常量通常☞不变的量
基本数据类型(primitive data type)
基本的数据类型
数据类型
基本数据类型
数值型
整数类型
byte -- 1 个字节=8bit

short -- 2个字节

int (interger)-- 4个字节

默认常数
long --8个字节

浮点类型
float --4个字节

单精度类型
double -- 8个字节

双精度类型
绝大部分应用程序采用double类型
浮点类型的数据不适合在不容许舍入误差的金融计算领域
BigDecimal
用于不产生舍入误差的精确数字计算
JAVA浮点类型常量有两种表示形式
十进制数形式,例如:3.14 314.0 0.314 科学计数法形式,例如:3.14E0 3.14E2 3.14E-1
字符型 - char
JAVA统一采用Unicode字符集(共占2个字节,65536个字符)
转义字符
转义符 \b 退格(backspace)\u0008 \n 换行 \u000a \r 回车 \u000d \t制表符(tab) \u0009 \"双引号 \u0022 \'单引号 \u0027 \\反斜杠 \u005c
布尔型 - boolean
在《JAVA虚拟机规范》一书中:”虽然定义了boolean这种数据类型,但是只对它提供了非常有限的支持。在JAVA虚拟机中没有任何提供boolean值专用的字节码指令,java语言表达式所操作的boolean值,在编译之后都使用java虚拟机中的int数据类型来代替,而boolean数组将会被编码成java虚拟机的byte数组,每个元素boolean元素占8位“ 也就是说JVM规范指出boolean当作int处理,也就是4字节,boolean数组当作byte数组处理,这样我们可以得出loolean类型占了单独使用是4个字节,在数组中是确定的1个字节。
常量值
true
真
false
假
Less is More!! 不能写成:if(flag = = true,很容易携程if(flag = true),这样就编程赋值flag为true而不是判断!!应该写成if( flag )或者if( !flag )
引用数据类型
注意事项 引用数据类型的大小同意为4个字节,记录的是其引用对象的地址!
类(class)
接口(interface)
数组
整型
用于表示没有小数部分的数值,它允许是负数
JAVA语言的整数常数默认为”int“型
浮点数
无限的
浮点数是不精确的,精良不要直接进行比较
JAVA基础核心总结
JAVA概述
什么是JAVA
JAVA的特点
JAVA开发环境
JDK
JRE
JAVA开发环境配置
JAVA基本语法
数据类型
基础语法
运算符
JAVA执行控制流程
条件语句
if 条件语句
if...else 条件语句
if...else if条件语句
switch 多分支语句
循环语句
While 循环语句
do..while 循环语句
for 循环语句
跳转语句
break 语句
continue 语句
面向对象
类也是对象
对象的创建
属性和方法
构造方法
方法重载
方法重写
初始化
类的初始化
成员初始化
构造器初始化
初始化顺序
数组初始化
对象的销毁
对象作用域
this 和 super
访问控制权限
面向对象三大原则
继承
封装
多态
组合
代理
向上转型和向下转型
static 关键字
final 关键字
接口和抽象类
接口
抽象类
异常
认识 Exception
Throwable
常见的 Excption
异常关键字
throws 和 throw
try、finally、catch
Error
内部类
内部类的创建
创建内部类的几种方式
集合
iterable 接口
顶层接口
Vector
LinkedList
Stack
TreeSet
LinkedHashSet
PriorityQueue
HashMap
TreeMap
LinkedHashMap
HashTable
IdentityHashMap
WeakHashMap
Collections
集合实现类特征图
泛型
泛型的使用
用泛型表示类
用泛型表示接口
泛型方法
泛型通配符
反射
Class 类
Method 类
Field 类
Constructor 类
ClassLoader 类
枚举
枚举特性
枚举就是一种普通类
枚举的神秘之处
枚举类
I/O
File类
基础I/O类和相关方法
InputStream 类
OutputStream 类
Reader 类
Writer 类
InputStream 及其子类
OutputStream 及其子类
Reader 及其子类
Writer 及其子类
注释
关于Null的几种处理方式
1、大小写敏感
2、null是任何引用类型的初始值
3、null既不是对象也不是类型,它是一种特殊的值,你可以将它赋值给任何引用类型
4、null 不能赋值给基本数据类型
5、将null赋给包装类,自动拆箱会报NPE
6、带有null的引用类型变量,instanceof 会报 false
7、静态变量为null调用静态方法不会抛出NPE
8、使用null值安全的方法
9、使用 == 或 != 判断null
Java后端开发学习路线
编程基础
JAVA语言
语言基础
基础语法
面向对象
接口
容器
异常
泛型
反射
注释
I/O
图形化(如Swing)
JVM
类加载机制
自己吗执行机制
JVM内存模型
GC垃圾回收
JVM性能监控与故障定位
JVM调优
并发/多线程
并发编程基础
线程池
锁
并发容器
原子类
JUC并发工具类
数据结构和算法
数据结构
字符串
数组
链表
二叉树
堆、栈、队列
哈希
算法
查找
排序
贪心
分治
动态规划
回溯
计算机网络
ARP协议
IP/ICMP协议
TCP/UDP协议
DNS/HTTP/HTTPS协议
Session/Cookie
数据库/SQL
SQL语句书写
SQL语句优化
事务以及隔离级别
索引
锁
操作系统
进程/线程
并发/锁
内存管理和调度
I/O原理
设计模式
单例
工厂
代理
策略
模板方法
观察者
适配器
责任链
建造者
研发工具
集成开发环境
Eclipse
intellij IDEA
VS Code
Linux系统
Linux常用命令
基本Shell脚本
代码管理工具
Git
SVN
项目管理/构建工具
Maven
Gradle
应用框架
后端
Spring家族
Spring
IoC
AOP
Spring MVC
Spring Boot
自动配置、开箱即用
整合Web
整和数据库(事务问题)
整合权限
Shiro
Spring Security
整合各种中间件:缓存、MQ、RPC框架、NIO框架等
服务器软件
Web服务器
Nginx
应用服务器
Tomacat
Jetty
Undertow
中间件
缓存
Redis
5大数据类型
事务
消息通知
管道
持久化
集群
memcache
消息队列
RocketMQ
RabbitMQ
Kafka
RPC框架
Dubbo
gRPC
Thrift
Spring Cloud
Netty
数据库
ORM层框架
MyBatis
Hibernate
JPA
连接池
Druid
HikariCP
C3P0
分库分表
MyCat
Sharding-JDBC
Sharding-Sphere
搜索引擎
ElasticSearch
Solr
分布式/微服务
服务发现/注册
Eureka
Consul
Zookeeper
Nacos
网关
Zuul
Gateway
服务调用(负载均衡)
Ribbon
Feign
熔断/降级
Hystrix
配置中心
Config
Apollo
Nacos
认证和鉴权
Shiro
Spring Security
OAuth2
SSO
分布式事务
JTA接口
Atomikos 组件
2PC、3PC
XA模式
TCC模式
tcc-transaction
Byte TCC
EasyTransaction
Seata
SAGA模式
ServiceComb
Seata
LCN模式
tx-lcn
任务调度
Quartz
Elastic-Job
链路追踪与监控
Zipkin
Sleuth
Skywalking
日志分析与监控
ELK
ElasticSearch
Logstash
Kibana
虚拟化/容器化
容器技术
Docker
容器编排技术
Kubernetes
Swarm
前端
基础套餐
三大件
HTML
JavaScript
CSS
基础库
jQuery
Ajax
模板框架
JSP/JSTL
Thymeleaf
FreeMarker
组件化框架
Node
Vue
React
Angular
运维知识
Web服务器
Nginx
应用服务器
Tomcat/Jetty/Undertow
CDN加速
持续集成/持续发布
Jenkins
代码质量检查
sonar
日志收集/分析
ELK
成神之路
徒手撕源码
光脚造轮子
闭眼深度调优
吊打面试官
平稳降落
调节心态、注意健康,飞的多高不重要,重要是如何平稳降落
前端开发学习路线
通用编程基础
编程语言
数据结构和算法
数据结构
字符串
数组
链表
堆
栈
队列
树
哈希
图
算法
基本算法
查找
排序
算法思想
枚举
递归
贪心
分支
动态规划
回溯
网络协议
网络分层和TCP/IP协议栈
ARP/RARP协议
IP/ICMP协议
TCP/UDP协议
DNS/HTTP/HTTPS协议
设计模式
单例
工厂
代理
策略
模板方法
观察者
适配器
责任链
装饰器
......
基本开发工具
IDE/编辑器
WebStorm
VSCode
Sublime
......
版本控制工具
SVN
Git
浏览器
Chrome
Firefox
Safari
......
祖传三件套
HTML
基础组成和语法规则
常用标签
标题
段落
链接
列表
图片
表格
表单
区块
布局
框架
......
常用属性
id
class
style
title
......
HTML5
新绘画元素 canvas
新多媒体元素 audio/video等等
新表单元素和属性 datalist/keygen/output等等
新语义/结构元素 header/footer/article/aside/nav等等
内联SVG
Web存储 localStorage/sessionStorage等
WebSocket
......
CSS
语法规则/引入规则
常见属性和设置
各种选择器
标签选择器
属性选择器
id选择器
class选择器
组合/复合选择器
.....
盒模型
content
padding
border
margin
定位
static
relative
fixed
absolute
sticky
布局
float
flex
grid
CSS3新特性
边框
北京
渐变
文本和字体
2D/3D转换
过度
动画
.....
javaScript
最基础
关键字
数据类型
变量
作用域
操作符
语句
条件
循环
.....
函数
函数声明
函数表达式
Function()构造器
匿名函数
箭头函数
函数参数
函数调用
call()方法/apply()方法
闭包
对象
基础概念
属性
方法
对象创建
构造器模式
原型模式
其他组合或演进模式
继承
原型链继承
构造继承
组合继承
寄生继承
寄生组合继承
常用引用类型
Object
Boolean
Number
String
Math
Array
Date
RegExp
BOM
window对象
screen对象
location对象
navigator对象
history对象
弹框
计时
Cookie
DOM
节点层次、类型、属性
DOM操作
CRUD
动态脚本
动态样式
......
事件
事件流
事件对象
冒泡/捕获
时间委托
各种具体事件类型
UI
鼠标/滚轮
焦点
键盘/文本
....等等
网络请求
Ajax
Fetch
ES6+ (6、7、8)
块级绑定
各种扩展:字符串、数值、函数、数组、对象、正则表达式......等等扩展
结构
Symbol
Class
Set/Map
Promise、async/await等异步编程
iterator/Generator
Proxy/Reflect
Module/模块
封装库/工具库
数据可视化
Highcharts
Echarts
AntV
D3.js
UI框架
Bootstrap
Semantic UI
Foundation
Layui
编辑器
TinyMCE
UEditor
CKEditor
Draft.js
Slate.js
.......
组件库
Element
iView
antd
Material UI
......
动画
Animate.css
Anime.js
mo.js
......
mock数据
mock.js
......
实用工具库
UnderScore
Lodash
日期处理库
Moment.js
字体/图标
Font Awesome
Iconfont
......其它
前端工程化
Node.js
代码的组织/部署
模块 module
包 package
包管理器 npm
文件操作
如:fs包
网络操作
如:http包
异步编程
进程管理
组件化开发框架
Vue
最基础
模板语法
条件/循环
计算属性
监听属性
样式绑定
时间处理
.....
组件
注册
Prop
事件
插槽
动态和异步
路由
vue-router
状态管理
Vuex
HTTP请求
axios
服务端渲染
Nuxt.js
React
组件
路由
状态管理
请求
Angular
构建工具
Grunt
Gulp
......
打包工具
webpack
Rollup
Snowpack
......
CSS预处理工具
Sass
Less
PostCSS
Stylus
......
校验/格式化/规范化
TypeScript
ESlint
Prettier
......
测试框架
Jest
Mocha
前端性能
性能指标
首次绘制(FP)
首次内容绘制(FCP)
首次有效绘制(FMP)
主要元素时间点(HET)
可交互时间(TTI)
性能测试/监控工具
WebPage Test
Lighthouse
Performance工具
......
性能优化方案
网络层面的优化
请求优化
资源优化
压缩
缓存
......
渲染层面的优化
CSS/JS优化
DOM优化
懒加载
.....
........
多端/跨端/融合
移动端/小程序
React Native
Weex
Taro
uni-app
Chameleon
Flutter
.......
桌面应用
Electron
NW.js
.....
前端的未来在哪里?
Web Components?
PWA?
Web Assembly?
.......
IDEA默认快捷键 (windows system)
CTRL
Ctrl + F 在当前文件进行文本查找 (必备)
Ctrl + R 在当前文件进行文本替换 (必备)
Ctrl + Z 撤销 (必备)
Ctrl + Y 删除光标所在行 或 删除选中的行 (必备)
Ctrl + X 剪切光标所在行 或 剪切选择内容
Ctrl + C 复制光标所在行 或 复制选择内容
Ctrl + D 复制光标所在行 或 复制选择内容,并把复制内容插入光标位置下面 (必备)
Ctrl + W 递进式选择代码块。可选中光标所在的单词或段落,连续按会在原有选中的基础上再扩展选中范围 (必备)
Ctrl + E 显示最近打开的文件记录列表
Ctrl + N 根据输入的 类名 查找类文件
Ctrl + G 在当前文件跳转到指定行处
Ctrl + J 插入自定义动态代码模板
Ctrl + P 方法参数提示显示
Ctrl + Q 光标所在的变量 / 类名 / 方法名等上面(也可以在提示补充的时候按),显示文档内容
Ctrl + U 前往当前光标所在的方法的父类的方法 / 接口定义
Ctrl + B 进入光标所在的方法/变量的接口或是定义出,等效于 Ctrl + 左键单击
Ctrl + K 版本控制提交项目,需要此项目有加入到版本控制才可用
Ctrl + T 版本控制更新项目,需要此项目有加入到版本控制才可用
Ctrl + H 显示当前类的层次结构
Ctrl + O 选择可重写的方法
Ctrl + I 选择可继承的方法
Ctrl + + 展开代码
Ctrl + - 折叠代码
Ctrl + / 注释光标所在行代码,会根据当前不同文件类型使用不同的注释符号 (必备)
Ctrl + [ 移动光标到当前所在代码的花括号开始位置
Ctrl + ] 移动光标到当前所在代码的花括号结束位置
Ctrl + F1 在光标所在的错误代码出显示错误信息
Ctrl + F3 调转到所选中的词的下一个引用位置
Ctrl + F4 关闭当前编辑文件
Ctrl + F8 在 Debug 模式下,设置光标当前行为断点,如果当前已经是断点则去掉断点
Ctrl + F9 执行 Make Project 操作
Ctrl + F11 选中文件 / 文件夹,使用助记符设定 / 取消书签
Ctrl + F12 弹出当前文件结构层,可以在弹出的层上直接输入,进行筛选
Ctrl + Tab 编辑窗口切换,如果在切换的过程又加按上delete,则是关闭对应选中的窗口
Ctrl + Enter 智能分隔行
Ctrl + End 跳到文件尾
Ctrl + Home 跳到文件头
Ctrl + Space 基础代码补全,默认在 Windows 系统上被输入法占用,需要进行修改,建议修改为 Ctrl + 逗号 (必备)
Ctrl + Delete 删除光标后面的单词或是中文句
Ctrl + BackSpace 删除光标前面的单词或是中文句
Ctrl + 1,2,3...9 定位到对应数值的书签位置
Ctrl + 左键单击 在打开的文件标题上,弹出该文件路径
Ctrl + 光标定位 按 Ctrl 不要松开,会显示光标所在的类信息摘要
Ctrl + 左方向键 光标跳转到当前单词 / 中文句的左侧开头位置
Ctrl + 右方向键 光标跳转到当前单词 / 中文句的右侧开头位置
Ctrl + 前方向键 等效于鼠标滚轮向前效果
Ctrl + 后方向键 等效于鼠标滚轮向后效果
Alt
Alt + ` 显示版本控制常用操作菜单弹出层
Alt + Q 弹出一个提示,显示当前类的声明 / 上下文信息
Alt + F1 显示当前文件选择目标弹出层,弹出层中有很多目标可以进行选择
Alt + F2 对于前面页面,显示各类浏览器打开目标选择弹出层
Alt + F3 选中文本,逐个往下查找相同文本,并高亮显示
Alt + F7 查找光标所在的方法 / 变量 / 类被调用的地方
Alt + F8 在 Debug 的状态下,选中对象,弹出可输入计算表达式调试框,查看该输入内容的调试结果
Alt + Home 定位 / 显示到当前文件的 Navigation Bar
Alt + Enter IntelliJ IDEA 根据光标所在问题,提供快速修复选择,光标放在的位置不同提示的结果也不同 (必备)
Alt + Insert 代码自动生成,如生成对象的 set / get 方法,构造函数,toString() 等
Alt + 左方向键 按左方向切换当前已打开的文件视图
Alt + 右方向键 按右方向切换当前已打开的文件视图
Alt + 前方向键 当前光标跳转到当前文件的前一个方法名位置
Alt + 后方向键 当前光标跳转到当前文件的后一个方法名位置
Alt + 1,2,3...9 显示对应数值的选项卡,其中 1 是 Project 用得最多
Shift
Shift + F1 如果有外部文档可以连接外部文档
Shift + F2 跳转到上一个高亮错误 或 警告位置
Shift + F3 在查找模式下,查找匹配上一个
Shift + F4 对当前打开的文件,使用新Windows窗口打开,旧窗口保留
Shift + F6 对文件 / 文件夹 重命名
Shift + F7 在 Debug 模式下,智能步入。断点所在行上有多个方法调用,会弹出进入哪个方法
Shift + F8 在 Debug 模式下,跳出,表现出来的效果跟 F9 一样
Shift + F9 等效于点击工具栏的 Debug 按钮
Shift + F10 等效于点击工具栏的 Run 按钮
Shift + F11 弹出书签显示层
Shift + Tab 取消缩进
Shift + ESC 隐藏当前 或 最后一个激活的工具窗口
Shift + End 选中光标到当前行尾位置
Shift + Home 选中光标到当前行头位置
Shift + Enter 开始新一行。光标所在行下空出一行,光标定位到新行位置
Shift + 左键单击 在打开的文件名上按此快捷键,可以关闭当前打开文件
Shift + 滚轮前后滚动 当前文件的横向滚动轴滚动
Ctrl+Alt
Ctrl + Alt + L 格式化代码,可以对当前文件和整个包目录使用 (必备)
Ctrl + Alt + O 优化导入的类,可以对当前文件和整个包目录使用 (必备)
Ctrl + Alt + I 光标所在行 或 选中部分进行自动代码缩进,有点类似格式化
Ctrl + Alt + T 对选中的代码弹出环绕选项弹出层
Ctrl + Alt + J 弹出模板选择窗口,讲选定的代码加入动态模板中
Ctrl + Alt + H 调用层次
Ctrl + Alt + B 在某个调用的方法名上使用会跳到具体的实现处,可以跳过接口
Ctrl + Alt + V 快速引进变量
Ctrl + Alt + Y 同步、刷新
Ctrl + Alt + S 打开 IntelliJ IDEA 系统设置
Ctrl + Alt + F7 显示使用的地方。寻找被该类或是变量被调用的地方,用弹出框的方式找出来
Ctrl + Alt + F11 切换全屏模式
Ctrl + Alt + Enter 光标所在行上空出一行,光标定位到新行
Ctrl + Alt + Home 弹出跟当前文件有关联的文件弹出层
Ctrl + Alt + Space 类名自动完成
Ctrl + Alt + 左方向键 退回到上一个操作的地方 (必备)(注意与其他软件快捷键冲突)
Ctrl + Alt + 右方向键 前进到上一个操作的地方 (必备)(注意与其他软件快捷键冲突)
Ctrl + Alt + 前方向键 在查找模式下,跳到上个查找的文件
Ctrl + Alt + 后方向键 在查找模式下,跳到下个查找的文件
Ctrl+Shift
Ctrl + Shift + F 根据输入内容查找整个项目 或 指定目录内文件 (必备)
Ctrl + Shift + R 根据输入内容替换对应内容,范围为整个项目 或 指定目录内文件 (必备)
Ctrl + Shift + J 自动将下一行合并到当前行末尾 (必备)
Ctrl + Shift + Z 取消撤销 (必备)
Ctrl + Shift + W 递进式取消选择代码块。可选中光标所在的单词或段落,连续按会在原有选中的基础上再扩展取消选中范围 (必备)
Ctrl + Shift + N 通过文件名定位 / 打开文件 / 目录,打开目录需要在输入的内容后面多加一个正斜杠 (必备)
Ctrl + Shift + U 对选中的代码进行大 / 小写轮流转换 (必备)
Ctrl + Shift + T 对当前类生成单元测试类,如果已经存在的单元测试类则可以进行选择
Ctrl + Shift + C 复制当前文件磁盘路径到剪贴板
Ctrl + Shift + V 弹出缓存的最近拷贝的内容管理器弹出层
Ctrl + Shift + E 显示最近修改的文件列表的弹出层
Ctrl + Shift + H 显示方法层次结构
Ctrl + Shift + B 跳转到类型声明处
Ctrl + Shift + I 快速查看光标所在的方法 或 类的定义
Ctrl + Shift + A 查找动作 / 设置
Ctrl + Shift + / 代码块注释 (必备)
Ctrl + Shift + [ 选中从光标所在位置到它的顶部中括号位置
Ctrl + Shift + ] 选中从光标所在位置到它的底部中括号位置
Ctrl + Shift + + 展开所有代码
Ctrl + Shift + - 折叠所有代码
Ctrl + Shift + F7 高亮显示所有该选中文本,按Esc高亮消失
Ctrl + Shift + F8 在 Debug 模式下,指定断点进入条件
Ctrl + Shift + F9 编译选中的文件 / 包 / Module
Ctrl + Shift + F12 编辑器最大化
Ctrl + Shift + Space 智能代码提示
Ctrl + Shift + Enter 自动结束代码,行末自动添加分号 (必备)
Ctrl + Shift + Backspace 退回到上次修改的地方
Ctrl + Shift + 1,2,3...9 快速添加指定数值的书签
Ctrl + Shift + 左方向键 在代码文件上,光标跳转到当前单词 / 中文句的左侧开头位置,同时选中该单词 / 中文句
Ctrl + Shift + 右方向键 在代码文件上,光标跳转到当前单词 / 中文句的右侧开头位置,同时选中该单词 / 中文句
Ctrl + Shift + 左方向键 在光标焦点是在工具选项卡上,缩小选项卡区域
Ctrl + Shift + 右方向键 在光标焦点是在工具选项卡上,扩大选项卡区域
Ctrl + Shift + 前方向键 光标放在方法名上,将方法移动到上一个方法前面,调整方法排序
Ctrl + Shift + 后方向键 光标放在方法名上,将方法移动到下一个方法前面,调整方法排序
Alt+Shift
Alt + Shift + N 选择 / 添加 task
Alt + Shift + F 显示添加到收藏夹弹出层
Alt + Shift + C 查看最近操作项目的变化情况列表
Alt + Shift + F 添加到收藏夹
Alt + Shift + I 查看项目当前文件
Alt + Shift + F7 在 Debug 模式下,下一步,进入当前方法体内,如果方法体还有方法,则会进入该内嵌的方法中,依此循环进入
Alt + Shift + F9 弹出 Debug 的可选择菜单
Alt + Shift + F10 弹出 Run 的可选择菜单
Alt + Shift + 左键双击 选择被双击的单词 / 中文句,按住不放,可以同时选择其他单词 / 中文句
Alt + Shift + 前方向键 移动光标所在行向上移动
Alt + Shift + 后方向键 移动光标所在行向下移动
Ctrl+Shift+Alt
Ctrl + Shift + Alt + V 无格式黏贴
Ctrl + Shift + Alt + N 前往指定的变量 / 方法
Ctrl + Shift + Alt + S 打开当前项目设置
Ctrl + Shift + Alt + C 复制参考信息
其他
F2 跳转到下一个高亮错误 或 警告位置 (必备)
F3 在查找模式下,定位到下一个匹配处
F4 编辑源
F7 在 Debug 模式下,进入下一步,如果当前行断点是一个方法,则进入当前方法体内,如果该方法体还有方法,则不会进入该内嵌的方法中
F8 在 Debug 模式下,进入下一步,如果当前行断点是一个方法,则不进入当前方法体内
F9 在 Debug 模式下,恢复程序运行,但是如果该断点下面代码还有断点则停在下一个断点上
F11 添加书签
F12 回到前一个工具窗口
Tab 缩进
ESC 从工具窗口进入代码文件窗口
连按两次Shift 弹出 Search Everywhere 弹出层